Skip to content

Commit 650bff1

Browse files
committed
Initial commit
1 parent b9a771f commit 650bff1

15 files changed

+399
-221
lines changed

Branch-TestBed/Branch-SDK-Tests/BNCPreferenceHelperTests.m

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -241,24 +241,24 @@ - (void)testURLSkipList {
241241
XCTAssert([filterDesc isEqualToString:valueDesc]);
242242
}
243243

244-
- (void)testReferrerGBRAIDValidityWindow {
245-
246-
NSTimeInterval DEFAULT_REFERRER_GBRAID_WINDOW = 2592000;
247-
248-
XCTAssertEqual(self.prefHelper.referrerGBRAIDValidityWindow, DEFAULT_REFERRER_GBRAID_WINDOW);
249-
250-
NSTimeInterval randomNumber = 9000;
251-
self.prefHelper.referrerGBRAIDValidityWindow = randomNumber;
252-
XCTAssertEqual(self.prefHelper.referrerGBRAIDValidityWindow, randomNumber);
253-
254-
NSString *gbraidValue = @"CjwKCAiA3L6PBhBvEiwAINlJ9Chixm216y8kYYJ1K94dm4FEkOgFfhIdKQdjWsYB7FqE7rf_zkGNEhoCuIEQAvD_BwE";
255-
self.prefHelper.referrerGBRAID = gbraidValue;
256-
XCTAssertTrue([self.prefHelper.referrerGBRAID isEqualToString:gbraidValue]);
257-
258-
NSDate *now = [NSDate date];
259-
self.prefHelper.referrerGBRAIDInitDate = now;
260-
XCTAssertEqual(self.prefHelper.referrerGBRAIDInitDate, now);
261-
262-
}
244+
//- (void)testReferrerGBRAIDValidityWindow {
245+
//
246+
// NSTimeInterval DEFAULT_REFERRER_GBRAID_WINDOW = 2592000;
247+
//
248+
// XCTAssertEqual(self.prefHelper.referrerGBRAIDValidityWindow, DEFAULT_REFERRER_GBRAID_WINDOW);
249+
//
250+
// NSTimeInterval randomNumber = 9000;
251+
// self.prefHelper.referrerGBRAIDValidityWindow = randomNumber;
252+
// XCTAssertEqual(self.prefHelper.referrerGBRAIDValidityWindow, randomNumber);
253+
//
254+
// NSString *gbraidValue = @"CjwKCAiA3L6PBhBvEiwAINlJ9Chixm216y8kYYJ1K94dm4FEkOgFfhIdKQdjWsYB7FqE7rf_zkGNEhoCuIEQAvD_BwE";
255+
// self.prefHelper.referrerGBRAID = gbraidValue;
256+
// XCTAssertTrue([self.prefHelper.referrerGBRAID isEqualToString:gbraidValue]);
257+
//
258+
// NSDate *now = [NSDate date];
259+
// self.prefHelper.referrerGBRAIDInitDate = now;
260+
// XCTAssertEqual(self.prefHelper.referrerGBRAIDInitDate, now);
261+
//
262+
//}
263263

264264
@end

Branch-TestBed/Branch-SDK-Tests/BNCReferringURLUtilityTests.m

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,79 @@
88

99
#import <XCTest/XCTest.h>
1010
#import "BNCReferringURLUtility.h"
11+
#import "BNCUrlQueryParameter.h"
12+
13+
@interface BNCReferringURLUtility(Test)
14+
15+
- (NSMutableDictionary<NSString *, BNCUrlQueryParameter *> *)deserializeFromJson:(NSDictionary *)json;
16+
- (NSMutableDictionary *)serializeToJson:(NSMutableDictionary<NSString *, BNCUrlQueryParameter *> *)urlQueryParameters;
17+
- (NSTimeInterval)defaultValidityWindowForParam:(NSString *)paramName;
18+
- (BNCUrlQueryParameter *)findUrlQueryParam:(NSString *)paramName;
19+
- (BOOL)isSupportedQueryParameter:(NSString *)param;
20+
- (NSDictionary *)addGbraidValuesFor:(NSString *)endpoint
21+
- (NSString *)addGclidValueFor:(NSString *)endpoint
22+
23+
@end
1124

1225
@interface BNCReferringURLUtilityTests : XCTestCase
1326

1427
@end
1528

1629
@implementation BNCReferringURLUtilityTests
1730

