Remove all calls to bridge.imageLoader [1/N]

Summary: We no longer want to access RCTImageLoader from the bridge category. Instead, let's use the `moduleForClass` API.

Reviewed By: shergin

Differential Revision: D16389113

fbshipit-source-id: c638f4b9851698afc53aaaa2b302d21cc19f76e7
This commit is contained in:
Peter Argany 2019-07-22 11:06:53 -07:00 коммит произвёл Facebook Github Bot
Родитель 42cf8a9241
Коммит 7d15a6be2c
6 изменённых файлов: 116 добавлений и 85 удалений

Просмотреть файл

@ -141,7 +141,7 @@ RCT_EXPORT_METHOD(saveToCameraRoll:(NSURLRequest *)request
inputURI = request.URL;
saveBlock();
} else {
[self.bridge.imageLoader loadImageWithURLRequest:request callback:^(NSError *error, UIImage *image) {
[[self.bridge moduleForClass:[RCTImageLoader class]] loadImageWithURLRequest:request callback:^(NSError *error, UIImage *image) {
if (error) {
reject(kErrorUnableToLoad, nil, error);
return;

Просмотреть файл

@ -43,7 +43,8 @@ RCT_EXPORT_METHOD(cropImage:(NSURLRequest *)imageRequest
[RCTConvert CGSize:cropData[@"size"]]
};
[_bridge.imageLoader loadImageWithURLRequest:imageRequest callback:^(NSError *error, UIImage *image) {
[[_bridge moduleForClass:[RCTImageLoader class]]
loadImageWithURLRequest:imageRequest callback:^(NSError *error, UIImage *image) {
if (error) {
errorCallback(error);
return;

Просмотреть файл

@ -87,7 +87,6 @@ static NSDictionary *onLoadParamsForSource(RCTImageSource *source)
{
if ((self = [super initWithFrame:CGRectZero])) {
_bridge = bridge;
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(clearImageIfDetached)
@ -328,7 +327,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithFrame:(CGRect)frame)
};
_reloadImageCancellationBlock =
[_bridge.imageLoader loadImageWithURLRequest:source.request
[[_bridge moduleForClass:[RCTImageLoader class]] loadImageWithURLRequest:source.request
size:imageSize
scale:imageScale
clipped:NO

Просмотреть файл

@ -54,7 +54,8 @@ RCT_EXPORT_METHOD(getSize:(NSURLRequest *)request
successBlock:(RCTResponseSenderBlock)successBlock
errorBlock:(RCTResponseErrorBlock)errorBlock)
{
[self.bridge.imageLoader getImageSizeForURLRequest:request
[[self.bridge moduleForClass:[RCTImageLoader class]]
getImageSizeForURLRequest:request
block:^(NSError *error, CGSize size) {
if (error) {
errorBlock(error);
@ -68,7 +69,8 @@ RCT_EXPORT_METHOD(getSizeWithHeaders:(RCTImageSource *)source
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject)
{
[self.bridge.imageLoader getImageSizeForURLRequest:source.request
[[self.bridge moduleForClass:[RCTImageLoader class]]
getImageSizeForURLRequest:source.request
block:^(NSError *error, CGSize size) {
if (error) {
reject(@"E_GET_SIZE_FAILURE", nil, error);
@ -87,7 +89,8 @@ RCT_EXPORT_METHOD(prefetchImage:(NSURLRequest *)request
return;
}
[self.bridge.imageLoader loadImageWithURLRequest:request
[[self.bridge moduleForClass:[RCTImageLoader class]]
loadImageWithURLRequest:request
callback:^(NSError *error, UIImage *image) {
if (error) {
reject(@"E_PREFETCH_FAILURE", nil, error);
@ -101,7 +104,7 @@ RCT_EXPORT_METHOD(queryCache:(NSArray *)requests
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject)
{
resolve([self.bridge.imageLoader getImageCacheStatus:requests]);
resolve([[self.bridge moduleForClass:[RCTImageLoader class]] getImageCacheStatus:requests]);
}
@end

Просмотреть файл

@ -53,10 +53,17 @@ RCTDefineImageDecoder(RCTImageLoaderTestsDecoder2)
NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[loader]; } launchOptions:nil];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react-native/img/opengraph.png"]];
[bridge.imageLoader loadImageWithURLRequest:urlRequest size:CGSizeMake(100, 100) scale:1.0 clipped:YES resizeMode:RCTResizeModeContain progressBlock:^(int64_t progress, int64_t total) {
[[bridge moduleForClass:[RCTImageLoader class]]
loadImageWithURLRequest:urlRequest
size:CGSizeMake(100, 100)
scale:1.0
clipped:YES
resizeMode:RCTResizeModeContain
progressBlock:^(int64_t progress, int64_t total) {
XCTAssertEqual(progress, 1);
XCTAssertEqual(total, 1);
} partialLoadBlock:nil completionBlock:^(NSError *loadError, id loadedImage) {
}
partialLoadBlock:nil completionBlock:^(NSError *loadError, id loadedImage) {
XCTAssertEqualObjects(loadedImage, image);
XCTAssertNil(loadError);
}];
@ -84,10 +91,17 @@ RCTDefineImageDecoder(RCTImageLoaderTestsDecoder2)
NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[loader1, loader2]; } launchOptions:nil];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://facebook.github.io/react-native/img/opengraph.png"]];
[bridge.imageLoader loadImageWithURLRequest:urlRequest size:CGSizeMake(100, 100) scale:1.0 clipped:YES resizeMode:RCTResizeModeContain progressBlock:^(int64_t progress, int64_t total) {
[[bridge moduleForClass:[RCTImageLoader class]]
loadImageWithURLRequest:urlRequest
size:CGSizeMake(100, 100)
scale:1.0
clipped:YES
resizeMode:RCTResizeModeContain
progressBlock:^(int64_t progress, int64_t total) {
XCTAssertEqual(progress, 1);
XCTAssertEqual(total, 1);
} partialLoadBlock:nil completionBlock:^(NSError *loadError, id loadedImage) {
}
partialLoadBlock:nil completionBlock:^(NSError *loadError, id loadedImage) {
XCTAssertEqualObjects(loadedImage, image);
XCTAssertNil(loadError);
}];
@ -108,7 +122,14 @@ RCTDefineImageDecoder(RCTImageLoaderTestsDecoder2)
NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[decoder]; } launchOptions:nil];
RCTImageLoaderCancellationBlock cancelBlock = [bridge.imageLoader decodeImageData:data size:CGSizeMake(1, 1) scale:1.0 clipped:NO resizeMode:RCTResizeModeStretch completionBlock:^(NSError *decodeError, id decodedImage) {
RCTImageLoaderCancellationBlock cancelBlock =
[[bridge moduleForClass:[RCTImageLoader class]]
decodeImageData:data
size:CGSizeMake(1, 1)
scale:1.0
clipped:NO
resizeMode:RCTResizeModeStretch
completionBlock:^(NSError *decodeError, id decodedImage) {
XCTAssertEqualObjects(decodedImage, image);
XCTAssertNil(decodeError);
}];
@ -137,7 +158,14 @@ RCTDefineImageDecoder(RCTImageLoaderTestsDecoder2)
NS_VALID_UNTIL_END_OF_SCOPE RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_bundleURL moduleProvider:^{ return @[decoder1, decoder2]; } launchOptions:nil];
RCTImageLoaderCancellationBlock cancelBlock = [bridge.imageLoader decodeImageData:data size:CGSizeMake(1, 1) scale:1.0 clipped:NO resizeMode:RCTResizeModeStretch completionBlock:^(NSError *decodeError, id decodedImage) {
RCTImageLoaderCancellationBlock cancelBlock =
[[bridge moduleForClass:[RCTImageLoader class]]
decodeImageData:data
size:CGSizeMake(1, 1)
scale:1.0
clipped:NO
resizeMode:RCTResizeModeStretch
completionBlock:^(NSError *decodeError, id decodedImage) {
XCTAssertEqualObjects(decodedImage, image);
XCTAssertNil(decodeError);
}];

Просмотреть файл

@ -251,7 +251,7 @@ using namespace facebook::react;
// * `RCTImageLoader` should be moved to `RNImageComponentView`.
// * `ReactNativeConfig` should be set by outside product code.
_contextContainer->insert("ReactNativeConfig", _reactNativeConfig);
_contextContainer->insert("RCTImageLoader", wrapManagedObject([_bridge imageLoader]));
_contextContainer->insert("RCTImageLoader", wrapManagedObject([_bridge moduleForClass:[RCTImageLoader class]]));
return _contextContainer;
}