Skip to content

Commit 41877bd

Browse files
[IID removal]Move Checkin unit tests from InstanceID to Messaging (#7603)
Co-authored-by: Maksym Malyhin <mmaksym@google.com>
1 parent 5df1836 commit 41877bd

18 files changed

+1243
-34
lines changed

FirebaseMessaging.podspec

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ device, and it is completely free.
3636
'Firebase/InstanceID/Public/*.h',
3737
'FirebaseInstallations/Source/Library/Private/*.h',
3838
]
39-
s.requires_arc = [
40-
base_dir + 'Sources/*.m',
41-
base_dir + 'Sources/Token/*.m'
42-
]
39+
4340
s.public_header_files = base_dir + 'Sources/Public/FirebaseMessaging/*.h'
4441
s.library = 'sqlite3'
4542
s.pod_target_xcconfig = {
@@ -61,7 +58,11 @@ device, and it is completely free.
6158
s.test_spec 'unit' do |unit_tests|
6259
unit_tests.scheme = { :code_coverage => true }
6360
unit_tests.platforms = {:ios => '10.0', :osx => '10.12', :tvos => '10.0'}
64-
unit_tests.source_files = 'FirebaseMessaging/Tests/UnitTests*/*.{m,h,swift}'
61+
unit_tests.source_files = [
62+
'FirebaseMessaging/Tests/UnitTests*/*.{m,h,swift}',
63+
'SharedTestUtilities/URLSession/*.[mh]',
64+
]
65+
6566
unit_tests.requires_app_host = true
6667
unit_tests.pod_target_xcconfig = {
6768
'CLANG_ENABLE_OBJC_WEAK' => 'YES'

FirebaseMessaging/Sources/FIRMessaging.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
#endif
2121

2222
#import "FirebaseMessaging/Sources/Public/FirebaseMessaging/FIRMessaging.h"
23+
#import <GoogleUtilities/GULAppDelegateSwizzler.h>
24+
#import <GoogleUtilities/GULAppEnvironmentUtil.h>
25+
#import <GoogleUtilities/GULReachabilityChecker.h>
26+
#import <GoogleUtilities/GULUserDefaults.h>
2327
#import "Firebase/InstanceID/Private/FIRInstanceID_Private.h"
2428
#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h"
2529
#import "FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FirebaseInstallations.h"
2630
#import "FirebaseMessaging/Sources/Interop/FIRMessagingInterop.h"
2731
#import "FirebaseMessaging/Sources/Public/FirebaseMessaging/FIRMessagingExtensionHelper.h"
28-
#import "GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULAppDelegateSwizzler.h"
29-
#import "GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h"
30-
#import "GoogleUtilities/Reachability/Public/GoogleUtilities/GULReachabilityChecker.h"
31-
#import "GoogleUtilities/UserDefaults/Public/GoogleUtilities/GULUserDefaults.h"
3232
#import "Interop/Analytics/Public/FIRAnalyticsInterop.h"
3333

3434
#import "FirebaseMessaging/Sources/FIRMessagingAnalytics.h"

FirebaseMessaging/Sources/FIRMessagingPubSub.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
#import "FirebaseMessaging/Sources/FIRMessagingPubSub.h"
1818

19+
#import <GoogleUtilities/GULSecureCoding.h>
20+
#import <GoogleUtilities/GULUserDefaults.h>
1921
#import "Firebase/InstanceID/Private/FIRInstanceID_Private.h"
2022
#import "FirebaseMessaging/Sources/Public/FirebaseMessaging/FIRMessaging.h"
21-
#import "GoogleUtilities/Environment/Public/GoogleUtilities/GULSecureCoding.h"
22-
#import "GoogleUtilities/UserDefaults/Public/GoogleUtilities/GULUserDefaults.h"
2323

2424
#import "FirebaseMessaging/Sources/FIRMessagingDefines.h"
2525
#import "FirebaseMessaging/Sources/FIRMessagingLogger.h"

FirebaseMessaging/Sources/FIRMessagingUtilities.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
#import "FirebaseMessaging/Sources/FIRMessagingUtilities.h"
1818

19+
#import <GoogleUtilities/GULAppEnvironmentUtil.h>
20+
#import <GoogleUtilities/GULUserDefaults.h>
1921
#import "FirebaseCore/Sources/Public/FirebaseCore/FIROptions.h"
2022
#import "FirebaseMessaging/Sources/FIRMessagingLogger.h"
21-
#import "GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h"
22-
#import "GoogleUtilities/UserDefaults/Public/GoogleUtilities/GULUserDefaults.h"
2323

2424
static const uint64_t kBytesToMegabytesDivisor = 1024 * 1024LL;
2525
NSString *const kFIRMessagingInstanceIDUserDefaultsKeyLocale =

FirebaseMessaging/Sources/Token/FIRMessagingCheckinPreferences.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
#import "FirebaseMessaging/Sources/Token/FIRMessagingCheckinPreferences.h"
1818

19+
#import <GoogleUtilities/GULUserDefaults.h>
1920
#import "FirebaseMessaging/Sources/FIRMessagingUtilities.h"
2021
#import "FirebaseMessaging/Sources/Token/FIRMessagingCheckinService.h"
21-
#import "GoogleUtilities/UserDefaults/Public/GoogleUtilities/GULUserDefaults.h"
2222

2323
const NSTimeInterval kFIRMessagingDefaultCheckinInterval = 7 * 24 * 60 * 60; // 7 days.
2424
static NSString *const kCheckinKeychainContentSeparatorString = @"|";

FirebaseMessaging/Sources/Token/FIRMessagingCheckinService.m

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616

1717
#import "FirebaseMessaging/Sources/Token/FIRMessagingCheckinService.h"
1818

19+
#import <GoogleUtilities/GULAppEnvironmentUtil.h>
1920
#import "FirebaseMessaging/Sources/FIRMessagingDefines.h"
2021
#import "FirebaseMessaging/Sources/FIRMessagingLogger.h"
2122
#import "FirebaseMessaging/Sources/FIRMessagingUtilities.h"
2223
#import "FirebaseMessaging/Sources/NSError+FIRMessaging.h"
2324
#import "FirebaseMessaging/Sources/Token/FIRMessagingAuthService.h"
2425
#import "FirebaseMessaging/Sources/Token/FIRMessagingCheckinPreferences.h"
25-
#import "GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h"
2626

2727
static NSString *const kDeviceCheckinURL = @"https://device-provisioning.googleapis.com/checkin";
2828

@@ -39,19 +39,44 @@
3939
static NSUInteger const kCheckinVersion = 2;
4040
static NSUInteger const kFragment = 0;
4141

42-
@interface FIRMessagingCheckinService () {
43-
NSURLSession *_session;
44-
}
42+
@interface FIRMessagingCheckinService ()
43+
44+
@property(nonatomic, readwrite, strong) NSURLSession *session;
45+
4546
@end
4647

4748
@implementation FIRMessagingCheckinService
4849

50+
- (instancetype)init {
51+
self = [super init];
52+
if (self) {
53+
// Create an URLSession once, even though checkin should happen about once a day
54+
NSURLSessionConfiguration *config = NSURLSessionConfiguration.defaultSessionConfiguration;
55+
config.timeoutIntervalForResource = 60.0f; // 1 minute
56+
config.allowsCellularAccess = YES;
57+
58+
self.session = [NSURLSession sessionWithConfiguration:config];
59+
self.session.sessionDescription = @"com.google.iid-checkin";
60+
}
61+
return self;
62+
}
4963
- (void)dealloc {
50-
[_session invalidateAndCancel];
64+
[self.session invalidateAndCancel];
5165
}
5266

5367
- (void)checkinWithExistingCheckin:(FIRMessagingCheckinPreferences *)existingCheckin
5468
completion:(FIRMessagingDeviceCheckinCompletion)completion {
69+
if (self.session == nil) {
70+
FIRMessagingLoggerError(kFIRMessagingMessageCodeService005,
71+
@"Inconsistent state: NSURLSession has been invalidated");
72+
NSError *error =
73+
[NSError messagingErrorWithCode:kFIRMessagingErrorCodeRegistrarFailedToCheckIn
74+
failureReason:@"Failed to checkin. NSURLSession is invalid."];
75+
if (completion) {
76+
completion(nil, error);
77+
}
78+
return;
79+
}
5580
NSURL *url = [NSURL URLWithString:kDeviceCheckinURL];
5681
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
5782
[request setValue:@"application/json" forHTTPHeaderField:@"content-type"];
@@ -149,18 +174,15 @@ - (void)checkinWithExistingCheckin:(FIRMessagingCheckinPreferences *)existingChe
149174
completion(checkinPreferences, nil);
150175
}
151176
};
152-
NSURLSessionConfiguration *config = NSURLSessionConfiguration.defaultSessionConfiguration;
153-
config.timeoutIntervalForResource = 60.0f; // 1 minute
154-
_session = [NSURLSession sessionWithConfiguration:config];
155-
_session.sessionDescription = @"com.google.iid-checkin";
156-
NSURLSessionDataTask *task = [_session dataTaskWithRequest:request completionHandler:handler];
177+
178+
NSURLSessionDataTask *task = [self.session dataTaskWithRequest:request completionHandler:handler];
157179
[task resume];
158180
}
159181