18-
- (void)setUp {
19-
// Put setup code here. This method is called before the invocation of each test method in the class.
31+
//- (void)setUp {
32+
// // Put setup code here. This method is called before the invocation of each test method in the class.
33+
//}
34+
//
35+
//- (void)tearDown {
36+
// // Put teardown code here. This method is called after the invocation of each test method in the class.
37+
//}
38+
39+
- (void)testParseURL {
40+
NSURL *url = [NSURL URLWithString:@"https://www.branch.io?gbraid=abc123&test=456&gclid=123456789abc"];
41+
42+
BNCReferringURLUtility *utility = [BNCReferringURLUtility new];
43+
[utility parseReferringURL:url];
44+
45+
//TODO: Check that gbraid and gclid exist
46+
2047
}
2148

22-
- (void)tearDown {
23-
// Put teardown code here. This method is called after the invocation of each test method in the class.
49+
-(void)testGetEventURLQueryParams {
50+
NSString *endpoint = @"/v2/event";
51+
NSURL *url = [NSURL URLWithString:@"https://www.branch.io?gbraid=abc123&test=456&gclid=123456789abc"];
52+
53+
BNCReferringURLUtility *utility = [BNCReferringURLUtility new];
54+
[utility parseReferringURL:url];
55+
56+
NSDictionary *params = [utility getURLQueryParamsForRequest:endpoint];
57+
NSDictionary *expectedParams = @{@"gbraid": @"abc123",
58+
@"gbraid_timestamp": params[@"gbraid_timestamp"],
59+
@"gclid": @"123456789abc"};
60+
NSLog(@"Event Params: %@", params);
61+
NSLog(@"Expected Params: %@", expectedParams);
62+
63+
XCTAssertEqualObjects(params, expectedParams);
2464
}
2565

26-
- (void)testExample {
27-
NSURL *url = [NSURL URLWithString:@"https://www.google.com?gbraid=a123&test=456"];
66+
-(void)testGetOpenURLQueryParams {
67+
NSString *endpoint = @"/v1/open";
68+
69+
NSURL *url = [NSURL URLWithString:@"https://www.branch.io?gbraid=abc123&test=456&gclid=123456789abc"];
2870

2971
BNCReferringURLUtility *utility = [BNCReferringURLUtility new];
3072
[utility parseReferringURL:url];
73+
74+
NSDictionary *params = [utility getURLQueryParamsForRequest:endpoint];
75+
NSDictionary *expectedParams = @{@"gbraid": @"abc123",
76+
@"gbraid_timestamp": params[@"gbraid_timestamp"],
77+
@"is_deeplink_gbraid": @YES,
78+
@"gclid": @"123456789abc"};
79+
80+
NSLog(@"Open Params: %@", params);
81+
NSLog(@"Expected Params: %@", expectedParams);
82+
83+
XCTAssertEqualObjects(params, expectedParams);
3184
}
3285

3386
@end

Branch-TestBed/Branch-SDK-Tests/BNCServerInterface.Test.m

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -423,53 +423,53 @@ - (void)testRequestIdFromHeader {
423423
[self waitForExpectationsWithTimeout:5.0 handler:nil];
424424
}
425425

426-
- (void) testServerInterfaceDictionaryPrepForGbraid {
427-
428-
[HTTPStubs removeAllStubs];
429-
430-
BNCServerInterface *serverInterface = [[BNCServerInterface alloc] init];
431-
serverInterface.preferenceHelper = [BNCPreferenceHelper sharedInstance];
432-
serverInterface.preferenceHelper.retryCount = 3;
433-
serverInterface.requestEndpoint = @"/v2/event/standard";
434-
435-
[BNCPreferenceHelper sharedInstance].randomizedBundleToken = @"575759106028389737";
436-
437-
// Set referrerGBRAID and referrerGBRAIDInitDate
438-
NSString *gbraidValue = @"CjwKCAiA3L6PBhBvEiwAINlJ9Chixm216y8kYYJ1K94dm4FEkOgFfhIdKQdjWsYB7FqE7rf_zkGNEhoCuIEQAvD_BwE";
439-
[BNCPreferenceHelper sharedInstance].referrerGBRAID = gbraidValue;
440-
NSDate *now = [NSDate date];
441-
[BNCPreferenceHelper sharedInstance].referrerGBRAIDInitDate = now;
442-
443-
//Check - gbraid should be present
444-
NSMutableDictionary *result = [serverInterface prepareParamDict:NULL key:@"1234567890" retryNumber:3 requestType:@"POST"];
445-
XCTAssertNotNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID]);
446-
XCTAssertTrue([[result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID] isEqualToString:gbraidValue]);
447-
448-
// Check for gbraid timestamp
449-
XCTAssertNotNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID_TIMESTAMP]);
450-
NSString *tsInMs = [NSString stringWithFormat:@"%lld", (long long)([now timeIntervalSince1970]*1000)];
451-
XCTAssertTrue([[result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID_TIMESTAMP] isEqualToString:tsInMs]);
452-
453-
//Check - gbraid should be present - endpoint is open
454-
serverInterface.requestEndpoint = @"/v1/open";
455-
result = [serverInterface prepareParamDict:NULL key:@"1234567890" retryNumber:3 requestType:@"POST"];
456-
XCTAssertNotNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID]);
457-
458-
//Check - gbraid should not be present - validity is expired
459-
NSDate *pastDate = [[NSDate date] dateByAddingTimeInterval:-2592001];
460-
[BNCPreferenceHelper sharedInstance].referrerGBRAIDInitDate = pastDate;
461-
serverInterface.requestEndpoint = @"/v2/event/standard";
462-
result = [serverInterface prepareParamDict:NULL key:@"1234567890" retryNumber:3 requestType:@"POST"];
463-
XCTAssertNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID]);
464-
465-
//Check - gbraid should be present. Date is reset
466-
[BNCPreferenceHelper sharedInstance].referrerGBRAIDInitDate = now;
467-
result = [serverInterface prepareParamDict:NULL key:@"1234567890" retryNumber:3 requestType:@"POST"];
468-
XCTAssertNotNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID]);
469-
XCTAssertTrue([[result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID] isEqualToString:gbraidValue]);
470-
471-
[BNCPreferenceHelper sharedInstance].referrerGBRAID = nil;
472-
473-
}
426+
//- (void) testServerInterfaceDictionaryPrepForGbraid {
427+
//
428+
// [HTTPStubs removeAllStubs];
429+
//
430+
// BNCServerInterface *serverInterface = [[BNCServerInterface alloc] init];
431+
// serverInterface.preferenceHelper = [BNCPreferenceHelper sharedInstance];
432+
// serverInterface.preferenceHelper.retryCount = 3;
433+
// serverInterface.requestEndpoint = @"/v2/event/standard";
434+
//
435+
// [BNCPreferenceHelper sharedInstance].randomizedBundleToken = @"575759106028389737";
436+
//
437+
// // Set referrerGBRAID and referrerGBRAIDInitDate
438+
// NSString *gbraidValue = @"CjwKCAiA3L6PBhBvEiwAINlJ9Chixm216y8kYYJ1K94dm4FEkOgFfhIdKQdjWsYB7FqE7rf_zkGNEhoCuIEQAvD_BwE";
439+
// [BNCPreferenceHelper sharedInstance].referrerGBRAID = gbraidValue;
440+
// NSDate *now = [NSDate date];
441+
// [BNCPreferenceHelper sharedInstance].referrerGBRAIDInitDate = now;
442+
//
443+
// //Check - gbraid should be present
444+
// NSMutableDictionary *result = [serverInterface prepareParamDict:NULL key:@"1234567890" retryNumber:3 requestType:@"POST"];
445+
// XCTAssertNotNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID]);
446+
// XCTAssertTrue([[result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID] isEqualToString:gbraidValue]);
447+
//
448+
// // Check for gbraid timestamp
449+
// XCTAssertNotNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID_TIMESTAMP]);
450+
// NSString *tsInMs = [NSString stringWithFormat:@"%lld", (long long)([now timeIntervalSince1970]*1000)];
451+
// XCTAssertTrue([[result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID_TIMESTAMP] isEqualToString:tsInMs]);
452+
//
453+
// //Check - gbraid should be present - endpoint is open
454+
// serverInterface.requestEndpoint = @"/v1/open";
455+
// result = [serverInterface prepareParamDict:NULL key:@"1234567890" retryNumber:3 requestType:@"POST"];
456+
// XCTAssertNotNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID]);
457+
//
458+
// //Check - gbraid should not be present - validity is expired
459+
// NSDate *pastDate = [[NSDate date] dateByAddingTimeInterval:-2592001];
460+
// [BNCPreferenceHelper sharedInstance].referrerGBRAIDInitDate = pastDate;
461+
// serverInterface.requestEndpoint = @"/v2/event/standard";
462+
// result = [serverInterface prepareParamDict:NULL key:@"1234567890" retryNumber:3 requestType:@"POST"];
463+
// XCTAssertNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID]);
464+
//
465+
// //Check - gbraid should be present. Date is reset
466+
// [BNCPreferenceHelper sharedInstance].referrerGBRAIDInitDate = now;
467+
// result = [serverInterface prepareParamDict:NULL key:@"1234567890" retryNumber:3 requestType:@"POST"];
468+
// XCTAssertNotNil([result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID]);
469+
// XCTAssertTrue([[result objectForKey:BRANCH_REQUEST_KEY_REFERRER_GBRAID] isEqualToString:gbraidValue]);
470+
//
471+
// [BNCPreferenceHelper sharedInstance].referrerGBRAID = nil;
472+
//
473+
//}
474474

