Closed antrix1989 closed 1 week ago
Cloned PR for sedemche/wrap_calling_app_bundle_id
New feature
This pull request introduces methods to retrieve and display information about the calling application in the broker operation requests.
MSIDBrokerOperationBrowserNativeMessageRequest.m
: Added methods to get caller bundle identifier, team identifier, localized display name, and application info.MSIDBrowserNativeMessageGetTokenRequest.m
: Implemented localizedApplicationInfo
method to return client ID and redirect URI or display name.MSIDBaseBrokerOperationRequest.h
: Added properties for caller bundle identifier, team identifier, localized display name, and application info.MSIDBrokerOperationBrowserNativeMessageRequest.h
: Added properties for parent process bundle identifier, team ID, and localized name.changelog.txt
: Updated to include new feature for wrapping ASAuthorizationProviderExtensionAuthorizationRequest
methods."### Step-by-Step Plan
Review the Class Definition:
Identify Potential Issues:
Suggest Refactoring:
Logical and Syntactical Review:
@protected
for _correlationId
is appropriate if subclasses need access.readonly
attribute for callerBundleIdentifier
and other properties is correct since they are likely set internally and not meant to be modified externally.Potential Issues:
correlationId
property is declared twice: once as an instance variable and once as a property. This is not necessary and can be simplified.operation
property is declared as class
and readonly
, which is correct if it is meant to be a class-level constant.Refactoring Suggestions:
_correlationId
.#import
NS_ASSUME_NONNULL_BEGIN
@interface MSIDBaseBrokerOperationRequest : NSObject
@property (nonatomic, class, readonly) NSString *operation;
@property (nonatomic, strong) NSUUID *correlationId;
@property (nonatomic, readonly) NSString *callerBundleIdentifier;
@property (nonatomic, readonly) NSString *callerTeamIdentifier API_AVAILABLE(ios(14.0), macos(11.0)) API_UNAVAILABLE(watchos, tvos);
@property (nonatomic, readonly) NSString *localizedCallerDisplayName API_AVAILABLE(ios(14.0), macos(11.0)) API_UNAVAILABLE(watchos, tvos);
@property (nonatomic, readonly) NSString *localizedApplicationInfo API_AVAILABLE(ios(14.0), macos(11.0)) API_UNAVAILABLE(watchos, tvos);
- (nullable NSString *)logInfo;
@end
NS_ASSUME_NONNULL_END
_correlationId
.correlationId
is declared with strong
to manage memory correctly.readonly
properties as they are, assuming they are set internally and not meant to be modified externally.
AI-generated content may be incorrect"### Step-by-Step Plan
Logical and Syntactical Bugs:
(nonatomic)
, which is fine for non-thread-safe operations. However, consider if copy
should be used for NSString
properties to ensure immutability.method
property is declared as readonly
, which is appropriate if it should not be modified outside the class.Refactoring for Readability:
copy
Attribute for NSString
Properties: This ensures that the properties are immutable and not affected by changes to the original string.#import \"MSIDBrokerOperationRequest.h\"
NS_ASSUME_NONNULL_BEGIN
@interface MSIDBrokerOperationBrowserNativeMessageRequest : MSIDBrokerOperationRequest
@property (nonatomic, copy) NSDictionary *payloadJson; // Consider using copy if the dictionary is mutable
@property (nonatomic, copy) NSString *parentProcessBundleIdentifier; // Use copy for NSString properties
@property (nonatomic, copy) NSString *parentProcessTeamId; // Use copy for NSString properties
@property (nonatomic, copy) NSString *parentProcessLocalizedName; // Use copy for NSString properties
@property (nonatomic, readonly, copy) NSString *method; // Ensure readonly property is also copied
@end
NS_ASSUME_NONNULL_END
copy
Attribute: Using copy
for NSString
properties ensures that the property holds an immutable copy of the string, preventing unexpected changes if the original string is mutable."### Step-by-Step Plan
Review the Class Implementation:
Identify Potential Refactoring:
Error Handling in initWithJSONDictionary
:
JSON Serialization in jsonDictionary
:
Use of NSLocalizedString
:
Simplify initWithJSONDictionary
:
Consistent Error Handling:
Use of Constants:
#import \"MSIDBrokerOperationBrowserNativeMessageRequest.h\"
#import \"MSIDJsonSerializableTypes.h\"
#import \"MSIDJsonSerializableFactory.h\"
#import \"NSDictionary+MSIDExtensions.h\"
NSString *const MSID_BROWSER_NATIVE_MESSAGE_REQUEST_PAYLOAD_KEY = @\"payload\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_REQUEST_METHOD_KEY = @\"method\";
@implementation MSIDBrokerOperationBrowserNativeMessageRequest
+ (void)load
{
[MSIDJsonSerializableFactory registerClass:self forClassType:self.operation];
}
- (NSString *)method
{
return self.payloadJson[MSID_BROWSER_NATIVE_MESSAGE_REQUEST_METHOD_KEY];
}
#pragma mark - MSIDBrokerOperationRequest
+ (NSString *)operation
{
return MSID_JSON_TYPE_OPERATION_REQUEST_BROWSER_NATIVE_MESSAGE;
}
- (NSString *)callerBundleIdentifier
{
return self.parentProcessBundleIdentifier ?: NSLocalizedString(@\"N/A\", nil);
}
- (NSString *)callerTeamIdentifier
{
return self.parentProcessTeamId ?: NSLocalizedString(@\"N/A\", nil);
}
- (NSString *)localizedCallerDisplayName
{
return self.parentProcessLocalizedName ?: NSLocalizedString(@\"N/A\", nil);
}
- (NSString *)localizedApplicationInfo
{
NSString *method = self.payloadJson[MSID_BROWSER_NATIVE_MESSAGE_REQUEST_METHOD_KEY];
MSIDBrokerOperationRequest *brokerOperationRequest = [MSIDJsonSerializableFactory createFromJSONDictionary:self.payloadJson
classType:method
assertKindOfClass:MSIDBaseBrokerOperationRequest.class
error:nil];
if (![NSString msidIsStringNilOrBlank:brokerOperationRequest.localizedApplicationInfo])
{
return brokerOperationRequest.localizedApplicationInfo;
}
return NSLocalizedString(@\"N/A\", nil);
}
#pragma mark - MSIDJsonSerializable
- (instancetype)initWithJSONDictionary:(NSDictionary *)json error:(NSError *__autoreleasing*)error
{
self = [super initWithJSONDictionary:json error:error];
if (self)
{
if (![self validatePayloadInJSON:json error:error]) return nil;
_payloadJson = [NSDictionary msidDictionaryFromJSONString:json[MSID_BROWSER_NATIVE_MESSAGE_REQUEST_PAYLOAD_KEY]];
if (!_payloadJson)
{
[self setError:error withMessage:@\"Failed to serialize payload.\"];
return nil;
}
if (![self validateMethodInPayload:error]) return nil;
_parentProcessBundleIdentifier = [json msidStringObjectForKey:@\"parent_process_bundle_identifier\"];
_parentProcessTeamId = [json msidStringObjectForKey:@\"parent_process_teamId\"];
_parentProcessLocalizedName = [json msidStringObjectForKey:@\"parent_process_localized_name\"];
}
return self;
}
- (BOOL)validatePayloadInJSON:(NSDictionary *)json error:(NSError *__autoreleasing*)error
{
return [json msidAssertType:NSString.class ofKey:MSID_BROWSER_NATIVE_MESSAGE_REQUEST_PAYLOAD_KEY required:YES error:error];
}
- (BOOL)validateMethodInPayload:(NSError *__autoreleasing*)error
{
if (!_payloadJson[MSID_BROWSER_NATIVE_MESSAGE_REQUEST_METHOD_KEY])
{
[self setError:error withMessage:@\"Payload is invalid: no 'method' found.\"];
return NO;
}
return YES;
}
- (void)setError:(NSError *__autoreleasing*)error withMessage:(NSString *)message
{
if (error)
{
*error = MSIDCreateError(MSIDErrorDomain, MSIDErrorInternal, message, nil, nil, nil, nil, nil, YES);
}
}
- (NSDictionary *)jsonDictionary
{
NSMutableDictionary *json = [[super jsonDictionary] mutableCopy];
if (!json || !self.payloadJson) return nil;
json[MSID_BROWSER_NATIVE_MESSAGE_REQUEST_PAYLOAD_KEY] = [self.payloadJson msidJSONSerializeWithContext:nil];
return json;
}
@end
Error Handling:
validatePayloadInJSON
, validateMethodInPayload
, and setError
for better error handling and readability.Refactoring:
initWithJSONDictionary
by breaking it into smaller methods."I can help you with software development-related questions. However, the provided snippet is a changelog entry, not a class or code snippet. If you have a specific class or code snippet you want reviewed, please provide the actual code, and I can assist you with that. AI-generated content may be incorrect
"### Plan
Localized Application Info Method:
redirectUri
is incorrectly assigned the value of self.clientId
instead of self.redirectUri
.Fix:
__auto_type redirectUri = self.redirectUri ?: NSLocalizedString(@\"N/A\", nil);
Initialization with JSON Dictionary:
homeAccountId
is validated before using it to create an MSIDAccountIdentifier
.authorityString
is invalid.Fix:
if (homeAccountId != nil && ![MSIDAccountIdentifier isAccountIdValid:homeAccountId error:error]) return nil;
Localized Application Info Method:
Refactored Code:
- (NSString *)localizedApplicationInfo
{
if ([NSString msidIsStringNilOrBlank:self.clientId] && [NSString msidIsStringNilOrBlank:self.redirectUri])
{
return self.localizedCallerDisplayName;
}
__auto_type clientId = self.clientId ?: NSLocalizedString(@\"N/A\", nil);
__auto_type redirectUri = self.redirectUri ?: NSLocalizedString(@\"N/A\", nil);
NSString *clientIdKey = NSLocalizedString(@\"Client ID\", nil);
NSString *redirectUriKey = NSLocalizedString(@\"Redirect URI\", nil);
return [NSString stringWithFormat:@\"%@: %@ %@: %@\", clientIdKey, clientId, redirectUriKey, redirectUri];
}
Initialization with JSON Dictionary:
Refactored Code:
- (instancetype)initWithJSONDictionary:(NSDictionary *)json error:(NSError *__autoreleasing*)error
{
self = [super initWithJSONDictionary:json error:error];
if (!self) return nil;
if (![self validateRequestJson:json error:error]) return nil;
NSDictionary *requestJson = json[MSID_BROWSER_NATIVE_MESSAGE_REQUEST_KEY];
_loginHint = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_LOGIN_HINT_KEY];
NSString *homeAccountId = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_ACCOUNT_ID_KEY];
if (homeAccountId || _loginHint)
{
_accountId = [[MSIDAccountIdentifier alloc] initWithDisplayableId:_loginHint homeAccountId:homeAccountId];
}
_clientId = requestJson[MSID_BROWSER_NATIVE_MESSAGE_CLIENT_ID_KEY];
_authority = [self createAuthorityFromString:[requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_AUTHORITY_KEY] error:error];
if (!_authority) return nil;
_scopes = requestJson[MSID_BROWSER_NATIVE_MESSAGE_SCOPE_KEY];
_redirectUri = requestJson[MSID_BROWSER_NATIVE_MESSAGE_REDIRECT_URI_KEY];
_prompt = MSIDPromptTypeFromString([requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_PROMPT_KEY]);
_nonce = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_NONCE_KEY];
_isSts = [requestJson msidBoolObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_IS_STS_KEY];
_state = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_STATE_KEY];
_instanceAware = [requestJson msidBoolObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_INSTANCE_AWARE_KEY];
_extraParameters = requestJson[MSID_BROWSER_NATIVE_MESSAGE_EXTRA_PARAMETERS_KEY];
_correlationId = [self createCorrelationIdFromString:[requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_CORRELATION_KEY]];
_platformSequence = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_PLATFORM_SEQUENCE_KEY];
_canShowUI = [requestJson msidBoolObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_CAN_SHOW_UI_KEY] ?: YES;
return self;
}
- (BOOL)validateRequestJson:(NSDictionary *)json error:(NSError *__autoreleasing*)error
{
return [json msidAssertType:NSDictionary.class ofKey:MSID_BROWSER_NATIVE_MESSAGE_REQUEST_KEY required:YES error:error];
}
- (MSIDAADAuthority *)createAuthorityFromString:(NSString *)authorityString error:(NSError *__autoreleasing*)error
{
if (!authorityString) return nil;
NSError *localError;
MSIDAADAuthority *authority = [[MSIDAADAuthority alloc] initWithURL:[NSURL URLWithString:authorityString] rawTenant:nil context:nil error:&localError];
if (!authority && localError)
{
MSID_LOG_WITH_CTX_PII(MSIDLogLevelError, nil, @\"Non AAD authorities are not supported in broker - %@\", MSID_PII_LOG_MASKABLE(localError));
if (error) *error = localError;
}
return authority;
}
- (NSUUID *)createCorrelationIdFromString:(NSString *)uuidString
{
return uuidString ? [[NSUUID alloc] initWithUUIDString:uuidString] : [NSUUID UUID];
}
#import \"MSIDBrowserNativeMessageGetTokenRequest.h\"
#import \"MSIDJsonSerializableFactory.h\"
#import \"MSIDAADAuthority.h\"
#import \"MSIDAccountIdentifier.h\"
#import \"MSIDConstants.h\"
#import \"MSIDPromptType_Internal.h\"
NSString *const MSID_BROWSER_NATIVE_MESSAGE_CORRELATION_KEY = @\"correlationId\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_CLIENT_ID_KEY = @\"clientId\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_AUTHORITY_KEY = @\"authority\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_SCOPE_KEY = @\"scope\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_REDIRECT_URI_KEY = @\"redirectUri\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_PROMPT_KEY = @\"prompt\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_NONCE_KEY = @\"nonce\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_IS_STS_KEY = @\"isSts\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_STATE_KEY = @\"state\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_LOGIN_HINT_KEY = @\"loginHint\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_INSTANCE_AWARE_KEY = @\"instance_aware\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_EXTRA_PARAMETERS_KEY = @\"extraParameters\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_REQUEST_KEY = @\"request\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_PLATFORM_SEQUENCE_KEY = @\"x-client-xtra-sku\";
NSString *const MSID_BROWSER_NATIVE_MESSAGE_CAN_SHOW_UI_KEY = @\"canShowUI\";
@implementation MSIDBrowserNativeMessageGetTokenRequest
+ (void)load
{
[MSIDJsonSerializableFactory registerClass:self forClassType:self.operation];
}
+ (NSString *)operation
{
return @\"GetToken\";
}
#pragma mark - MSIDBrokerOperationRequest
- (NSString *)localizedApplicationInfo
{
if ([NSString msidIsStringNilOrBlank:self.clientId] && [NSString msidIsStringNilOrBlank:self.redirectUri])
{
return self.localizedCallerDisplayName;
}
__auto_type clientId = self.clientId ?: NSLocalizedString(@\"N/A\", nil);
__auto_type redirectUri = self.redirectUri ?: NSLocalizedString(@\"N/A\", nil);
NSString *clientIdKey = NSLocalizedString(@\"Client ID\", nil);
NSString *redirectUriKey = NSLocalizedString(@\"Redirect URI\", nil);
return [NSString stringWithFormat:@\"%@: %@ %@: %@\", clientIdKey, clientId, redirectUriKey, redirectUri];
}
#pragma mark - MSIDJsonSerializable
- (instancetype)initWithJSONDictionary:(NSDictionary *)json error:(NSError *__autoreleasing*)error
{
self = [super initWithJSONDictionary:json error:error];
if (!self) return nil;
if (![self validateRequestJson:json error:error]) return nil;
NSDictionary *requestJson = json[MSID_BROWSER_NATIVE_MESSAGE_REQUEST_KEY];
_loginHint = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_LOGIN_HINT_KEY];
NSString *homeAccountId = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_ACCOUNT_ID_KEY];
if (homeAccountId || _loginHint)
{
_accountId = [[MSIDAccountIdentifier alloc] initWithDisplayableId:_loginHint homeAccountId:homeAccountId];
}
_clientId = requestJson[MSID_BROWSER_NATIVE_MESSAGE_CLIENT_ID_KEY];
_authority = [self createAuthorityFromString:[requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_AUTHORITY_KEY] error:error];
if (!_authority) return nil;
_scopes = requestJson[MSID_BROWSER_NATIVE_MESSAGE_SCOPE_KEY];
_redirectUri = requestJson[MSID_BROWSER_NATIVE_MESSAGE_REDIRECT_URI_KEY];
_prompt = MSIDPromptTypeFromString([requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_PROMPT_KEY]);
_nonce = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_NONCE_KEY];
_isSts = [requestJson msidBoolObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_IS_STS_KEY];
_state = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_STATE_KEY];
_instanceAware = [requestJson msidBoolObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_INSTANCE_AWARE_KEY];
_extraParameters = requestJson[MSID_BROWSER_NATIVE_MESSAGE_EXTRA_PARAMETERS_KEY];
_correlationId = [self createCorrelationIdFromString:[requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_CORRELATION_KEY]];
_platformSequence = [requestJson msidStringObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_PLATFORM_SEQUENCE_KEY];
_canShowUI = [requestJson msidBoolObjectForKey:MSID_BROWSER_NATIVE_MESSAGE_CAN_SHOW_UI_KEY] ?: YES;
return self;
}
- (BOOL)validateRequestJson:(NSDictionary *)json error:(NSError *__autoreleasing*)error
{
return [json msidAssertType:NSDictionary.class ofKey:MSID_BROWSER_NATIVE_MESSAGE_REQUEST_KEY required:YES error:error];
}
- (MSIDAADAuthority *)createAuthorityFromString:(NSString *)authorityString error:(NSError *__autoreleasing*)error
{
if (!authorityString) return nil;
NSError *localError;
MSIDAADAuthority *authority = [[MSIDAADAuthority alloc] initWithURL:[NSURL URLWithString:authorityString] rawTenant:nil context:nil error:&localError];
if (!authority && localError)
{
MSID_LOG_WITH_CTX_PII(MSIDLogLevelError, nil, @\"Non AAD authorities are not supported in broker - %@\", MSID_PII_LOG_MASKABLE(localError));
if (error) *error = localError;
}
return authority;
}
- (NSUUID *)createCorrelationIdFromString:(NSString *)uuidString
{
return uuidString ? [[NSUUID alloc] initWithUUIDString:uuidString] : [NSUUID UUID];
}
- (NSDictionary *)jsonDictionary
{
@throw MSIDException(MSIDGenericException, @\"Not implemented.\", nil);
}
@end
AI-generated content may be incorrect
Cloned PR for sedemche/wrap_calling_app_bundle_id
New feature
This pull request adds support for handling parent process information in MSIDBrokerOperationBrowserNativeMessageRequest
and related classes.
MSIDBrokerOperationBrowserNativeMessageRequest.m
: Added properties and methods to handle parent process information.MSIDBrokerOperationBrowserNativeMessageRequestTests.m
: Added tests for new properties and methods.MSIDBrowserNativeMessageGetTokenRequest.m
: Implemented localizedApplicationInfo
method.MSIDBaseBrokerOperationRequest.h
: Added new properties for caller information.changelog.txt
to reflect the new feature."Added 1
Inline Code Review comment(s) at the following location(s):
AI-generated content may be incorrect "
"AI code review (iteration 1)
It might be better to ensure that the properties parentProcessBundleIdentifier
, parentProcessTeamId
, and parentProcessLocalizedName
are marked as copy
instead of strong
to prevent potential issues with mutability of NSString
objects. When properties of type NSString
are declared without copy
, they can inadvertently become mutable if assigned a mutable string, which can lead to unexpected behaviors if the string is altered elsewhere in the code. Using copy
ensures that a copy of the string is used, maintaining the immutability of the property.
Here is the suggested code:
@property (nonatomic, copy) NSString *parentProcessBundleIdentifier;
@property (nonatomic, copy) NSString *parentProcessTeamId;
@property (nonatomic, copy) NSString *parentProcessLocalizedName;
This comment refers to line 33 to 35 in the new file. AI-generated content may be incorrect
Cloned PR for sedemche/wrap_calling_app_bundle_id
New feature
This pull request adds support for handling parent process information in broker operation requests.
MSIDBrokerOperationBrowserNativeMessageRequest.m
: Added properties and methods to handle parent process bundle identifier, team ID, and localized name.MSIDBrokerOperationBrowserNativeMessageRequestTests.m
: Added tests for initializing with and without parent process information.MSIDBrowserNativeMessageGetTokenRequest.m
: Implemented localizedApplicationInfo
to return client ID and redirect URI.MSIDBaseBrokerOperationRequest.h
: Added new properties for caller bundle identifier, team identifier, and localized display name.changelog.txt
: Updated changelog to reflect the new feature."Added 1
Inline Code Review comment(s) at the following location(s):
AI-generated content may be incorrect "
"AI code review (iteration 1)
It might be better to ensure that the properties parentProcessBundleIdentifier
, parentProcessTeamId
, and parentProcessLocalizedName
are marked as copy
instead of strong
(which is the default). This is particularly important for classes like NSString
that have mutable subclasses (NSMutableString
). Using copy
ensures that the strings cannot be altered after they are set, which is crucial for maintaining the integrity of these properties throughout the lifecycle of the object.
Here is the suggested code:
@property (nonatomic, copy) NSString *parentProcessBundleIdentifier;
@property (nonatomic, copy) NSString *parentProcessTeamId;
@property (nonatomic, copy) NSString *parentProcessLocalizedName;
This comment refers to line 33 to 35 in the new file. AI-generated content may be incorrect
Same feedback here - please fill in the description for this PR.
Cloned PR for sedemche/wrap_calling_app_bundle_id
New feature
This pull request adds support for handling parent process information in the MSIDBrokerOperationBrowserNativeMessageRequest
class.
MSIDBrokerOperationBrowserNativeMessageRequest.m
: Added properties and methods to handle parent process bundle identifier, team ID, and localized name.MSIDBrokerOperationBrowserNativeMessageRequestTests.m
: Added tests for initializing with and without parent process information.MSIDBaseBrokerOperationRequest.h
: Added new properties for caller bundle identifier, team identifier, and localized application info.MSIDBrowserNativeMessageGetTokenRequest.m
: Implemented localizedApplicationInfo
method to return client ID and redirect URI.changelog.txt
: Updated to reflect the new feature addition.Cloned PR for sedemche/wrap_calling_app_bundle_id
Code cleanup
This pull request removes unused code and refactors error handling in the MSALNativeAuthUserAccountResultTests.
MSALNativeAuthUserAccountResultTests.swift
: Removed tests related to silent token provider and refactored error handling methods.MSIDBrokerOperationBrowserNativeMessageRequestTests.m
: Added tests for JSON initialization with and without parent process info.MSALNativeAuthUserAccountEndToEndTests.swift
, MSALNativeAuthSilentTokenProviding.swift
, MSALNativeAuthSilentTokenProvider.swift
, CredentialsDelegateSpies.swift
, MSALNativeAuthSilentTokenProviderMock.swift
, MSALNativeAuthSilentTokenProviderFactoryConfigTester.swift
.MSAL.xcodeproj/project.pbxproj
: Removed references to deleted files and groups.
Proposed changes
Modify SSO ext UI caller info for browser SSO flows. Format:
Team ID - browser team id Bundle ID - browser bundle id Application - “Client ID: Redirect URI: ”
Provide new public APIs for CP team. Related work item: https://identitydivision.visualstudio.com/Engineering/_workitems/edit/3036432
Type of change
Risk
Additional information