Skip to content

Commit e130806

Browse files
authored
Implement FIRAppCheckSettings as subclass (#11597)
Added a class GACAppCheckSettings that conforms to GACAppCheckSettingsProtocol and implemented FIRAppCheckSettings as a subclass of it.
1 parent 632fcab commit e130806

File tree

5 files changed

+46
-12
lines changed

5 files changed

+46
-12
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright 2023 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckSettings.h"
18+
19+
NS_ASSUME_NONNULL_BEGIN
20+
21+
@implementation GACAppCheckSettings
22+
23+
@synthesize isTokenAutoRefreshEnabled = _isTokenAutoRefreshEnabled;
24+
25+
@end
26+
27+
NS_ASSUME_NONNULL_END

AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckSettings.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,11 @@ NS_SWIFT_NAME(AppCheckCoreSettingsProtocol)
2323
@protocol GACAppCheckSettingsProtocol <NSObject>
2424

2525
/// If App Check token auto-refresh is enabled.
26-
@property(nonatomic, readonly) BOOL isTokenAutoRefreshEnabled;
26+
@property(nonatomic, assign) BOOL isTokenAutoRefreshEnabled;
2727

2828
@end
2929

30+
@interface GACAppCheckSettings : NSObject <GACAppCheckSettingsProtocol>
31+
@end
32+
3033
NS_ASSUME_NONNULL_END

FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ FOUNDATION_EXPORT NSString *const kFIRAppCheckTokenAutoRefreshEnabledUserDefault
2626
FOUNDATION_EXPORT NSString *const kFIRAppCheckTokenAutoRefreshEnabledInfoPlistKey;
2727

2828
/// Handles storing and updating the Firebase app check wide settings and parameters.
29-
@interface FIRAppCheckSettings : NSObject <GACAppCheckSettingsProtocol>
29+
@interface FIRAppCheckSettings : GACAppCheckSettings
3030

3131
/// If Firebase app check token auto-refresh is allowed.
3232
@property(nonatomic, assign) BOOL isTokenAutoRefreshEnabled;

FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.m

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ @interface FIRAppCheckSettings ()
3131
@property(nonatomic, readonly) NSUserDefaults *userDefaults;
3232
@property(nonatomic, readonly) NSBundle *mainBundle;
3333
@property(nonatomic, readonly) NSString *userDefaultKey;
34-
@property(nonatomic, nullable) NSNumber *isTokenAutoRefreshEnabledNumber;
34+
@property(nonatomic, assign) BOOL isTokenAutoRefreshConfigured;
3535

3636
@end
3737

@@ -47,16 +47,18 @@ - (instancetype)initWithApp:(FIRApp *)firebaseApp
4747
_mainBundle = mainBundle;
4848
_userDefaultKey = [kFIRAppCheckTokenAutoRefreshEnabledUserDefaultsPrefix
4949
stringByAppendingString:firebaseApp.name];
50+
[super setIsTokenAutoRefreshEnabled:NO];
51+
_isTokenAutoRefreshConfigured = NO;
5052
}
5153
return self;
5254
}
5355

5456
- (BOOL)isTokenAutoRefreshEnabled {
5557
@synchronized(self) {
56-
if (self.isTokenAutoRefreshEnabledNumber != nil) {
58+
if (self.isTokenAutoRefreshConfigured) {
5759
// Return value form the in-memory cache to avoid accessing the user default or bundle when
5860
// not required.
59-
return self.isTokenAutoRefreshEnabledNumber.boolValue;
61+
return [super isTokenAutoRefreshEnabled];
6062
}
6163

6264
// Check user defaults for a value set during the previous launch.
@@ -71,9 +73,10 @@ - (BOOL)isTokenAutoRefreshEnabled {
7173

7274
if (isTokenAutoRefreshEnabledNumber != nil) {
7375
// Update in-memory cache.
74-
self.isTokenAutoRefreshEnabledNumber = isTokenAutoRefreshEnabledNumber;
76+
self.isTokenAutoRefreshConfigured = YES;
77+
self.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabledNumber.boolValue;
7578
// Return the value.
76-
return isTokenAutoRefreshEnabledNumber.boolValue;
79+
return [super isTokenAutoRefreshEnabled];
7780
}
7881

7982
// Fallback to the global data collection flag.
@@ -89,8 +92,9 @@ - (BOOL)isTokenAutoRefreshEnabled {
8992

9093
- (void)setIsTokenAutoRefreshEnabled:(BOOL)isTokenAutoRefreshEnabled {
9194
@synchronized(self) {
92-
self.isTokenAutoRefreshEnabledNumber = @(isTokenAutoRefreshEnabled);
93-
[self.userDefaults setObject:self.isTokenAutoRefreshEnabledNumber forKey:self.userDefaultKey];
95+
self.isTokenAutoRefreshConfigured = YES;
96+
[super setIsTokenAutoRefreshEnabled:isTokenAutoRefreshEnabled];
97+
[self.userDefaults setBool:isTokenAutoRefreshEnabled forKey:self.userDefaultKey];
9498
}
9599
}
96100

FirebaseAppCheck/Tests/Unit/Core/FIRAppCheckSettingsTests.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ - (void)testIsTokenAutoRefreshEnabledWhenSetThisAppRun {
104104
OCMReject([self.mockApp isDataCollectionDefaultEnabled]);
105105

106106
// 1.4. Expect the new value to be saved to the user defaults.
107-
OCMExpect([self.mockUserDefaults setObject:@(newFlagValue) forKey:self.userDefaultKey]);
107+
OCMExpect([self.mockUserDefaults setBool:newFlagValue forKey:self.userDefaultKey]);
108108

109109
// 2. Set flag value.
110110
self.settings.isTokenAutoRefreshEnabled = newFlagValue;
@@ -206,7 +206,7 @@ - (void)testIsTokenAutoRefreshEnabledWhenAppDeallocated {
206206
- (void)testSetIsTokenAutoRefreshEnabled {
207207
// 1. Set first time.
208208
// 1.1. Expect the new value to be saved to the user defaults.
209-
OCMExpect([self.mockUserDefaults setObject:@(YES) forKey:self.userDefaultKey]);
209+
OCMExpect([self.mockUserDefaults setBool:YES forKey:self.userDefaultKey]);
210210

211211
// 1.2 Set.
212212
self.settings.isTokenAutoRefreshEnabled = YES;
@@ -217,7 +217,7 @@ - (void)testSetIsTokenAutoRefreshEnabled {
217217

218218
// 2. Set second time.
219219
// 2.1. Expect the new value to be saved to the user defaults.
220-
OCMExpect([self.mockUserDefaults setObject:@(NO) forKey:self.userDefaultKey]);
220+
OCMExpect([self.mockUserDefaults setBool:NO forKey:self.userDefaultKey]);
221221

222222
// 2.2 Set.
223223
self.settings.isTokenAutoRefreshEnabled = NO;

0 commit comments

Comments
 (0)