475475
@end

Branch-TestBed/Branch-SDK-Tests/BranchEvent.Test.m

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,20 +132,20 @@ - (void) testEvent {
132132
expectedRequest[@"user_data"] = [[BNCDeviceInfo getInstance] v2dictionary];
133133

134134
// Add params for Gbraid
135-
BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper sharedInstance];
136-
if(preferenceHelper.referrerGBRAID){
137-
NSTimeInterval validityWindow = preferenceHelper.referrerGBRAIDValidityWindow;
138-
if (validityWindow) {
139-
NSDate *initDate = preferenceHelper.referrerGBRAIDInitDate ;
140-
NSDate *expirationDate = [initDate dateByAddingTimeInterval:validityWindow];
141-
NSDate *now = [NSDate date];
142-
if ([now compare:expirationDate] == NSOrderedAscending) {
143-
expectedRequest[BRANCH_REQUEST_KEY_REFERRER_GBRAID] = preferenceHelper.referrerGBRAID;
144-
long long timestampInMilliSec = (long long)([initDate timeIntervalSince1970] * 1000.0);
145-
expectedRequest[BRANCH_REQUEST_KEY_REFERRER_GBRAID_TIMESTAMP] = [NSString stringWithFormat:@"%lld", timestampInMilliSec];
146-
}
147-
}
148-
}
135+
// BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper sharedInstance];
136+
// if(preferenceHelper.referrerGBRAID){
137+
// NSTimeInterval validityWindow = preferenceHelper.referrerGBRAIDValidityWindow;
138+
// if (validityWindow) {
139+
// NSDate *initDate = preferenceHelper.referrerGBRAIDInitDate ;
140+
// NSDate *expirationDate = [initDate dateByAddingTimeInterval:validityWindow];
141+
// NSDate *now = [NSDate date];
142+
// if ([now compare:expirationDate] == NSOrderedAscending) {
143+
// expectedRequest[BRANCH_REQUEST_KEY_REFERRER_GBRAID] = preferenceHelper.referrerGBRAID;
144+
// long long timestampInMilliSec = (long long)([initDate timeIntervalSince1970] * 1000.0);
145+
// expectedRequest[BRANCH_REQUEST_KEY_REFERRER_GBRAID_TIMESTAMP] = [NSString stringWithFormat:@"%lld", timestampInMilliSec];
146+
// }
147+
// }
148+
// }
149149