160182
- (void)stopFetching {
161-
[_session invalidateAndCancel];
183+
[self.session invalidateAndCancel];
162184
// The session cannot be reused after invalidation. Dispose it to prevent accident reusing.
163-
_session = nil;
185+
self.session = nil;
164186
}
165187

166188
#pragma mark - Private

FirebaseMessaging/Sources/Token/FIRMessagingTokenOperation.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616

1717
#import "FirebaseMessaging/Sources/Token/FIRMessagingTokenOperation.h"
1818

19+
#import <GoogleUtilities/GULAppEnvironmentUtil.h>
1920
#import "FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h"
2021
#import "FirebaseMessaging/Sources/FIRMessagingLogger.h"
2122
#import "FirebaseMessaging/Sources/FIRMessagingUtilities.h"
2223
#import "FirebaseMessaging/Sources/FIRMessaging_Private.h"
2324
#import "FirebaseMessaging/Sources/NSError+FIRMessaging.h"
2425
#import "FirebaseMessaging/Sources/Token/FIRMessagingCheckinPreferences.h"
25-
#import "GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h"
2626

2727
static const NSInteger kFIRMessagingPlatformVersionIOS = 2;
2828

FirebaseMessaging/Tests/UnitTests/FIRMessagingAuthKeychainTest.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
*/
1616

1717
#import <TargetConditionals.h>
18-
#if !TARGET_OS_MACCATALYST && !TARGET_OS_IOS
19-
// Skip keychain tests on Catalyst and iOS
18+
#if !TARGET_OS_MACCATALYST && !SWIFT_PACKAGE
19+
// Skip keychain tests on Catalyst and swift package
2020

2121
#import <XCTest/XCTest.h>
2222
#import "OCMock.h"

0 commit comments

Comments
 (0)