Skip to content

Commit 5b5cf0e

Browse files
philIipfacebook-github-bot
authored andcommitted
cleanup queue configs for some native modules (#50832)
Summary: Pull Request resolved: #50832 Changelog: [iOS][Breaking] these experiences did not end up shipping, so cleaning them up. Reviewed By: fkgozali Differential Revision: D73343958 fbshipit-source-id: ff0dc1394748c897aed9c66513b250dfc2192e0d
1 parent 77f2c61 commit 5b5cf0e

File tree

8 files changed

+21
-119
lines changed

8 files changed

+21
-119
lines changed

packages/react-native/Libraries/Blob/RCTBlobCollector.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
{
2222
RCTBlobManager *blobManager = blobManager_;
2323
NSString *blobId = [NSString stringWithUTF8String:blobId_.c_str()];
24-
dispatch_async([blobManager_ executionQueue], ^{
24+
dispatch_async(blobManager_.methodQueue, ^{
2525
[blobManager remove:blobId];
2626
});
2727
}

packages/react-native/Libraries/Blob/RCTBlobManager.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
#import <React/RCTInitializing.h>
1111
#import <React/RCTURLRequestHandler.h>
1212

13-
RCT_EXTERN void RCTEnableBlobManagerProcessingQueue(BOOL enabled);
14-
1513
@interface RCTBlobManager : NSObject <RCTBridgeModule, RCTURLRequestHandler, RCTInitializing>
1614

1715
- (NSString *)store:(NSData *)data;
@@ -30,6 +28,4 @@ RCT_EXTERN void RCTEnableBlobManagerProcessingQueue(BOOL enabled);
3028

3129
- (void)createFromParts:(NSArray<NSDictionary<NSString *, id> *> *)parts withId:(NSString *)blobId;
3230

33-
- (dispatch_queue_t)executionQueue;
34-
3531
@end

packages/react-native/Libraries/Blob/RCTBlobManager.mm

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,6 @@
2222
RCT_MOCK_DEF(RCTBlobManager, dispatch_async);
2323
#define dispatch_async RCT_MOCK_USE(RCTBlobManager, dispatch_async)
2424

25-
static BOOL gBlobManagerProcessingQueueEnabled = NO;
26-
27-
RCT_EXTERN void RCTEnableBlobManagerProcessingQueue(BOOL enabled)
28-
{
29-
gBlobManagerProcessingQueueEnabled = enabled;
30-
}
31-
3225
static NSString *const kBlobURIScheme = @"blob";
3326

3427
@interface RCTBlobManager () <
@@ -59,11 +52,6 @@ - (void)initialize
5952
{
6053
std::lock_guard<std::mutex> lock(_blobsMutex);
6154
_blobs = [NSMutableDictionary new];
62-
63-
if (gBlobManagerProcessingQueueEnabled) {
64-
_processingQueue = dispatch_queue_create("com.facebook.react.blobmanager.processing", DISPATCH_QUEUE_SERIAL);
65-
}
66-
6755
facebook::react::RCTBlobCollector::install(self);
6856
}
6957

@@ -165,11 +153,11 @@ - (void)remove:(NSString *)blobId
165153

166154
// TODO(T63516227): Why can methodQueue be nil here?
167155
// We don't want to do anything when methodQueue is nil.
168-
if (![networking requestQueue]) {
156+
if (!networking.methodQueue) {
169157
return;
170158
}
171159

172-
dispatch_async([networking requestQueue], ^{
160+
dispatch_async(networking.methodQueue, ^{
173161
[networking addRequestHandler:self];
174162
[networking addResponseHandler:self];
175163
});
@@ -217,23 +205,18 @@ - (void)remove:(NSString *)blobId
217205
}
218206
}
219207

220-
dispatch_async([self executionQueue], ^{
208+
dispatch_async(_methodQueue, ^{
221209
[self store:data withId:blobId];
222210
});
223211
}
224212

225213
RCT_EXPORT_METHOD(release : (NSString *)blobId)
226214
{
227-
dispatch_async([self executionQueue], ^{
215+
dispatch_async(_methodQueue, ^{
228216
[self remove:blobId];
229217
});
230218
}
231219

232-
- (dispatch_queue_t)executionQueue
233-
{
234-
return gBlobManagerProcessingQueueEnabled ? _processingQueue : _methodQueue;
235-
}
236-
237220
#pragma mark - RCTURLRequestHandler methods
238221

239222
- (BOOL)canHandleRequest:(NSURLRequest *)request

packages/react-native/Libraries/Blob/RCTFileReaderModule.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ @implementation RCTFileReaderModule
3131
: (RCTPromiseRejectBlock)reject)
3232
{
3333
RCTBlobManager *blobManager = [_moduleRegistry moduleForName:"BlobModule"];
34-
dispatch_async([blobManager executionQueue], ^{
34+
dispatch_async(blobManager.methodQueue, ^{
3535
NSData *data = [blobManager resolve:blob];
3636

3737
if (data == nil) {
@@ -62,7 +62,7 @@ @implementation RCTFileReaderModule
6262
: (RCTPromiseRejectBlock)reject)
6363
{
6464
RCTBlobManager *blobManager = [_moduleRegistry moduleForName:"BlobModule"];
65-
dispatch_async([blobManager executionQueue], ^{
65+
dispatch_async(blobManager.methodQueue, ^{
6666
NSData *data = [blobManager resolve:blob];
6767

6868
if (data == nil) {

packages/react-native/Libraries/Network/RCTHTTPRequestHandler.mm

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ - (NSURLSessionDataTask *)sendRequest:(NSURLRequest *)request withDelegate:(id<R
7878

7979
NSOperationQueue *callbackQueue = [NSOperationQueue new];
8080
callbackQueue.maxConcurrentOperationCount = 1;
81-
RCTNetworking *networking = [_moduleRegistry moduleForName:"Networking"];
82-
callbackQueue.underlyingQueue = [networking requestQueue];
81+
callbackQueue.underlyingQueue = [[_moduleRegistry moduleForName:"Networking"] methodQueue];
8382
NSURLSessionConfiguration *configuration;
8483
if (urlSessionConfigurationProvider) {
8584
configuration = urlSessionConfigurationProvider();

packages/react-native/Libraries/Network/RCTNetworking.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
#import <React/RCTNetworkTask.h>
1111
#import <React/RCTURLRequestHandler.h>
1212

13-
RCT_EXTERN void RCTEnableNetworkingRequestQueue(BOOL enabled);
14-
1513
@protocol RCTNetworkingRequestHandler <NSObject>
1614

1715
// @lint-ignore FBOBJCUNTYPEDCOLLECTION1
@@ -58,8 +56,6 @@ RCT_EXTERN void RCTEnableNetworkingRequestQueue(BOOL enabled);
5856

5957
- (void)removeResponseHandler:(id<RCTNetworkingResponseHandler>)handler;
6058

61-
- (dispatch_queue_t)requestQueue;
62-
6359
@end
6460

6561
@interface RCTBridge (RCTNetworking)

packages/react-native/Libraries/Network/RCTNetworking.mm

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,6 @@
2020
#import "RCTInspectorNetworkReporter.h"
2121
#import "RCTNetworkPlugins.h"
2222

23-
static BOOL gEnableNetworkingRequestQueue = NO;
24-
25-
RCT_EXTERN void RCTEnableNetworkingRequestQueue(BOOL enabled)
26-
{
27-
gEnableNetworkingRequestQueue = enabled;
28-
}
29-
3023
typedef RCTURLRequestCancellationBlock (^RCTHTTPQueryResult)(NSError *error, NSDictionary<NSString *, id> *result);
3124

3225
NSString *const RCTNetworkingPHUploadHackScheme = @"ph-upload";
@@ -77,7 +70,7 @@ @implementation RCTHTTPFormDataHelper {
7770

7871
- (RCTURLRequestCancellationBlock)process:(NSArray<NSDictionary *> *)formData callback:(RCTHTTPQueryResult)callback
7972
{
80-
RCTAssertThread([_networker requestQueue], @"process: must be called on request queue");
73+
RCTAssertThread(_networker.methodQueue, @"process: must be called on request queue");
8174

8275
if (formData.count == 0) {
8376
return callback(nil, nil);
@@ -106,7 +99,7 @@ - (RCTURLRequestCancellationBlock)process:(NSArray<NSDictionary *> *)formData ca
10699

107100
- (RCTURLRequestCancellationBlock)handleResult:(NSDictionary<NSString *, id> *)result error:(NSError *)error
108101
{
109-
RCTAssertThread([_networker requestQueue], @"handleResult: must be called on request queue");
102+
RCTAssertThread(_networker.methodQueue, @"handleResult: must be called on request queue");
110103

111104
if (error) {
112105
return _callback(error, nil);
@@ -173,12 +166,7 @@ + (BOOL)requiresMainQueueSetup
173166

174167
- (instancetype)init
175168
{
176-
if (self = [super initWithDisabledObservation]) {
177-
if (gEnableNetworkingRequestQueue) {
178-
_requestQueue = dispatch_queue_create("com.facebook.react.network.request", DISPATCH_QUEUE_SERIAL);
179-
}
180-
}
181-
return self;
169+
return [super initWithDisabledObservation];
182170
}
183171

184172
- (instancetype)initWithHandlersProvider:
@@ -313,7 +301,7 @@ - (void)invalidate
313301
- (RCTURLRequestCancellationBlock)buildRequest:(NSDictionary<NSString *, id> *)query
314302
completionBlock:(void (^)(NSURLRequest *request))block
315303
{
316-
RCTAssertThread([self requestQueue], @"buildRequest: must be called on request queue");
304+
RCTAssertThread(_methodQueue, @"buildRequest: must be called on request queue");
317305

318306
NSURL *URL = [RCTConvert NSURL:query[@"url"]]; // this is marked as nullable in JS, but should not be null
319307
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
@@ -372,7 +360,7 @@ - (RCTURLRequestCancellationBlock)buildRequest:(NSDictionary<NSString *, id> *)q
372360
request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
373361
}
374362

375-
dispatch_async([self requestQueue], ^{
363+
dispatch_async(self->_methodQueue, ^{
376364
block(request);
377365
});
378366

@@ -410,7 +398,7 @@ - (BOOL)canHandleRequest:(NSURLRequest *)request
410398
callback:(RCTURLRequestCancellationBlock (^)(NSError *error, NSDictionary<NSString *, id> *result))
411399
callback
412400
{
413-
RCTAssertThread([self requestQueue], @"processDataForHTTPQuery: must be called on request queue");
401+
RCTAssertThread(_methodQueue, @"processDataForHTTPQuery: must be called on request queue");
414402

415403
if (!query) {
416404
return callback(nil, nil);
@@ -439,7 +427,7 @@ - (BOOL)canHandleRequest:(NSURLRequest *)request
439427
RCTNetworkTask *task =
440428
[self networkTaskWithRequest:request
441429
completionBlock:^(NSURLResponse *response, NSData *data, NSError *error) {
442-
dispatch_async([self requestQueue], ^{
430+
dispatch_async(self->_methodQueue, ^{
443431
cancellationBlock = callback(
444432
error, data ? @{@"body" : data, @"contentType" : RCTNullIfNil(response.MIMEType)} : nil);
445433
});
@@ -539,7 +527,7 @@ - (void)sendData:(NSData *)data
539527
response:(NSURLResponse *)response
540528
forTask:(RCTNetworkTask *)task
541529
{
542-
RCTAssertThread([self requestQueue], @"sendData: must be called on request queue");
530+
RCTAssertThread(_methodQueue, @"sendData: must be called on request queue");
543531

544532
id responseData = nil;
545533
for (id<RCTNetworkingResponseHandler> handler in _responseHandlers) {
@@ -577,7 +565,7 @@ - (void)sendRequest:(NSURLRequest *)request
577565
incrementalUpdates:(BOOL)incrementalUpdates
578566
responseSender:(RCTResponseSenderBlock)responseSender
579567
{
580-
RCTAssertThread([self requestQueue], @"sendRequest: must be called on request queue");
568+
RCTAssertThread(_methodQueue, @"sendRequest: must be called on request queue");
581569
__weak __typeof(self) weakSelf = self;
582570
__block RCTNetworkTask *task;
583571
RCTURLRequestProgressBlock uploadProgressBlock = ^(int64_t progress, int64_t total) {
@@ -724,9 +712,7 @@ - (RCTNetworkTask *)networkTaskWithRequest:(NSURLRequest *)request
724712
return nil;
725713
}
726714

727-
RCTNetworkTask *task = [[RCTNetworkTask alloc] initWithRequest:request
728-
handler:handler
729-
callbackQueue:[self requestQueue]];
715+
RCTNetworkTask *task = [[RCTNetworkTask alloc] initWithRequest:request handler:handler callbackQueue:_methodQueue];
730716
task.completionBlock = completionBlock;
731717
return task;
732718
}
@@ -746,7 +732,7 @@ - (RCTNetworkTask *)networkTaskWithRequest:(NSURLRequest *)request
746732
double timeout = query.timeout();
747733
bool withCredentials = query.withCredentials();
748734

749-
dispatch_async([self requestQueue], ^{
735+
dispatch_async(_methodQueue, ^{
750736
NSDictionary *queryDict = @{
751737
@"method" : method,
752738
@"url" : url,
@@ -775,15 +761,15 @@ - (RCTNetworkTask *)networkTaskWithRequest:(NSURLRequest *)request
775761

776762
RCT_EXPORT_METHOD(abortRequest : (double)requestID)
777763
{
778-
dispatch_async([self requestQueue], ^{
764+
dispatch_async(_methodQueue, ^{
779765
[self->_tasksByRequestID[[NSNumber numberWithDouble:requestID]] cancel];
780766
[self->_tasksByRequestID removeObjectForKey:[NSNumber numberWithDouble:requestID]];
781767
});
782768
}
783769

784770
RCT_EXPORT_METHOD(clearCookies : (RCTResponseSenderBlock)responseSender)
785771
{
786-
dispatch_async([self requestQueue], ^{
772+
dispatch_async(_methodQueue, ^{
787773
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
788774
if (!storage.cookies.count) {
789775
responseSender(@[ @NO ]);
@@ -797,11 +783,6 @@ - (RCTNetworkTask *)networkTaskWithRequest:(NSURLRequest *)request
797783
});
798784
}
799785

800-
- (dispatch_queue_t)requestQueue
801-
{
802-
return gEnableNetworkingRequestQueue ? _requestQueue : _methodQueue;
803-
}
804-
805786
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
806787
(const facebook::react::ObjCTurboModule::InitParams &)params
807788
{

packages/rn-tester/RNTesterUnitTests/RCTBlobManagerTests.m

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,6 @@
88
#import <XCTest/XCTest.h>
99

1010
#import <React/RCTBlobManager.h>
11-
#import <React/RCTMockDef.h>
12-
13-
RCT_MOCK_REF(RCTBlobManager, dispatch_async);
14-
15-
static void _mock_dispatch_async(dispatch_queue_t queue, dispatch_block_t block)
16-
{
17-
XCTAssertNotNil(queue);
18-
block();
19-
}
2011

2112
@interface RCTBlobManagerTests : XCTestCase
2213

@@ -32,12 +23,8 @@ - (void)setUp
3223
{
3324
[super setUp];
3425

35-
RCT_MOCK_SET(RCTBlobManager, dispatch_async, _mock_dispatch_async);
36-
3726
_module = [RCTBlobManager new];
38-
dispatch_queue_t methodQueue = dispatch_queue_create("test.queue", DISPATCH_QUEUE_SERIAL);
3927
[_module setValue:nil forKey:@"bridge"];
40-
[_module setValue:methodQueue forKey:@"methodQueue"];
4128
[_module initialize];
4229
NSInteger size = 120;
4330
_data = [NSMutableData dataWithCapacity:size];
@@ -49,13 +36,6 @@ - (void)setUp
4936
[_module store:_data withId:_blobId];
5037
}
5138

52-
- (void)tearDown
53-
{
54-
[super tearDown];
55-
56-
RCT_MOCK_RESET(RCTBlobManager, dispatch_async);
57-
}
58-
5939
- (void)testResolve
6040
{
6141
XCTAssertTrue([_data isEqualToData:[_module resolve:_blobId offset:0 size:_data.length]]);
@@ -118,37 +98,4 @@ - (void)testCreateFromParts
11898
XCTAssertTrue([expectedData isEqualToData:result]);
11999
}
120100

121-
- (void)testCreateFromPartsProcessingQueue
122-
{
123-
RCTEnableBlobManagerProcessingQueue(YES);
124-
[self setUp];
125-
126-
NSDictionary<NSString *, id> *blobData = @{
127-
@"blobId" : _blobId,
128-
@"offset" : @0,
129-
@"size" : @(_data.length),
130-
};
131-
NSDictionary<NSString *, id> *blob = @{
132-
@"data" : blobData,
133-
@"type" : @"blob",
134-
};
135-
NSString *stringData = @"i \u2665 dogs";
136-
NSDictionary<NSString *, id> *string = @{
137-
@"data" : stringData,
138-
@"type" : @"string",
139-
};
140-
NSString *resultId = [NSUUID UUID].UUIDString;
141-
NSArray<id> *parts = @[ blob, string ];
142-
143-
[_module createFromParts:parts withId:resultId];
144-
145-
NSMutableData *expectedData = [NSMutableData new];
146-
[expectedData appendData:_data];
147-
[expectedData appendData:[stringData dataUsingEncoding:NSUTF8StringEncoding]];
148-
149-
NSData *result = [_module resolve:resultId offset:0 size:expectedData.length];
150-
151-
XCTAssertTrue([expectedData isEqualToData:result]);
152-
}
153-
154101
@end

0 commit comments

Comments
 (0)