150150
Branch *branch = [Branch getInstance:@"key_live_foo"];
151151
XCTestExpectation *expectation = [self expectationWithDescription:@"v2-event"];

Branch-TestBed/Branch-TestBed.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,8 @@
278278
C1CC888029BAA06600BDD2B5 /* BNCReferringURLUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = C1CC887E29BAA06600BDD2B5 /* BNCReferringURLUtility.m */; };
279279
C1CC888229BAAFC000BDD2B5 /* BNCReferringURLUtilityTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C1CC888129BAAFC000BDD2B5 /* BNCReferringURLUtilityTests.m */; };
280280
C1CC888529BAB10D00BDD2B5 /* BNCReferringURLUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = C1CC888329BAB0C600BDD2B5 /* BNCReferringURLUtility.m */; };
281+
C1CC888829C27E8000BDD2B5 /* BNCUrlQueryParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = C1CC888629C27E8000BDD2B5 /* BNCUrlQueryParameter.h */; };
282+
C1CC888929C27E8000BDD2B5 /* BNCUrlQueryParameter.m in Sources */ = {isa = PBXBuildFile; fileRef = C1CC888729C27E8000BDD2B5 /* BNCUrlQueryParameter.m */; };
281283
E2B9474A1D15D75000F2270D /* BNCCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = E2B947491D15D73900F2270D /* BNCCallbacks.h */; settings = {ATTRIBUTES = (Public, ); }; };
282284
E72489D228E40D0200DCD8FD /* PasteControlViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E72489D128E40D0200DCD8FD /* PasteControlViewController.m */; };
283285
E729974D28E2BBFA007D91B2 /* BranchPasteControl.h in Headers */ = {isa = PBXBuildFile; fileRef = E729974B28E2BBFA007D91B2 /* BranchPasteControl.h */; };
@@ -627,6 +629,8 @@
627629
C1CC888129BAAFC000BDD2B5 /* BNCReferringURLUtilityTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BNCReferringURLUtilityTests.m; sourceTree = "<group>"; };
628630
C1CC888329BAB0C600BDD2B5 /* BNCReferringURLUtility.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BNCReferringURLUtility.m; sourceTree = "<group>"; };
629631
C1CC888429BAB0E300BDD2B5 /* BNCReferringURLUtility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BNCReferringURLUtility.h; sourceTree = "<group>"; };
632+
C1CC888629C27E8000BDD2B5 /* BNCUrlQueryParameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BNCUrlQueryParameter.h; sourceTree = "<group>"; };
633+
C1CC888729C27E8000BDD2B5 /* BNCUrlQueryParameter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BNCUrlQueryParameter.m; sourceTree = "<group>"; };
630634
D258D2C41A794D64004A1C90 /* BranchActivityItemProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BranchActivityItemProvider.h; sourceTree = "<group>"; };
631635
D258D2C51A794D64004A1C90 /* BranchActivityItemProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BranchActivityItemProvider.m; sourceTree = "<group>"; };
632636
E2B947491D15D73900F2270D /* BNCCallbacks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BNCCallbacks.h; sourceTree = "<group>"; };
@@ -1085,6 +1089,8 @@
10851089
C10C61AC28248E5A00761D7E /* BNCQRCodeCache.m */,
10861090
C1CC887D29BAA06600BDD2B5 /* BNCReferringURLUtility.h */,
10871091
C1CC887E29BAA06600BDD2B5 /* BNCReferringURLUtility.m */,
1092+
C1CC888629C27E8000BDD2B5 /* BNCUrlQueryParameter.h */,
1093+
C1CC888729C27E8000BDD2B5 /* BNCUrlQueryParameter.m */,
10881094
);
10891095
name = BranchSDK;
10901096
path = ../BranchSDK;
@@ -1114,6 +1120,7 @@
11141120
4DCAC8011F426F7C00405D1D /* BNCCommerceEvent.h in Headers */,
11151121
4DCAC8021F426F7C00405D1D /* BNCConfig.h in Headers */,
11161122
4D59B5212006979C00F89FD5 /* BNCKeyChain.h in Headers */,
1123+
C1CC888829C27E8000BDD2B5 /* BNCUrlQueryParameter.h in Headers */,
11171124
4DCAC8091F426F7C00405D1D /* BNCLinkCache.h in Headers */,
11181125
4DCAC80A1F426F7C00405D1D /* BNCLinkData.h in Headers */,
11191126
5F38021824DCC2E800E6FAFD /* BranchUserCompletedActionRequest.h in Headers */,
@@ -1497,6 +1504,7 @@
14971504
4DCF4AFB1F4388F600AF9AAB /* BranchEvent.m in Sources */,
14981505
5FB0AA6C231875B500A0F9EA /* BNCUserAgentCollector.m in Sources */,
14991506
4D9607F51FBF9473008AB3C2 /* UIViewController+Branch.m in Sources */,
1507+
C1CC888929C27E8000BDD2B5 /* BNCUrlQueryParameter.m in Sources */,
15001508
4D35141C1E3201D80085EBA1 /* NSMutableDictionary+Branch.m in Sources */,
15011509
5F92B23A2383703700CA909B /* BNCLocale.m in Sources */,
15021510
4D955CCD2035021400FB8008 /* BNCURLFilter.m in Sources */,

BranchSDK/BNCPreferenceHelper.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,6 @@ NSURL* /* _Nonnull */ BNCURLForBranchDirectory(void);
7070

7171
@property (assign, nonatomic) BOOL trackingDisabled;
7272

73-
@property (copy, nonatomic) NSString *referrerGBRAID;
74-
@property (assign, nonatomic) NSTimeInterval referrerGBRAIDValidityWindow;
75-
@property (strong, nonatomic) NSDate *referrerGBRAIDInitDate;
7673
@property (strong, nonatomic) NSMutableDictionary *referringURLQueryParameters;
7774

7875
@property (assign, nonatomic) NSInteger skanCurrentWindow;

0 commit comments

Comments
 (0)