Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions FirebasePerformance/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Unreleased
- [fixed] Make Firebase performance compatible with Xcode15.
- [changed] Removed the capability to access Carrier information of the device since that API is deprecated by Apple.

# 10.11.0
- [fixed] Fixed a bug to disable data collection if the data collection was disabled before Firebase application was configured.

Expand Down
8 changes: 0 additions & 8 deletions FirebasePerformance/Sources/FPRDataUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,3 @@ FOUNDATION_EXTERN NSString *FPRValidatedAttributeValue(NSString *value);
* @return The unchanged url string or a truncated version if the length goes beyond the limit.
*/
FOUNDATION_EXTERN NSString *FPRTruncatedURLString(NSString *URLString);

/** Ensures proper length and numerals and returns a concatenated version if valid.
*
* @param mcc 3 digit MCC code.
* @param mnc 2 or 3 digit MNC code.
* @return Concatenated mcc and mnc codes if valid. Otherwise nil.
*/
FOUNDATION_EXTERN NSString *FPRValidatedMccMnc(NSString *mcc, NSString *mnc);
13 changes: 0 additions & 13 deletions FirebasePerformance/Sources/FPRDataUtils.m
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,3 @@
}
return truncatedURLString;
}

NSString *FPRValidatedMccMnc(NSString *mcc, NSString *mnc) {
if ([mcc length] != 3 || [mnc length] < 2 || [mnc length] > 3) return nil;

static NSCharacterSet *notDigits;
static dispatch_once_t token;
dispatch_once(&token, ^{
notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
});
NSString *mccMnc = [mcc stringByAppendingString:mnc];
if ([mccMnc rangeOfCharacterFromSet:notDigits].location != NSNotFound) return nil;
return mccMnc;
}
31 changes: 22 additions & 9 deletions FirebasePerformance/Sources/FPRNanoPbUtils.m
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,28 @@ static firebase_perf_v1_NetworkConnectionInfo_MobileSubtype FPRCellularNetworkTy
};
});

NSString *networkString = FPRNetworkInfo().currentRadioAccessTechnology;
NSNumber *cellularNetworkType = cellularNetworkToMobileSubtype[networkString];
return cellularNetworkType.intValue;
// Use recent APIs for iOS 12 and above and older APIs for before.
if (@available(iOS 12, *)) {
NSDictionary<NSString *, NSString *> *radioAccessors =
FPRNetworkInfo().serviceCurrentRadioAccessTechnology;
if (radioAccessors.count > 0) {
NSString *networkString = [radioAccessors.allValues objectAtIndex:0];
NSNumber *cellularNetworkType = cellularNetworkToMobileSubtype[networkString];
return cellularNetworkType.intValue;
}
} else {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

NSString *networkString = FPRNetworkInfo().currentRadioAccessTechnology;

#pragma clang diagnostic pop

NSNumber *cellularNetworkType = cellularNetworkToMobileSubtype[networkString];
return cellularNetworkType.intValue;
}

return firebase_perf_v1_NetworkConnectionInfo_MobileSubtype_UNKNOWN_MOBILE_SUBTYPE;
}
#endif

Expand Down Expand Up @@ -218,12 +237,6 @@ firebase_perf_v1_ApplicationInfo FPRGetApplicationInfoMessage(void) {
iosAppInfo.has_network_connection_info = true;
iosAppInfo.network_connection_info.has_network_type = true;
#ifdef TARGET_HAS_MOBILE_CONNECTIVITY
CTTelephonyNetworkInfo *networkInfo = FPRNetworkInfo();
CTCarrier *provider = networkInfo.subscriberCellularProvider;
NSString *mccMnc = FPRValidatedMccMnc(provider.mobileCountryCode, provider.mobileNetworkCode);
if (mccMnc) {
iosAppInfo.mcc_mnc = FPREncodeString(mccMnc);
}
if (iosAppInfo.network_connection_info.network_type ==
firebase_perf_v1_NetworkConnectionInfo_NetworkType_MOBILE) {
iosAppInfo.network_connection_info.mobile_subtype = FPRCellularNetworkType();
Expand Down
24 changes: 0 additions & 24 deletions FirebasePerformance/Tests/Unit/FPRNanoPbUtilsTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -95,30 +95,6 @@ - (void)testApplicationInfoMessageWithAttributes {
[performance removeAttribute:@"foo2"];
}

/** Tests if mccMnc validation is catching non numerals. */
- (void)testMccMncOnlyHasNumbers {
NSString *mccMnc = FPRValidatedMccMnc(@"123", @"MKV");
XCTAssertNil(mccMnc);
mccMnc = FPRValidatedMccMnc(@"ABC", @"123");
XCTAssertNil(mccMnc);
}

/** Tests if mccMnc validation is working. */
- (void)testMccMnc {
NSString *mccMnc = FPRValidatedMccMnc(@"123", @"22");
XCTAssertNotNil(mccMnc);
mccMnc = FPRValidatedMccMnc(@"123", @"223");
XCTAssertNotNil(mccMnc);
}

/** Tests if mccMnc validation catches improper lengths. */
- (void)testMccMncLength {
NSString *mccMnc = FPRValidatedMccMnc(@"12", @"22");
XCTAssertNil(mccMnc);
mccMnc = FPRValidatedMccMnc(@"123", @"2");
XCTAssertNil(mccMnc);
}

/** Validates that a valid FIRTrace object to firebase_perf_v1_TraceMetric conversion is successful.
*/
- (void)testTraceMetricMessageCreation {
Expand Down
2 changes: 1 addition & 1 deletion FirebasePerformance/Tests/Unit/FPRNetworkTraceTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ - (void)testTrimmedURLForShortLengthURLs {
NSURLRequest *URLRequest = [NSURLRequest requestWithURL:URL];
FPRNetworkTrace *networkTrace = [[FPRNetworkTrace alloc] initWithURLRequest:URLRequest];
XCTAssertNotNil(networkTrace);
XCTAssertEqual(networkTrace.URLRequest.URL.absoluteString, urlString);
XCTAssertEqualObjects(networkTrace.URLRequest.URL.absoluteString, urlString);
}

/** Validates that every trace contains a session Id. */
Expand Down