From 70d4feeb1a03d37fec46cf52cbdcf17cd7e6d3ab Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Mon, 12 Feb 2024 15:46:18 -0800 Subject: [PATCH] [local_auth] Rename iOS classes (#6108) When we renamed `local_auth_ios` to `local_auth_darwin` I forgot that we needed to rename all of the classes. Not doing so would make it a breaking change for us to switch endorsement, since anyone who depends directly on `local_auth_ios` (anyone setting custom strings, most commonly) would then have both copies. It's an immediate runtime failure on launch since it tries to register the same plugin class twice, but even if we fixed just that it would be picking an implementation of each class and random and we could have strange runtime behavior as they diverge over time. This renames the plugin class to use the newer `FLA` prefix, and renames all of the internal classes already using `FLA` to `FLAD` to make them distinct. (This is slightly ugly, but we're only stuck with it until we convert this plugin to Swift.) --- .../local_auth/local_auth_darwin/CHANGELOG.md | 5 + ...LocalAuthPlugin.h => FLALocalAuthPlugin.h} | 2 +- ...LocalAuthPlugin.m => FLALocalAuthPlugin.m} | 93 +++++------ ...lugin_Test.h => FLALocalAuthPlugin_Test.h} | 6 +- .../darwin/Classes/messages.g.h | 76 ++++----- .../darwin/Classes/messages.g.m | 156 +++++++++--------- ...luginTests.m => FLALocalAuthPluginTests.m} | 156 +++++++++--------- .../ios/Runner.xcodeproj/project.pbxproj | 10 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../local_auth_darwin/pigeons/messages.dart | 2 +- .../local_auth/local_auth_darwin/pubspec.yaml | 4 +- 11 files changed, 259 insertions(+), 253 deletions(-) rename packages/local_auth/local_auth_darwin/darwin/Classes/{FLTLocalAuthPlugin.h => FLALocalAuthPlugin.h} (74%) rename packages/local_auth/local_auth_darwin/darwin/Classes/{FLTLocalAuthPlugin.m => FLALocalAuthPlugin.m} (72%) rename packages/local_auth/local_auth_darwin/darwin/Classes/{FLTLocalAuthPlugin_Test.h => FLALocalAuthPlugin_Test.h} (76%) rename packages/local_auth/local_auth_darwin/darwin/Tests/{FLTLocalAuthPluginTests.m => FLALocalAuthPluginTests.m} (82%) diff --git a/packages/local_auth/local_auth_darwin/CHANGELOG.md b/packages/local_auth/local_auth_darwin/CHANGELOG.md index 7c816d348e..e5367d705e 100644 --- a/packages/local_auth/local_auth_darwin/CHANGELOG.md +++ b/packages/local_auth/local_auth_darwin/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.2.1 + +* Renames the Objective-C plugin classes to avoid runtime conflicts with + `local_auth_ios` in apps that have transitive dependencies on both. + ## 1.2.0 * Renames the package previously published as [`local_auth_ios`](https://pub.dev/packages/local_auth_ios) diff --git a/packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin.h b/packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin.h similarity index 74% rename from packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin.h rename to packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin.h index d023ba3ed1..7168f350fe 100644 --- a/packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin.h +++ b/packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin.h @@ -6,5 +6,5 @@ #import "messages.g.h" -@interface FLTLocalAuthPlugin : NSObject +@interface FLALocalAuthPlugin : NSObject @end diff --git a/packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin.m b/packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin.m similarity index 72% rename from packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin.m rename to packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin.m index 3ac8ebe29c..6b9ef39f6e 100644 --- a/packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin.m +++ b/packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin.m @@ -1,17 +1,17 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "FLTLocalAuthPlugin.h" -#import "FLTLocalAuthPlugin_Test.h" +#import "FLALocalAuthPlugin.h" +#import "FLALocalAuthPlugin_Test.h" #import -typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError *_Nullable); +typedef void (^FLADAuthCompletion)(FLADAuthResultDetails *_Nullable, FlutterError *_Nullable); /** * A default context factory that wraps standard LAContext allocation. */ -@interface FLADefaultAuthContextFactory : NSObject +@interface FLADefaultAuthContextFactory : NSObject @end @implementation FLADefaultAuthContextFactory @@ -26,18 +26,18 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError * A data container for sticky auth state. */ @interface FLAStickyAuthState : NSObject -@property(nonatomic, strong, nonnull) FLAAuthOptions *options; -@property(nonatomic, strong, nonnull) FLAAuthStrings *strings; -@property(nonatomic, copy, nonnull) FLAAuthCompletion resultHandler; -- (instancetype)initWithOptions:(nonnull FLAAuthOptions *)options - strings:(nonnull FLAAuthStrings *)strings - resultHandler:(nonnull FLAAuthCompletion)resultHandler; +@property(nonatomic, strong, nonnull) FLADAuthOptions *options; +@property(nonatomic, strong, nonnull) FLADAuthStrings *strings; +@property(nonatomic, copy, nonnull) FLADAuthCompletion resultHandler; +- (instancetype)initWithOptions:(nonnull FLADAuthOptions *)options + strings:(nonnull FLADAuthStrings *)strings + resultHandler:(nonnull FLADAuthCompletion)resultHandler; @end @implementation FLAStickyAuthState -- (instancetype)initWithOptions:(nonnull FLAAuthOptions *)options - strings:(nonnull FLAAuthStrings *)strings - resultHandler:(nonnull FLAAuthCompletion)resultHandler { +- (instancetype)initWithOptions:(nonnull FLADAuthOptions *)options + strings:(nonnull FLADAuthStrings *)strings + resultHandler:(nonnull FLADAuthCompletion)resultHandler { self = [super init]; if (self) { _options = options; @@ -50,24 +50,24 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError #pragma mark - -@interface FLTLocalAuthPlugin () +@interface FLALocalAuthPlugin () @property(nonatomic, strong, nullable) FLAStickyAuthState *lastCallState; -@property(nonatomic, strong) NSObject *authContextFactory; +@property(nonatomic, strong) NSObject *authContextFactory; @end -@implementation FLTLocalAuthPlugin +@implementation FLALocalAuthPlugin + (void)registerWithRegistrar:(NSObject *)registrar { - FLTLocalAuthPlugin *instance = [[FLTLocalAuthPlugin alloc] init]; + FLALocalAuthPlugin *instance = [[FLALocalAuthPlugin alloc] init]; [registrar addApplicationDelegate:instance]; - SetUpFLALocalAuthApi([registrar messenger], instance); + SetUpFLADLocalAuthApi([registrar messenger], instance); } - (instancetype)init { return [self initWithContextFactory:[[FLADefaultAuthContextFactory alloc] init]]; } -- (instancetype)initWithContextFactory:(NSObject *)factory { +- (instancetype)initWithContextFactory:(NSObject *)factory { self = [super init]; if (self) { _authContextFactory = factory; @@ -75,11 +75,11 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError return self; } -#pragma mark FLALocalAuthApi +#pragma mark FLADLocalAuthApi -- (void)authenticateWithOptions:(nonnull FLAAuthOptions *)options - strings:(nonnull FLAAuthStrings *)strings - completion:(nonnull void (^)(FLAAuthResultDetails *_Nullable, +- (void)authenticateWithOptions:(nonnull FLADAuthOptions *)options + strings:(nonnull FLADAuthStrings *)strings + completion:(nonnull void (^)(FLADAuthResultDetails *_Nullable, FlutterError *_Nullable))completion { LAContext *context = [self.authContextFactory createAuthContext]; NSError *authError = nil; @@ -126,18 +126,19 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError return @NO; } -- (nullable NSArray *)getEnrolledBiometricsWithError: +- (nullable NSArray *)getEnrolledBiometricsWithError: (FlutterError *_Nullable __autoreleasing *_Nonnull)error { LAContext *context = [self.authContextFactory createAuthContext]; NSError *authError = nil; - NSMutableArray *biometrics = [[NSMutableArray alloc] init]; + NSMutableArray *biometrics = [[NSMutableArray alloc] init]; if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) { if (authError == nil) { if (context.biometryType == LABiometryTypeFaceID) { - [biometrics addObject:[FLAAuthBiometricWrapper makeWithValue:FLAAuthBiometricFace]]; + [biometrics addObject:[FLADAuthBiometricWrapper makeWithValue:FLADAuthBiometricFace]]; } else if (context.biometryType == LABiometryTypeTouchID) { - [biometrics addObject:[FLAAuthBiometricWrapper makeWithValue:FLAAuthBiometricFingerprint]]; + [biometrics + addObject:[FLADAuthBiometricWrapper makeWithValue:FLADAuthBiometricFingerprint]]; } } } @@ -155,7 +156,7 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError - (void)showAlertWithMessage:(NSString *)message dismissButtonTitle:(NSString *)dismissButtonTitle openSettingsButtonTitle:(NSString *)openSettingsButtonTitle - completion:(FLAAuthCompletion)completion { + completion:(FLADAuthCompletion)completion { UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"" message:message @@ -189,9 +190,9 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError - (void)handleAuthReplyWithSuccess:(BOOL)success error:(NSError *)error - options:(FLAAuthOptions *)options - strings:(FLAAuthStrings *)strings - completion:(nonnull FLAAuthCompletion)completion { + options:(FLADAuthOptions *)options + strings:(FLADAuthStrings *)strings + completion:(nonnull FLADAuthCompletion)completion { NSAssert([NSThread isMainThread], @"Response handling must be done on the main thread."); if (success) { [self handleSucceeded:YES withCompletion:completion]; @@ -219,19 +220,19 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError } } -- (void)handleSucceeded:(BOOL)succeeded withCompletion:(nonnull FLAAuthCompletion)completion { - completion( - [FLAAuthResultDetails makeWithResult:(succeeded ? FLAAuthResultSuccess : FLAAuthResultFailure) - errorMessage:nil - errorDetails:nil], - nil); +- (void)handleSucceeded:(BOOL)succeeded withCompletion:(nonnull FLADAuthCompletion)completion { + completion([FLADAuthResultDetails + makeWithResult:(succeeded ? FLADAuthResultSuccess : FLADAuthResultFailure) + errorMessage:nil + errorDetails:nil], + nil); } - (void)handleError:(NSError *)authError - withOptions:(FLAAuthOptions *)options - strings:(FLAAuthStrings *)strings - completion:(nonnull FLAAuthCompletion)completion { - FLAAuthResult result = FLAAuthResultErrorNotAvailable; + withOptions:(FLADAuthOptions *)options + strings:(FLADAuthStrings *)strings + completion:(nonnull FLADAuthCompletion)completion { + FLADAuthResult result = FLADAuthResultErrorNotAvailable; switch (authError.code) { case LAErrorPasscodeNotSet: case LAErrorBiometryNotEnrolled: @@ -242,8 +243,8 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError completion:completion]; return; } - result = authError.code == LAErrorPasscodeNotSet ? FLAAuthResultErrorPasscodeNotSet - : FLAAuthResultErrorNotEnrolled; + result = authError.code == LAErrorPasscodeNotSet ? FLADAuthResultErrorPasscodeNotSet + : FLADAuthResultErrorNotEnrolled; break; case LAErrorBiometryLockout: [self showAlertWithMessage:strings.lockOut @@ -252,9 +253,9 @@ typedef void (^FLAAuthCompletion)(FLAAuthResultDetails *_Nullable, FlutterError completion:completion]; return; } - completion([FLAAuthResultDetails makeWithResult:result - errorMessage:authError.localizedDescription - errorDetails:authError.domain], + completion([FLADAuthResultDetails makeWithResult:result + errorMessage:authError.localizedDescription + errorDetails:authError.domain], nil); } diff --git a/packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin_Test.h b/packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin_Test.h similarity index 76% rename from packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin_Test.h rename to packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin_Test.h index c35322033f..79ac48ec8c 100644 --- a/packages/local_auth/local_auth_darwin/darwin/Classes/FLTLocalAuthPlugin_Test.h +++ b/packages/local_auth/local_auth_darwin/darwin/Classes/FLALocalAuthPlugin_Test.h @@ -8,14 +8,14 @@ /** * Protocol for a source of LAContext instances. Used to allow context injection in unit tests. */ -@protocol FLAAuthContextFactory +@protocol FLADAuthContextFactory - (LAContext *)createAuthContext; @end -@interface FLTLocalAuthPlugin () +@interface FLALocalAuthPlugin () /** * Returns an instance that uses the given factory to create LAContexts. */ -- (instancetype)initWithContextFactory:(NSObject *)factory +- (instancetype)initWithContextFactory:(NSObject *)factory NS_DESIGNATED_INITIALIZER; @end diff --git a/packages/local_auth/local_auth_darwin/darwin/Classes/messages.g.h b/packages/local_auth/local_auth_darwin/darwin/Classes/messages.g.h index 712216c759..e15d520472 100644 --- a/packages/local_auth/local_auth_darwin/darwin/Classes/messages.g.h +++ b/packages/local_auth/local_auth_darwin/darwin/Classes/messages.g.h @@ -14,46 +14,46 @@ NS_ASSUME_NONNULL_BEGIN /// Possible outcomes of an authentication attempt. -typedef NS_ENUM(NSUInteger, FLAAuthResult) { +typedef NS_ENUM(NSUInteger, FLADAuthResult) { /// The user authenticated successfully. - FLAAuthResultSuccess = 0, + FLADAuthResultSuccess = 0, /// The user failed to successfully authenticate. - FLAAuthResultFailure = 1, + FLADAuthResultFailure = 1, /// The authentication system was not available. - FLAAuthResultErrorNotAvailable = 2, + FLADAuthResultErrorNotAvailable = 2, /// No biometrics are enrolled. - FLAAuthResultErrorNotEnrolled = 3, + FLADAuthResultErrorNotEnrolled = 3, /// No passcode is set. - FLAAuthResultErrorPasscodeNotSet = 4, + FLADAuthResultErrorPasscodeNotSet = 4, }; -/// Wrapper for FLAAuthResult to allow for nullability. -@interface FLAAuthResultBox : NSObject -@property(nonatomic, assign) FLAAuthResult value; -- (instancetype)initWithValue:(FLAAuthResult)value; +/// Wrapper for FLADAuthResult to allow for nullability. +@interface FLADAuthResultBox : NSObject +@property(nonatomic, assign) FLADAuthResult value; +- (instancetype)initWithValue:(FLADAuthResult)value; @end /// Pigeon equivalent of the subset of BiometricType used by iOS. -typedef NS_ENUM(NSUInteger, FLAAuthBiometric) { - FLAAuthBiometricFace = 0, - FLAAuthBiometricFingerprint = 1, +typedef NS_ENUM(NSUInteger, FLADAuthBiometric) { + FLADAuthBiometricFace = 0, + FLADAuthBiometricFingerprint = 1, }; -/// Wrapper for FLAAuthBiometric to allow for nullability. -@interface FLAAuthBiometricBox : NSObject -@property(nonatomic, assign) FLAAuthBiometric value; -- (instancetype)initWithValue:(FLAAuthBiometric)value; +/// Wrapper for FLADAuthBiometric to allow for nullability. +@interface FLADAuthBiometricBox : NSObject +@property(nonatomic, assign) FLADAuthBiometric value; +- (instancetype)initWithValue:(FLADAuthBiometric)value; @end -@class FLAAuthStrings; -@class FLAAuthOptions; -@class FLAAuthResultDetails; -@class FLAAuthBiometricWrapper; +@class FLADAuthStrings; +@class FLADAuthOptions; +@class FLADAuthResultDetails; +@class FLADAuthBiometricWrapper; /// Pigeon version of IOSAuthMessages, plus the authorization reason. /// /// See auth_messages_ios.dart for details. -@interface FLAAuthStrings : NSObject +@interface FLADAuthStrings : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithReason:(NSString *)reason @@ -70,7 +70,7 @@ typedef NS_ENUM(NSUInteger, FLAAuthBiometric) { @property(nonatomic, copy, nullable) NSString *localizedFallbackTitle; @end -@interface FLAAuthOptions : NSObject +@interface FLADAuthOptions : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithBiometricOnly:(BOOL)biometricOnly @@ -81,31 +81,31 @@ typedef NS_ENUM(NSUInteger, FLAAuthBiometric) { @property(nonatomic, assign) BOOL useErrorDialogs; @end -@interface FLAAuthResultDetails : NSObject +@interface FLADAuthResultDetails : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithResult:(FLAAuthResult)result ++ (instancetype)makeWithResult:(FLADAuthResult)result errorMessage:(nullable NSString *)errorMessage errorDetails:(nullable NSString *)errorDetails; /// The result of authenticating. -@property(nonatomic, assign) FLAAuthResult result; +@property(nonatomic, assign) FLADAuthResult result; /// A system-provided error message, if any. @property(nonatomic, copy, nullable) NSString *errorMessage; /// System-provided error details, if any. @property(nonatomic, copy, nullable) NSString *errorDetails; @end -@interface FLAAuthBiometricWrapper : NSObject +@interface FLADAuthBiometricWrapper : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithValue:(FLAAuthBiometric)value; -@property(nonatomic, assign) FLAAuthBiometric value; ++ (instancetype)makeWithValue:(FLADAuthBiometric)value; +@property(nonatomic, assign) FLADAuthBiometric value; @end -/// The codec used by FLALocalAuthApi. -NSObject *FLALocalAuthApiGetCodec(void); +/// The codec used by FLADLocalAuthApi. +NSObject *FLADLocalAuthApiGetCodec(void); -@protocol FLALocalAuthApi +@protocol FLADLocalAuthApi /// Returns true if this device supports authentication. /// /// @return `nil` only when `error != nil`. @@ -119,17 +119,17 @@ NSObject *FLALocalAuthApiGetCodec(void); /// without additional setup. /// /// @return `nil` only when `error != nil`. -- (nullable NSArray *)getEnrolledBiometricsWithError: +- (nullable NSArray *)getEnrolledBiometricsWithError: (FlutterError *_Nullable *_Nonnull)error; /// Attempts to authenticate the user with the provided [options], and using /// [strings] for any UI. -- (void)authenticateWithOptions:(FLAAuthOptions *)options - strings:(FLAAuthStrings *)strings - completion:(void (^)(FLAAuthResultDetails *_Nullable, +- (void)authenticateWithOptions:(FLADAuthOptions *)options + strings:(FLADAuthStrings *)strings + completion:(void (^)(FLADAuthResultDetails *_Nullable, FlutterError *_Nullable))completion; @end -extern void SetUpFLALocalAuthApi(id binaryMessenger, - NSObject *_Nullable api); +extern void SetUpFLADLocalAuthApi(id binaryMessenger, + NSObject *_Nullable api); NS_ASSUME_NONNULL_END diff --git a/packages/local_auth/local_auth_darwin/darwin/Classes/messages.g.m b/packages/local_auth/local_auth_darwin/darwin/Classes/messages.g.m index 6f0ef07d4c..421b31e942 100644 --- a/packages/local_auth/local_auth_darwin/darwin/Classes/messages.g.m +++ b/packages/local_auth/local_auth_darwin/darwin/Classes/messages.g.m @@ -31,8 +31,8 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { } /// Possible outcomes of an authentication attempt. -@implementation FLAAuthResultBox -- (instancetype)initWithValue:(FLAAuthResult)value { +@implementation FLADAuthResultBox +- (instancetype)initWithValue:(FLADAuthResult)value { self = [super init]; if (self) { _value = value; @@ -42,8 +42,8 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { @end /// Pigeon equivalent of the subset of BiometricType used by iOS. -@implementation FLAAuthBiometricBox -- (instancetype)initWithValue:(FLAAuthBiometric)value { +@implementation FLADAuthBiometricBox +- (instancetype)initWithValue:(FLADAuthBiometric)value { self = [super init]; if (self) { _value = value; @@ -52,38 +52,38 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { } @end -@interface FLAAuthStrings () -+ (FLAAuthStrings *)fromList:(NSArray *)list; -+ (nullable FLAAuthStrings *)nullableFromList:(NSArray *)list; +@interface FLADAuthStrings () ++ (FLADAuthStrings *)fromList:(NSArray *)list; ++ (nullable FLADAuthStrings *)nullableFromList:(NSArray *)list; - (NSArray *)toList; @end -@interface FLAAuthOptions () -+ (FLAAuthOptions *)fromList:(NSArray *)list; -+ (nullable FLAAuthOptions *)nullableFromList:(NSArray *)list; +@interface FLADAuthOptions () ++ (FLADAuthOptions *)fromList:(NSArray *)list; ++ (nullable FLADAuthOptions *)nullableFromList:(NSArray *)list; - (NSArray *)toList; @end -@interface FLAAuthResultDetails () -+ (FLAAuthResultDetails *)fromList:(NSArray *)list; -+ (nullable FLAAuthResultDetails *)nullableFromList:(NSArray *)list; +@interface FLADAuthResultDetails () ++ (FLADAuthResultDetails *)fromList:(NSArray *)list; ++ (nullable FLADAuthResultDetails *)nullableFromList:(NSArray *)list; - (NSArray *)toList; @end -@interface FLAAuthBiometricWrapper () -+ (FLAAuthBiometricWrapper *)fromList:(NSArray *)list; -+ (nullable FLAAuthBiometricWrapper *)nullableFromList:(NSArray *)list; +@interface FLADAuthBiometricWrapper () ++ (FLADAuthBiometricWrapper *)fromList:(NSArray *)list; ++ (nullable FLADAuthBiometricWrapper *)nullableFromList:(NSArray *)list; - (NSArray *)toList; @end -@implementation FLAAuthStrings +@implementation FLADAuthStrings + (instancetype)makeWithReason:(NSString *)reason lockOut:(NSString *)lockOut goToSettingsButton:(NSString *)goToSettingsButton goToSettingsDescription:(NSString *)goToSettingsDescription cancelButton:(NSString *)cancelButton localizedFallbackTitle:(nullable NSString *)localizedFallbackTitle { - FLAAuthStrings *pigeonResult = [[FLAAuthStrings alloc] init]; + FLADAuthStrings *pigeonResult = [[FLADAuthStrings alloc] init]; pigeonResult.reason = reason; pigeonResult.lockOut = lockOut; pigeonResult.goToSettingsButton = goToSettingsButton; @@ -92,8 +92,8 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { pigeonResult.localizedFallbackTitle = localizedFallbackTitle; return pigeonResult; } -+ (FLAAuthStrings *)fromList:(NSArray *)list { - FLAAuthStrings *pigeonResult = [[FLAAuthStrings alloc] init]; ++ (FLADAuthStrings *)fromList:(NSArray *)list { + FLADAuthStrings *pigeonResult = [[FLADAuthStrings alloc] init]; pigeonResult.reason = GetNullableObjectAtIndex(list, 0); pigeonResult.lockOut = GetNullableObjectAtIndex(list, 1); pigeonResult.goToSettingsButton = GetNullableObjectAtIndex(list, 2); @@ -102,8 +102,8 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { pigeonResult.localizedFallbackTitle = GetNullableObjectAtIndex(list, 5); return pigeonResult; } -+ (nullable FLAAuthStrings *)nullableFromList:(NSArray *)list { - return (list) ? [FLAAuthStrings fromList:list] : nil; ++ (nullable FLADAuthStrings *)nullableFromList:(NSArray *)list { + return (list) ? [FLADAuthStrings fromList:list] : nil; } - (NSArray *)toList { return @[ @@ -117,25 +117,25 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { } @end -@implementation FLAAuthOptions +@implementation FLADAuthOptions + (instancetype)makeWithBiometricOnly:(BOOL)biometricOnly sticky:(BOOL)sticky useErrorDialogs:(BOOL)useErrorDialogs { - FLAAuthOptions *pigeonResult = [[FLAAuthOptions alloc] init]; + FLADAuthOptions *pigeonResult = [[FLADAuthOptions alloc] init]; pigeonResult.biometricOnly = biometricOnly; pigeonResult.sticky = sticky; pigeonResult.useErrorDialogs = useErrorDialogs; return pigeonResult; } -+ (FLAAuthOptions *)fromList:(NSArray *)list { - FLAAuthOptions *pigeonResult = [[FLAAuthOptions alloc] init]; ++ (FLADAuthOptions *)fromList:(NSArray *)list { + FLADAuthOptions *pigeonResult = [[FLADAuthOptions alloc] init]; pigeonResult.biometricOnly = [GetNullableObjectAtIndex(list, 0) boolValue]; pigeonResult.sticky = [GetNullableObjectAtIndex(list, 1) boolValue]; pigeonResult.useErrorDialogs = [GetNullableObjectAtIndex(list, 2) boolValue]; return pigeonResult; } -+ (nullable FLAAuthOptions *)nullableFromList:(NSArray *)list { - return (list) ? [FLAAuthOptions fromList:list] : nil; ++ (nullable FLADAuthOptions *)nullableFromList:(NSArray *)list { + return (list) ? [FLADAuthOptions fromList:list] : nil; } - (NSArray *)toList { return @[ @@ -146,25 +146,25 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { } @end -@implementation FLAAuthResultDetails -+ (instancetype)makeWithResult:(FLAAuthResult)result +@implementation FLADAuthResultDetails ++ (instancetype)makeWithResult:(FLADAuthResult)result errorMessage:(nullable NSString *)errorMessage errorDetails:(nullable NSString *)errorDetails { - FLAAuthResultDetails *pigeonResult = [[FLAAuthResultDetails alloc] init]; + FLADAuthResultDetails *pigeonResult = [[FLADAuthResultDetails alloc] init]; pigeonResult.result = result; pigeonResult.errorMessage = errorMessage; pigeonResult.errorDetails = errorDetails; return pigeonResult; } -+ (FLAAuthResultDetails *)fromList:(NSArray *)list { - FLAAuthResultDetails *pigeonResult = [[FLAAuthResultDetails alloc] init]; ++ (FLADAuthResultDetails *)fromList:(NSArray *)list { + FLADAuthResultDetails *pigeonResult = [[FLADAuthResultDetails alloc] init]; pigeonResult.result = [GetNullableObjectAtIndex(list, 0) integerValue]; pigeonResult.errorMessage = GetNullableObjectAtIndex(list, 1); pigeonResult.errorDetails = GetNullableObjectAtIndex(list, 2); return pigeonResult; } -+ (nullable FLAAuthResultDetails *)nullableFromList:(NSArray *)list { - return (list) ? [FLAAuthResultDetails fromList:list] : nil; ++ (nullable FLADAuthResultDetails *)nullableFromList:(NSArray *)list { + return (list) ? [FLADAuthResultDetails fromList:list] : nil; } - (NSArray *)toList { return @[ @@ -175,19 +175,19 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { } @end -@implementation FLAAuthBiometricWrapper -+ (instancetype)makeWithValue:(FLAAuthBiometric)value { - FLAAuthBiometricWrapper *pigeonResult = [[FLAAuthBiometricWrapper alloc] init]; +@implementation FLADAuthBiometricWrapper ++ (instancetype)makeWithValue:(FLADAuthBiometric)value { + FLADAuthBiometricWrapper *pigeonResult = [[FLADAuthBiometricWrapper alloc] init]; pigeonResult.value = value; return pigeonResult; } -+ (FLAAuthBiometricWrapper *)fromList:(NSArray *)list { - FLAAuthBiometricWrapper *pigeonResult = [[FLAAuthBiometricWrapper alloc] init]; ++ (FLADAuthBiometricWrapper *)fromList:(NSArray *)list { + FLADAuthBiometricWrapper *pigeonResult = [[FLADAuthBiometricWrapper alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } -+ (nullable FLAAuthBiometricWrapper *)nullableFromList:(NSArray *)list { - return (list) ? [FLAAuthBiometricWrapper fromList:list] : nil; ++ (nullable FLADAuthBiometricWrapper *)nullableFromList:(NSArray *)list { + return (list) ? [FLADAuthBiometricWrapper fromList:list] : nil; } - (NSArray *)toList { return @[ @@ -196,39 +196,39 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { } @end -@interface FLALocalAuthApiCodecReader : FlutterStandardReader +@interface FLADLocalAuthApiCodecReader : FlutterStandardReader @end -@implementation FLALocalAuthApiCodecReader +@implementation FLADLocalAuthApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { case 128: - return [FLAAuthBiometricWrapper fromList:[self readValue]]; + return [FLADAuthBiometricWrapper fromList:[self readValue]]; case 129: - return [FLAAuthOptions fromList:[self readValue]]; + return [FLADAuthOptions fromList:[self readValue]]; case 130: - return [FLAAuthResultDetails fromList:[self readValue]]; + return [FLADAuthResultDetails fromList:[self readValue]]; case 131: - return [FLAAuthStrings fromList:[self readValue]]; + return [FLADAuthStrings fromList:[self readValue]]; default: return [super readValueOfType:type]; } } @end -@interface FLALocalAuthApiCodecWriter : FlutterStandardWriter +@interface FLADLocalAuthApiCodecWriter : FlutterStandardWriter @end -@implementation FLALocalAuthApiCodecWriter +@implementation FLADLocalAuthApiCodecWriter - (void)writeValue:(id)value { - if ([value isKindOfClass:[FLAAuthBiometricWrapper class]]) { + if ([value isKindOfClass:[FLADAuthBiometricWrapper class]]) { [self writeByte:128]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FLAAuthOptions class]]) { + } else if ([value isKindOfClass:[FLADAuthOptions class]]) { [self writeByte:129]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FLAAuthResultDetails class]]) { + } else if ([value isKindOfClass:[FLADAuthResultDetails class]]) { [self writeByte:130]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FLAAuthStrings class]]) { + } else if ([value isKindOfClass:[FLADAuthStrings class]]) { [self writeByte:131]; [self writeValue:[value toList]]; } else { @@ -237,40 +237,40 @@ static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { } @end -@interface FLALocalAuthApiCodecReaderWriter : FlutterStandardReaderWriter +@interface FLADLocalAuthApiCodecReaderWriter : FlutterStandardReaderWriter @end -@implementation FLALocalAuthApiCodecReaderWriter +@implementation FLADLocalAuthApiCodecReaderWriter - (FlutterStandardWriter *)writerWithData:(NSMutableData *)data { - return [[FLALocalAuthApiCodecWriter alloc] initWithData:data]; + return [[FLADLocalAuthApiCodecWriter alloc] initWithData:data]; } - (FlutterStandardReader *)readerWithData:(NSData *)data { - return [[FLALocalAuthApiCodecReader alloc] initWithData:data]; + return [[FLADLocalAuthApiCodecReader alloc] initWithData:data]; } @end -NSObject *FLALocalAuthApiGetCodec(void) { +NSObject *FLADLocalAuthApiGetCodec(void) { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FLALocalAuthApiCodecReaderWriter *readerWriter = - [[FLALocalAuthApiCodecReaderWriter alloc] init]; + FLADLocalAuthApiCodecReaderWriter *readerWriter = + [[FLADLocalAuthApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void SetUpFLALocalAuthApi(id binaryMessenger, - NSObject *api) { +void SetUpFLADLocalAuthApi(id binaryMessenger, + NSObject *api) { /// Returns true if this device supports authentication. { FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] initWithName:@"dev.flutter.pigeon.local_auth_darwin.LocalAuthApi.isDeviceSupported" binaryMessenger:binaryMessenger - codec:FLALocalAuthApiGetCodec()]; + codec:FLADLocalAuthApiGetCodec()]; if (api) { NSCAssert( [api respondsToSelector:@selector(isDeviceSupportedWithError:)], - @"FLALocalAuthApi api (%@) doesn't respond to @selector(isDeviceSupportedWithError:)", + @"FLADLocalAuthApi api (%@) doesn't respond to @selector(isDeviceSupportedWithError:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { FlutterError *error; @@ -288,10 +288,10 @@ void SetUpFLALocalAuthApi(id binaryMessenger, initWithName: @"dev.flutter.pigeon.local_auth_darwin.LocalAuthApi.deviceCanSupportBiometrics" binaryMessenger:binaryMessenger - codec:FLALocalAuthApiGetCodec()]; + codec:FLADLocalAuthApiGetCodec()]; if (api) { NSCAssert([api respondsToSelector:@selector(deviceCanSupportBiometricsWithError:)], - @"FLALocalAuthApi api (%@) doesn't respond to " + @"FLADLocalAuthApi api (%@) doesn't respond to " @"@selector(deviceCanSupportBiometricsWithError:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { @@ -309,15 +309,15 @@ void SetUpFLALocalAuthApi(id binaryMessenger, FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] initWithName:@"dev.flutter.pigeon.local_auth_darwin.LocalAuthApi.getEnrolledBiometrics" binaryMessenger:binaryMessenger - codec:FLALocalAuthApiGetCodec()]; + codec:FLADLocalAuthApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(getEnrolledBiometricsWithError:)], - @"FLALocalAuthApi api (%@) doesn't respond to @selector(getEnrolledBiometricsWithError:)", - api); + NSCAssert([api respondsToSelector:@selector(getEnrolledBiometricsWithError:)], + @"FLADLocalAuthApi api (%@) doesn't respond to " + @"@selector(getEnrolledBiometricsWithError:)", + api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { FlutterError *error; - NSArray *output = [api getEnrolledBiometricsWithError:&error]; + NSArray *output = [api getEnrolledBiometricsWithError:&error]; callback(wrapResult(output, error)); }]; } else { @@ -330,19 +330,19 @@ void SetUpFLALocalAuthApi(id binaryMessenger, FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] initWithName:@"dev.flutter.pigeon.local_auth_darwin.LocalAuthApi.authenticate" binaryMessenger:binaryMessenger - codec:FLALocalAuthApiGetCodec()]; + codec:FLADLocalAuthApiGetCodec()]; if (api) { NSCAssert([api respondsToSelector:@selector(authenticateWithOptions:strings:completion:)], - @"FLALocalAuthApi api (%@) doesn't respond to " + @"FLADLocalAuthApi api (%@) doesn't respond to " @"@selector(authenticateWithOptions:strings:completion:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; - FLAAuthOptions *arg_options = GetNullableObjectAtIndex(args, 0); - FLAAuthStrings *arg_strings = GetNullableObjectAtIndex(args, 1); + FLADAuthOptions *arg_options = GetNullableObjectAtIndex(args, 0); + FLADAuthStrings *arg_strings = GetNullableObjectAtIndex(args, 1); [api authenticateWithOptions:arg_options strings:arg_strings - completion:^(FLAAuthResultDetails *_Nullable output, + completion:^(FLADAuthResultDetails *_Nullable output, FlutterError *_Nullable error) { callback(wrapResult(output, error)); }]; diff --git a/packages/local_auth/local_auth_darwin/darwin/Tests/FLTLocalAuthPluginTests.m b/packages/local_auth/local_auth_darwin/darwin/Tests/FLALocalAuthPluginTests.m similarity index 82% rename from packages/local_auth/local_auth_darwin/darwin/Tests/FLTLocalAuthPluginTests.m rename to packages/local_auth/local_auth_darwin/darwin/Tests/FLALocalAuthPluginTests.m index 1e6f2d0e8d..786316835d 100644 --- a/packages/local_auth/local_auth_darwin/darwin/Tests/FLTLocalAuthPluginTests.m +++ b/packages/local_auth/local_auth_darwin/darwin/Tests/FLALocalAuthPluginTests.m @@ -14,7 +14,7 @@ static const NSTimeInterval kTimeout = 30.0; /** * A context factory that returns preset contexts. */ -@interface StubAuthContextFactory : NSObject +@interface StubAuthContextFactory : NSObject @property(copy, nonatomic) NSMutableArray *contexts; - (instancetype)initWithContexts:(NSArray *)contexts; @end @@ -40,10 +40,10 @@ static const NSTimeInterval kTimeout = 30.0; #pragma mark - -@interface FLTLocalAuthPluginTests : XCTestCase +@interface FLALocalAuthPluginTests : XCTestCase @end -@implementation FLTLocalAuthPluginTests +@implementation FLALocalAuthPluginTests - (void)setUp { self.continueAfterFailure = NO; @@ -51,12 +51,12 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testSuccessfullAuthWithBiometrics { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics; - FLAAuthStrings *strings = [self createAuthStrings]; + FLADAuthStrings *strings = [self createAuthStrings]; OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES); // evaluatePolicy:localizedReason:reply: calls back on an internal queue, which is not @@ -73,14 +73,14 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(backgroundThreadReplyCaller); XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"]; - [plugin authenticateWithOptions:[FLAAuthOptions makeWithBiometricOnly:YES - sticky:NO - useErrorDialogs:NO] + [plugin authenticateWithOptions:[FLADAuthOptions makeWithBiometricOnly:YES + sticky:NO + useErrorDialogs:NO] strings:strings - completion:^(FLAAuthResultDetails *_Nullable resultDetails, + completion:^(FLADAuthResultDetails *_Nullable resultDetails, FlutterError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); - XCTAssertEqual(resultDetails.result, FLAAuthResultSuccess); + XCTAssertEqual(resultDetails.result, FLADAuthResultSuccess); XCTAssertNil(error); [expectation fulfill]; }]; @@ -89,12 +89,12 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testSuccessfullAuthWithoutBiometrics { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; const LAPolicy policy = LAPolicyDeviceOwnerAuthentication; - FLAAuthStrings *strings = [self createAuthStrings]; + FLADAuthStrings *strings = [self createAuthStrings]; OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES); // evaluatePolicy:localizedReason:reply: calls back on an internal queue, which is not @@ -111,14 +111,14 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(backgroundThreadReplyCaller); XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"]; - [plugin authenticateWithOptions:[FLAAuthOptions makeWithBiometricOnly:NO - sticky:NO - useErrorDialogs:NO] + [plugin authenticateWithOptions:[FLADAuthOptions makeWithBiometricOnly:NO + sticky:NO + useErrorDialogs:NO] strings:strings - completion:^(FLAAuthResultDetails *_Nullable resultDetails, + completion:^(FLADAuthResultDetails *_Nullable resultDetails, FlutterError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); - XCTAssertEqual(resultDetails.result, FLAAuthResultSuccess); + XCTAssertEqual(resultDetails.result, FLADAuthResultSuccess); XCTAssertNil(error); [expectation fulfill]; }]; @@ -127,12 +127,12 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testFailedAuthWithBiometrics { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics; - FLAAuthStrings *strings = [self createAuthStrings]; + FLADAuthStrings *strings = [self createAuthStrings]; OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES); // evaluatePolicy:localizedReason:reply: calls back on an internal queue, which is not @@ -149,18 +149,18 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(backgroundThreadReplyCaller); XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"]; - [plugin authenticateWithOptions:[FLAAuthOptions makeWithBiometricOnly:YES - sticky:NO - useErrorDialogs:NO] + [plugin authenticateWithOptions:[FLADAuthOptions makeWithBiometricOnly:YES + sticky:NO + useErrorDialogs:NO] strings:strings - completion:^(FLAAuthResultDetails *_Nullable resultDetails, + completion:^(FLADAuthResultDetails *_Nullable resultDetails, FlutterError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); // TODO(stuartmorgan): Fix this; this was the pre-Pigeon-migration // behavior, so is preserved as part of the migration, but a failed // authentication should return failure, not an error that results in a // PlatformException. - XCTAssertEqual(resultDetails.result, FLAAuthResultErrorNotAvailable); + XCTAssertEqual(resultDetails.result, FLADAuthResultErrorNotAvailable); XCTAssertNil(error); [expectation fulfill]; }]; @@ -169,12 +169,12 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testFailedWithUnknownErrorCode { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; const LAPolicy policy = LAPolicyDeviceOwnerAuthentication; - FLAAuthStrings *strings = [self createAuthStrings]; + FLADAuthStrings *strings = [self createAuthStrings]; OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES); // evaluatePolicy:localizedReason:reply: calls back on an internal queue, which is not @@ -191,14 +191,14 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(backgroundThreadReplyCaller); XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"]; - [plugin authenticateWithOptions:[FLAAuthOptions makeWithBiometricOnly:NO - sticky:NO - useErrorDialogs:NO] + [plugin authenticateWithOptions:[FLADAuthOptions makeWithBiometricOnly:NO + sticky:NO + useErrorDialogs:NO] strings:strings - completion:^(FLAAuthResultDetails *_Nullable resultDetails, + completion:^(FLADAuthResultDetails *_Nullable resultDetails, FlutterError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); - XCTAssertEqual(resultDetails.result, FLAAuthResultErrorNotAvailable); + XCTAssertEqual(resultDetails.result, FLADAuthResultErrorNotAvailable); XCTAssertNil(error); [expectation fulfill]; }]; @@ -207,12 +207,12 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testSystemCancelledWithoutStickyAuth { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; const LAPolicy policy = LAPolicyDeviceOwnerAuthentication; - FLAAuthStrings *strings = [self createAuthStrings]; + FLADAuthStrings *strings = [self createAuthStrings]; OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES); // evaluatePolicy:localizedReason:reply: calls back on an internal queue, which is not @@ -229,14 +229,14 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(backgroundThreadReplyCaller); XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"]; - [plugin authenticateWithOptions:[FLAAuthOptions makeWithBiometricOnly:NO - sticky:NO - useErrorDialogs:NO] + [plugin authenticateWithOptions:[FLADAuthOptions makeWithBiometricOnly:NO + sticky:NO + useErrorDialogs:NO] strings:strings - completion:^(FLAAuthResultDetails *_Nullable resultDetails, + completion:^(FLADAuthResultDetails *_Nullable resultDetails, FlutterError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); - XCTAssertEqual(resultDetails.result, FLAAuthResultFailure); + XCTAssertEqual(resultDetails.result, FLADAuthResultFailure); XCTAssertNil(error); [expectation fulfill]; }]; @@ -245,12 +245,12 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testFailedAuthWithoutBiometrics { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; const LAPolicy policy = LAPolicyDeviceOwnerAuthentication; - FLAAuthStrings *strings = [self createAuthStrings]; + FLADAuthStrings *strings = [self createAuthStrings]; OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES); // evaluatePolicy:localizedReason:reply: calls back on an internal queue, which is not @@ -267,18 +267,18 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(backgroundThreadReplyCaller); XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"]; - [plugin authenticateWithOptions:[FLAAuthOptions makeWithBiometricOnly:NO - sticky:NO - useErrorDialogs:NO] + [plugin authenticateWithOptions:[FLADAuthOptions makeWithBiometricOnly:NO + sticky:NO + useErrorDialogs:NO] strings:strings - completion:^(FLAAuthResultDetails *_Nullable resultDetails, + completion:^(FLADAuthResultDetails *_Nullable resultDetails, FlutterError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); // TODO(stuartmorgan): Fix this; this was the pre-Pigeon-migration // behavior, so is preserved as part of the migration, but a failed // authentication should return failure, not an error that results in a // PlatformException. - XCTAssertEqual(resultDetails.result, FLAAuthResultErrorNotAvailable); + XCTAssertEqual(resultDetails.result, FLADAuthResultErrorNotAvailable); XCTAssertNil(error); [expectation fulfill]; }]; @@ -287,12 +287,12 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testLocalizedFallbackTitle { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; const LAPolicy policy = LAPolicyDeviceOwnerAuthentication; - FLAAuthStrings *strings = [self createAuthStrings]; + FLADAuthStrings *strings = [self createAuthStrings]; strings.localizedFallbackTitle = @"a title"; OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES); @@ -310,11 +310,11 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(backgroundThreadReplyCaller); XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"]; - [plugin authenticateWithOptions:[FLAAuthOptions makeWithBiometricOnly:NO - sticky:NO - useErrorDialogs:NO] + [plugin authenticateWithOptions:[FLADAuthOptions makeWithBiometricOnly:NO + sticky:NO + useErrorDialogs:NO] strings:strings - completion:^(FLAAuthResultDetails *_Nullable resultDetails, + completion:^(FLADAuthResultDetails *_Nullable resultDetails, FlutterError *_Nullable error) { OCMVerify([mockAuthContext setLocalizedFallbackTitle:strings.localizedFallbackTitle]); @@ -325,12 +325,12 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testSkippedLocalizedFallbackTitle { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; const LAPolicy policy = LAPolicyDeviceOwnerAuthentication; - FLAAuthStrings *strings = [self createAuthStrings]; + FLADAuthStrings *strings = [self createAuthStrings]; strings.localizedFallbackTitle = nil; OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES); @@ -348,11 +348,11 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(backgroundThreadReplyCaller); XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"]; - [plugin authenticateWithOptions:[FLAAuthOptions makeWithBiometricOnly:NO - sticky:NO - useErrorDialogs:NO] + [plugin authenticateWithOptions:[FLADAuthOptions makeWithBiometricOnly:NO + sticky:NO + useErrorDialogs:NO] strings:strings - completion:^(FLAAuthResultDetails *_Nullable resultDetails, + completion:^(FLADAuthResultDetails *_Nullable resultDetails, FlutterError *_Nullable error) { OCMVerify([mockAuthContext setLocalizedFallbackTitle:nil]); [expectation fulfill]; @@ -362,7 +362,7 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testDeviceSupportsBiometrics_withEnrolledHardware { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; @@ -377,7 +377,7 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testDeviceSupportsBiometrics_withNonEnrolledHardware { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; @@ -404,7 +404,7 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testDeviceSupportsBiometrics_withNoBiometricHardware { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; @@ -431,7 +431,7 @@ static const NSTimeInterval kTimeout = 30.0; - (void)testGetEnrolledBiometricsWithFaceID { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; @@ -440,15 +440,15 @@ static const NSTimeInterval kTimeout = 30.0; OCMStub([mockAuthContext biometryType]).andReturn(LABiometryTypeFaceID); FlutterError *error; - NSArray *result = [plugin getEnrolledBiometricsWithError:&error]; + NSArray *result = [plugin getEnrolledBiometricsWithError:&error]; XCTAssertEqual([result count], 1); - XCTAssertEqual(result[0].value, FLAAuthBiometricFace); + XCTAssertEqual(result[0].value, FLADAuthBiometricFace); XCTAssertNil(error); } - (void)testGetEnrolledBiometricsWithTouchID { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; @@ -457,15 +457,15 @@ static const NSTimeInterval kTimeout = 30.0; OCMStub([mockAuthContext biometryType]).andReturn(LABiometryTypeTouchID); FlutterError *error; - NSArray *result = [plugin getEnrolledBiometricsWithError:&error]; + NSArray *result = [plugin getEnrolledBiometricsWithError:&error]; XCTAssertEqual([result count], 1); - XCTAssertEqual(result[0].value, FLAAuthBiometricFingerprint); + XCTAssertEqual(result[0].value, FLADAuthBiometricFingerprint); XCTAssertNil(error); } - (void)testGetEnrolledBiometricsWithoutEnrolledHardware { id mockAuthContext = OCMClassMock([LAContext class]); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; @@ -485,7 +485,7 @@ static const NSTimeInterval kTimeout = 30.0; .andDo(canEvaluatePolicyHandler); FlutterError *error; - NSArray *result = [plugin getEnrolledBiometricsWithError:&error]; + NSArray *result = [plugin getEnrolledBiometricsWithError:&error]; XCTAssertEqual([result count], 0); XCTAssertNil(error); } @@ -495,7 +495,7 @@ static const NSTimeInterval kTimeout = 30.0; OCMStub([mockAuthContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:[OCMArg setTo:nil]]) .andReturn(YES); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; @@ -510,7 +510,7 @@ static const NSTimeInterval kTimeout = 30.0; OCMStub([mockAuthContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:[OCMArg setTo:nil]]) .andReturn(NO); - FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] + FLALocalAuthPlugin *plugin = [[FLALocalAuthPlugin alloc] initWithContextFactory:[[StubAuthContextFactory alloc] initWithContexts:@[ mockAuthContext ]]]; @@ -520,13 +520,13 @@ static const NSTimeInterval kTimeout = 30.0; XCTAssertNil(error); } -// Creates an FLAAuthStrings with placeholder values. -- (FLAAuthStrings *)createAuthStrings { - return [FLAAuthStrings makeWithReason:@"a reason" - lockOut:@"locked out" - goToSettingsButton:@"Go To Settings" - goToSettingsDescription:@"Settings" - cancelButton:@"Cancel" - localizedFallbackTitle:nil]; +// Creates an FLADAuthStrings with placeholder values. +- (FLADAuthStrings *)createAuthStrings { + return [FLADAuthStrings makeWithReason:@"a reason" + lockOut:@"locked out" + goToSettingsButton:@"Go To Settings" + goToSettingsDescription:@"Settings" + cancelButton:@"Cancel" + localizedFallbackTitle:nil]; } @end diff --git a/packages/local_auth/local_auth_darwin/example/ios/Runner.xcodeproj/project.pbxproj b/packages/local_auth/local_auth_darwin/example/ios/Runner.xcodeproj/project.pbxproj index 8ee93b5909..8ef2595364 100644 --- a/packages/local_auth/local_auth_darwin/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/local_auth/local_auth_darwin/example/ios/Runner.xcodeproj/project.pbxproj @@ -9,7 +9,7 @@ /* Begin PBXBuildFile section */ 0CCCD07A2CE24E13C9C1EEA4 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D274A3F79473B1549B2BBD5 /* libPods-Runner.a */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3398D2E426164AD8005A052F /* FLTLocalAuthPluginTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3398D2E326164AD8005A052F /* FLTLocalAuthPluginTests.m */; }; + 3398D2E426164AD8005A052F /* FLALocalAuthPluginTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3398D2E326164AD8005A052F /* FLALocalAuthPluginTests.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 691CB38B382734AF80FBCA4C /* libPods-RunnerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBFA21B380E07A3A585383D /* libPods-RunnerTests.a */; }; 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; @@ -49,7 +49,7 @@ 3398D2D126163948005A052F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3398D2DC261649CD005A052F /* liblocal_auth.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = liblocal_auth.a; sourceTree = BUILT_PRODUCTS_DIR; }; 3398D2DF26164A03005A052F /* liblocal_auth.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = liblocal_auth.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 3398D2E326164AD8005A052F /* FLTLocalAuthPluginTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FLTLocalAuthPluginTests.m; path = ../../darwin/Tests/FLTLocalAuthPluginTests.m; sourceTree = SOURCE_ROOT; }; + 3398D2E326164AD8005A052F /* FLALocalAuthPluginTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FLALocalAuthPluginTests.m; path = ../../darwin/Tests/FLALocalAuthPluginTests.m; sourceTree = SOURCE_ROOT; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 658CDD04B21E4EA92F8EF229 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -93,7 +93,7 @@ 33BF11D226680B2E002967F3 /* RunnerTests */ = { isa = PBXGroup; children = ( - 3398D2E326164AD8005A052F /* FLTLocalAuthPluginTests.m */, + 3398D2E326164AD8005A052F /* FLALocalAuthPluginTests.m */, 3398D2D126163948005A052F /* Info.plist */, ); path = RunnerTests; @@ -227,7 +227,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 3398D2CC26163948005A052F = { @@ -377,7 +377,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3398D2E426164AD8005A052F /* FLTLocalAuthPluginTests.m in Sources */, + 3398D2E426164AD8005A052F /* FLALocalAuthPluginTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/packages/local_auth/local_auth_darwin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/local_auth/local_auth_darwin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index b17d9a05d4..7585dfca24 100644 --- a/packages/local_auth/local_auth_darwin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/local_auth/local_auth_darwin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@