You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by lu...@apache.org on 2019/05/08 08:57:43 UTC
[incubator-weex] branch master updated: [iOS] export eagle
exception (#2402)
This is an automated email from the ASF dual-hosted git repository.
luckychen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git
The following commit(s) were added to refs/heads/master by this push:
new 650cb5b [iOS] export eagle exception (#2402)
650cb5b is described below
commit 650cb5b12abbd6033c0036e7a3d9c60e3b6d04e9
Author: jianhan-he <41...@users.noreply.github.com>
AuthorDate: Wed May 8 16:57:35 2019 +0800
[iOS] export eagle exception (#2402)
---
ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m | 45 +++++++++++++++--------
ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm | 2 +-
ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h | 3 +-
ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m | 2 +
ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m | 30 ++++++++++-----
ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m | 8 ++--
6 files changed, 60 insertions(+), 30 deletions(-)
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
index a4b6cf5..cda394e 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
@@ -154,9 +154,12 @@ _Pragma("clang diagnostic pop") \
}
else {
WXSDKInstance *instance = [WXSDKManager instanceForID:instanceId];
- WXSDKErrCode errorCode = WX_ERR_EAGLE_RENDER;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
- instance.onFailed(error);
+ WXComponentManager *manager = instance.componentManager;
+ if (manager.isValid) {
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
+ [manager renderFailed:error];
+ }
}
return 0;
}];
@@ -429,9 +432,12 @@ _Pragma("clang diagnostic pop") \
});
}
else {
- WXSDKErrCode errorCode = WX_ERR_EAGLE_RENDER;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
- sdkInstance.onFailed(error);
+ WXComponentManager *manager = sdkInstance.componentManager;
+ if (manager.isValid) {
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
+ [manager renderFailed:error];
+ }
}
WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]);
[sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_LOAD_BUNDLE_END];
@@ -604,9 +610,12 @@ _Pragma("clang diagnostic pop") \
});
}
else {
- WXSDKErrCode errorCode = WX_ERR_EAGLE_RENDER;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
- sdkInstance.onFailed(error);
+ WXComponentManager *manager = sdkInstance.componentManager;
+ if (manager.isValid) {
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
+ [manager renderFailed:error];
+ }
}
WX_MONITOR_INSTANCE_PERF_END(WXPTJSCreateInstance, [WXSDKManager instanceForID:instanceIdString]);
[sdkInstance.apmInstance onStage:KEY_PAGE_STAGES_LOAD_BUNDLE_END];
@@ -739,9 +748,12 @@ _Pragma("clang diagnostic pop") \
});
}
else {
- WXSDKErrCode errorCode = WX_ERR_EAGLE_RENDER;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
- sdkInstance.onFailed(error);
+ WXComponentManager *manager = sdkInstance.componentManager;
+ if (manager.isValid) {
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
+ [manager renderFailed:error];
+ }
}
} else {
[self callJSMethod:@"destroyInstance" args:@[instance]];
@@ -766,9 +778,12 @@ _Pragma("clang diagnostic pop") \
WXSDKInstance *sdkInstance = [WXSDKManager instanceForID:instance];
if (sdkInstance.dataRender) {
if (!_dataRenderHandler) {
- WXSDKErrCode errorCode = WX_ERR_EAGLE_RENDER;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
- sdkInstance.onFailed(error);
+ WXComponentManager *manager = sdkInstance.componentManager;
+ if (manager.isValid) {
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
+ [manager renderFailed:error];
+ }
return;
}
WXPerformBlockOnComponentThread(^{
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
index e39c901..b5f9949 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
@@ -135,7 +135,7 @@ namespace WeexCore
WXSDKErrCode errorCode = WX_ERR_JS_EXECUTE;
BOOL is_render_failed = NO;
if (func && (strcmp(func, "CreatePageWithContent") == 0 || strcmp(func, "UpdateComponentData") == 0)) {
- errorCode = WX_ERR_EAGLE_RENDER;
+ errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
WXComponentManager *manager = instance.componentManager;
if (manager.isValid) {
NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":[NSString stringWithUTF8String:exception], @"exception function:":@(func)}];
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
index 689b046..a17e95e 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
@@ -55,7 +55,6 @@ typedef NS_ENUM(int, WXSDKErrCode)
WX_ERR_RENDER_REMOVEEVENT = -2107,
WX_ERR_RENDER_SCROLLTOELEMENT = -2110,
WX_ERR_RENDER_TWICE = -2111,
- WX_ERR_EAGLE_RENDER = -2112,
WX_ERR_RENDER_END = -2199,
WX_ERR_DOWNLOAD_START = -2201,
@@ -76,6 +75,8 @@ typedef NS_ENUM(int, WXSDKErrCode)
WX_KEY_EXCEPTION_DEGRADE_BUNDLE_CONTENTTYPE_ERROR = -9502,
WX_KEY_EXCEPTION_DEGRADE_OTHER_CAUSE = -9503,
WX_KEY_EXCEPTION_DEGRADE_NET_CODE_CAUSE = -9504,
+ WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR = -9505,
+ WX_KEY_EXCEPTION_DEGRADE_EAGLE_JS_DOWNLOAD_ERROR = -9506,
WX_KEY_EXCEPTION_ABILITY_DOWN = -9600,
WX_KEY_EXCEPTION_ABILITY_DOWN_IMAGE = -9601,
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m
index 5199bf2..4eeef3d 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m
@@ -92,6 +92,8 @@
@(WX_KEY_EXCEPTION_DEGRADE):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NATIVE)},
@(WX_KEY_EXCEPTION_DEGRADE_CHECK_CONTENT_LENGTH_FAILED):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NET)},
@(WX_KEY_EXCEPTION_DEGRADE_BUNDLE_CONTENTTYPE_ERROR):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NET)},
+ @(WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_JS)},
+ @(WX_KEY_EXCEPTION_DEGRADE_EAGLE_JS_DOWNLOAD_ERROR):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_JS)},
@(WX_KEY_EXCEPTION_DEGRADE_OTHER_CAUSE):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NATIVE)},
@(WX_KEY_EXCEPTION_DEGRADE_NET_CODE_CAUSE):@{ERROR_TYPE:@(WX_DEGRADE_ERROR),ERROR_GROUP:@(WX_NET)},
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
index 78cd4cd..f9ed2c8 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
@@ -24,6 +24,7 @@
#import "WXBridgeMethod.h"
#import "WXCallJSMethod.h"
#import "WXSDKManager.h"
+#import "WXSDKInstance_private.h"
#import "WXServiceFactory.h"
#import "WXResourceRequest.h"
#import "WXResourceLoader.h"
@@ -322,10 +323,13 @@ void WXPerformBlockSyncOnBridgeThread(void (^block) (void))
}
WXSDKInstance *sdkInstance = [WXSDKManager instanceForID:instance];
- NSString *errorMessage = [NSString stringWithFormat:@"Request to %@ occurs an error:%@, info:%@", request.URL, loadError.localizedDescription, loadError.userInfo];
- WXSDKErrCode errorCode = WX_KEY_EXCEPTION_JS_DOWNLOAD;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{NSLocalizedDescriptionKey:(errorMessage?:@"No message")}];
- sdkInstance.onFailed(error);
+ WXComponentManager *manager = sdkInstance.componentManager;
+ if (manager.isValid) {
+ NSString *errorMessage = [NSString stringWithFormat:@"Request to %@ occurs an error:%@, info:%@", request.URL, loadError.localizedDescription, loadError.userInfo];
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_JS_DOWNLOAD_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{NSLocalizedDescriptionKey:(errorMessage?:@"No message")}];
+ [manager renderFailed:error];
+ }
};
[jsLoader start];
@@ -435,9 +439,12 @@ void WXPerformBlockSyncOnBridgeThread(void (^block) (void))
});
}
else {
- WXSDKErrCode errorCode = WX_ERR_EAGLE_RENDER;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
- instance.onFailed(error);
+ WXComponentManager *manager = instance.componentManager;
+ if (manager.isValid) {
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
+ [manager renderFailed:error];
+ }
}
return;
}
@@ -510,9 +517,12 @@ void WXPerformBlockSyncOnBridgeThread(void (^block) (void))
});
}
else {
- WXSDKErrCode errorCode = WX_ERR_EAGLE_RENDER;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
- instance.onFailed(error);
+ WXComponentManager *manager = instance.componentManager;
+ if (manager.isValid) {
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
+ [manager renderFailed:error];
+ }
}
}
else {
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
index 2ed9999..46ec964 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
@@ -287,9 +287,11 @@ typedef enum : NSUInteger {
});
}
else {
- WXSDKErrCode errorCode = WX_ERR_EAGLE_RENDER;
- NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
- self.onFailed(error);
+ if (self.componentManager.isValid) {
+ WXSDKErrCode errorCode = WX_KEY_EXCEPTION_DEGRADE_EAGLE_RENDER_ERROR;
+ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN code:errorCode userInfo:@{@"message":@"No data render handler found!"}];
+ [self.componentManager renderFailed:error];
+ }
}
return;
}