diff options
author | Julian Rex <julian.rex@gmail.com> | 2020-03-18 12:23:14 -0400 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-03-25 16:03:01 +0200 |
commit | acf663dab3fe30f30f2826a89a4067c634e2bf62 (patch) | |
tree | 8070b298bc84f79b2f5873f582f9b1ae28244313 | |
parent | d4db3b11267d9ac22fc53991a383f95f95e607ea (diff) | |
download | qtlocation-mapboxgl-acf663dab3fe30f30f2826a89a4067c634e2bf62.tar.gz |
Experimental: Removes session as member variable
-rw-r--r-- | platform/darwin/include/mbgl/interface/native_apple_interface.h | 4 | ||||
-rw-r--r-- | platform/darwin/src/http_file_source.mm | 10 | ||||
-rw-r--r-- | platform/darwin/src/native_apple_interface.m | 43 |
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 { |