Skip to content
This repository was archived by the owner on Jun 3, 2021. It is now read-only.

Commit 5f5247d

Browse files
committed
[iOS] put renderFailed on component thread run
1 parent 0ff3792 commit 5f5247d

File tree

5 files changed

+28
-12
lines changed

5 files changed

+28
-12
lines changed

ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,9 @@ - (void)registerGlobalFunctions
158158
if (manager.isValid) {
159159
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
160160
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
161-
[manager renderFailed:error];
161+
WXPerformBlockOnComponentThread(^{
162+
[manager renderFailed:error];
163+
});
162164
}
163165
}
164166
return 0;
@@ -436,7 +438,9 @@ - (void)createInstance:(NSString *)instanceIdString
436438
if (manager.isValid) {
437439
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
438440
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
439-
[manager renderFailed:error];
441+
WXPerformBlockOnComponentThread(^{
442+
[manager renderFailed:error];
443+
});
440444
}
441445
}
442446
WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]);
@@ -616,7 +620,9 @@ - (void)createInstance:(NSString *)instanceIdString
616620
if (manager.isValid) {
617621
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
618622
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
619-
[manager renderFailed:error];
623+
WXPerformBlockOnComponentThread(^{
624+
[manager renderFailed:error];
625+
});
620626
}
621627
}
622628
WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]);
@@ -757,7 +763,9 @@ - (void)destroyInstance:(NSString *)instance
757763
if (manager.isValid) {
758764
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
759765
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
760-
[manager renderFailed:error];
766+
WXPerformBlockOnComponentThread(^{
767+
[manager renderFailed:error];
768+
});
761769
}
762770
}
763771
} else {
@@ -787,7 +795,9 @@ - (void)refreshInstance:(NSString *)instance
787795
if (manager.isValid) {
788796
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
789797
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
790-
[manager renderFailed:error];
798+
WXPerformBlockOnComponentThread(^{
799+
[manager renderFailed:error];
800+
});
791801
}
792802
return;
793803
}

ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ typedef NS_ENUM(int, WXSDKErrCode)
7676
WX_KEY_EXCEPTION_DEGRADE_OTHER_CAUSE = -9503,
7777
WX_KEY_EXCEPTION_DEGRADE_NET_CODE_CAUSE = -9504,
7878
WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR = -9505,
79-
WX_KEY_EXCEPTION_DEGRADE_EAGLE_JS_DOWNLOAD_ERROR = -9506,
8079

8180
WX_KEY_EXCEPTION_ABILITY_DOWN = -9600,
8281
WX_KEY_EXCEPTION_ABILITY_DOWN_IMAGE = -9601,

ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ +(NSDictionary *) getMap
9393
@(WX_KEY_EXCEPTION_DEGRADE_CHECK_CONTENT_LENGTH_FAILED):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NET)},
9494
@(WX_KEY_EXCEPTION_DEGRADE_BUNDLE_CONTENTTYPE_ERROR):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NET)},
9595
@(WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_JS)},
96-
@(WX_KEY_EXCEPTION_DEGRADE_EAGLE_JS_DOWNLOAD_ERROR):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_JS)},
9796
@(WX_KEY_EXCEPTION_DEGRADE_OTHER_CAUSE):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NATIVE)},
9897
@(WX_KEY_EXCEPTION_DEGRADE_NET_CODE_CAUSE):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NET)},
9998

ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,11 @@ - (void)DownloadJS:(NSString*)instance url:(NSURL *)scriptUrl completion:(void (
326326
WXComponentManager *manager = sdkInstance.componentManager;
327327
if (manager.isValid) {
328328
NSString *errorMessage = [NSString stringWithFormat:@"Request to %@ occurs an error:%@, info:%@", request.URL, loadError.localizedDescription, loadError.userInfo];
329-
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_JS_DOWNLOAD_ERROR;
329+
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_JS_DOWNLOAD;
330330
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{NSLocalizedDescriptionKey:(errorMessage?:@"No message")}];
331-
[manager renderFailed:error];
331+
WXPerformBlockOnComponentThread(^{
332+
[manager renderFailed:error];
333+
});
332334
}
333335
};
334336

@@ -443,7 +445,9 @@ - (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)ty
443445
if (manager.isValid) {
444446
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
445447
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
446-
[manager renderFailed:error];
448+
WXPerformBlockOnComponentThread(^{
449+
[manager renderFailed:error];
450+
});
447451
}
448452
}
449453
return;
@@ -521,7 +525,9 @@ - (void)callBack:(NSString *)instanceId funcId:(NSString *)funcId params:(id)par
521525
if (manager.isValid) {
522526
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
523527
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
524-
[manager renderFailed:error];
528+
WXPerformBlockOnComponentThread(^{
529+
[manager renderFailed:error];
530+
});
525531
}
526532
}
527533
}

ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,9 @@ - (void)_downloadAndExecScript:(NSURL *)url {
290290
if (self.componentManager.isValid) {
291291
WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
292292
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
293-
[self.componentManager renderFailed:error];
293+
WXPerformBlockOnComponentThread(^{
294+
[self.componentManager renderFailed:error];
295+
});
294296
}
295297
}
296298
return;

0 commit comments

Comments
 (0)