Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
21bf443
[feat] Implement NSURLSession configuration provider in RCTHTTPReques…
hakonk Jan 6, 2020
4091c30
[fix] place comment in correct place
hakonk Jan 6, 2020
98bc9d0
[fix] typo in comment, header doc for NSURL configuration provider se…
hakonk Jan 7, 2020
1dccd21
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Feb 1, 2020
17379bf
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Jul 23, 2020
da7c252
sync with master branch
hakonk Dec 12, 2020
716794f
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Dec 12, 2020
b7c371a
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Dec 30, 2020
cfbaa35
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Jan 12, 2021
e7cc0cf
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk May 19, 2021
4b21637
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk May 20, 2021
3a46388
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk May 21, 2021
1634c87
Remove commented out code from packages/rntester/AppDelegate.mm
hakonk May 27, 2021
b35507b
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Jun 1, 2021
49cc656
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Jun 1, 2021
ae69c6b
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Jun 2, 2021
6d19223
Merge branch 'master' into feat/custom-nsurl-session-configuration
hakonk Jun 2, 2021
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
5 changes: 5 additions & 0 deletions Libraries/Network/RCTHTTPRequestHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
#import <React/RCTInvalidating.h>
#import <React/RCTURLRequestHandler.h>

typedef NSURLSessionConfiguration* (^NSURLSessionConfigurationProvider)(void);
/**
* The block provided via this function will provide the NSURLSessionConfiguration for all HTTP requests made by the app.
*/
RCT_EXTERN void RCTSetCustomNSURLSessionConfigurationProvider(NSURLSessionConfigurationProvider);
/**
* This is the default RCTURLRequestHandler implementation for HTTP requests.
*/
Expand Down
26 changes: 19 additions & 7 deletions Libraries/Network/RCTHTTPRequestHandler.mm
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ @interface RCTHTTPRequestHandler () <NSURLSessionDataDelegate, RCTTurboModule>

@end

static NSURLSessionConfigurationProvider urlSessionConfigurationProvider;

void RCTSetCustomNSURLSessionConfigurationProvider(NSURLSessionConfigurationProvider provider) {
urlSessionConfigurationProvider = provider;
}

@implementation RCTHTTPRequestHandler
{
NSMapTable *_delegates;
Expand Down Expand Up @@ -75,14 +81,20 @@ - (NSURLSessionDataTask *)sendRequest:(NSURLRequest *)request
NSOperationQueue *callbackQueue = [NSOperationQueue new];
callbackQueue.maxConcurrentOperationCount = 1;
callbackQueue.underlyingQueue = [[_moduleRegistry moduleForName:"Networking"] methodQueue];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
// Set allowsCellularAccess to NO ONLY if key ReactNetworkForceWifiOnly exists AND its value is YES
if (useWifiOnly) {
configuration.allowsCellularAccess = ![useWifiOnly boolValue];
NSURLSessionConfiguration *configuration;
if (urlSessionConfigurationProvider) {
configuration = urlSessionConfigurationProvider();
} else {
configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
// Set allowsCellularAccess to NO ONLY if key ReactNetworkForceWifiOnly exists AND its value is YES
if (useWifiOnly) {
configuration.allowsCellularAccess = ![useWifiOnly boolValue];
}
[configuration setHTTPShouldSetCookies:YES];
[configuration setHTTPCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
[configuration setHTTPCookieStorage:[NSHTTPCookieStorage sharedHTTPCookieStorage]];
}
[configuration setHTTPShouldSetCookies:YES];
[configuration setHTTPCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
[configuration setHTTPCookieStorage:[NSHTTPCookieStorage sharedHTTPCookieStorage]];
assert(configuration != nil);
_session = [NSURLSession sessionWithConfiguration:configuration
delegate:self
delegateQueue:callbackQueue];
Expand Down