summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Rex <julian.rex@gmail.com>2020-03-18 12:23:14 -0400
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2020-03-25 16:03:01 +0200
commitacf663dab3fe30f30f2826a89a4067c634e2bf62 (patch)
tree8070b298bc84f79b2f5873f582f9b1ae28244313
parentd4db3b11267d9ac22fc53991a383f95f95e607ea (diff)
downloadqtlocation-mapboxgl-acf663dab3fe30f30f2826a89a4067c634e2bf62.tar.gz
Experimental: Removes session as member variable
-rw-r--r--platform/darwin/include/mbgl/interface/native_apple_interface.h4
-rw-r--r--platform/darwin/src/http_file_source.mm10
-rw-r--r--platform/darwin/src/native_apple_interface.m43
3 files changed, 34 insertions, 23 deletions
diff --git a/platform/darwin/include/mbgl/interface/native_apple_interface.h b/platform/darwin/include/mbgl/interface/native_apple_interface.h
index d4d207462d..8f41f725ac 100644
--- a/platform/darwin/include/mbgl/interface/native_apple_interface.h
+++ b/platform/darwin/include/mbgl/interface/native_apple_interface.h
@@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN
@required
-- (NSURLSessionConfiguration *)sessionConfiguration;
+- (NSURLSession *)session;
- (void)startDownloadEvent:(NSString *)event type:(NSString *)type;
@@ -34,7 +34,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) NSString *skuToken;
-@property (nonatomic, readonly) NSURLSessionConfiguration *sessionConfiguration;
+@property (nonatomic, readonly) NSURLSession *session;
- (void)startDownloadEvent:(NSString *)event type:(NSString *)type;
diff --git a/platform/darwin/src/http_file_source.mm b/platform/darwin/src/http_file_source.mm
index a72a97e299..262dedb1df 100644
--- a/platform/darwin/src/http_file_source.mm
+++ b/platform/darwin/src/http_file_source.mm
@@ -84,14 +84,10 @@ class HTTPFileSource::Impl {
public:
Impl() {
@autoreleasepool {
- NSURLSessionConfiguration *sessionConfig = MGLNativeNetworkManager.sharedManager.sessionConfiguration;
- session = [NSURLSession sessionWithConfiguration:sessionConfig];
-
userAgent = getUserAgent();
}
}
- NSURLSession* session = nil;
NSString* userAgent = nil;
NSInteger accountType = 0;
@@ -249,8 +245,10 @@ std::unique_ptr<AsyncRequest> HTTPFileSource::request(const Resource& resource,
if (isTile) {
[MGLNativeNetworkManager.sharedManager startDownloadEvent:url.relativePath type:@"tile"];
}
-
- request->task = [impl->session
+
+ NSURLSession *session = [MGLNativeNetworkManager.sharedManager.session copy];
+
+ request->task = [session
dataTaskWithRequest:req
completionHandler:^(NSData* data, NSURLResponse* res, NSError* error) {
if (error && [error code] == NSURLErrorCancelled) {
diff --git a/platform/darwin/src/native_apple_interface.m b/platform/darwin/src/native_apple_interface.m
index 07dce0d5b0..86d2fe6780 100644
--- a/platform/darwin/src/native_apple_interface.m
+++ b/platform/darwin/src/native_apple_interface.m
@@ -1,6 +1,21 @@
#import <Foundation/Foundation.h>
#import <mbgl/interface/native_apple_interface.h>
+static NSURLSessionConfiguration *testSessionConfiguration() {
+ NSURLSessionConfiguration* sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
+
+ sessionConfiguration.timeoutIntervalForResource = 30;
+ sessionConfiguration.HTTPMaximumConnectionsPerHost = 8;
+ sessionConfiguration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
+ sessionConfiguration.URLCache = nil;
+
+ return sessionConfiguration;
+}
+
+@interface MGLNativeNetworkManager ()
+@property (nonatomic) NSURLSession *testSession;
+@end
+
@implementation MGLNativeNetworkManager
static MGLNativeNetworkManager *instance = nil;
@@ -13,24 +28,22 @@ static MGLNativeNetworkManager *instance = nil;
return instance;
}
-- (NSURLSessionConfiguration *)sessionConfiguration {
- if (_delegate && [_delegate respondsToSelector:@selector(sessionConfiguration)]) {
- return [_delegate sessionConfiguration];
+- (instancetype)init {
+ if ((self = [super init])) {
+ _testSession = [NSURLSession sessionWithConfiguration:testSessionConfiguration()];
}
- // For testing. Since we get a `nil` return when SDK is modualar, we use this for testing requests.
- // Same as `[MGLNetworkConfiguration defaultSessionConfiguration]` in `MGLNetworkConfiguration.m`.
- return [self testSessionConfiguration];
+ return self;
}
-- (NSURLSessionConfiguration *)testSessionConfiguration {
- NSURLSessionConfiguration* sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
-
- sessionConfiguration.timeoutIntervalForResource = 30;
- sessionConfiguration.HTTPMaximumConnectionsPerHost = 8;
- sessionConfiguration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
- sessionConfiguration.URLCache = nil;
-
- return sessionConfiguration;
+- (NSURLSession *)session {
+ NSURLSession *session;
+ if (_delegate && [_delegate respondsToSelector:@selector(session)]) {
+ session = [_delegate session];
+ }
+
+ // For testing. Since we get a `nil` return when SDK is modualar, we use this for testing requests.
+ // Same as `[MGLNetworkConfiguration defaultSessionConfiguration]` in `MGLNetworkConfiguration.m`.
+ return session ?: self.testSession;
}
- (NSString *)skuToken {