You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2018/04/28 06:54:06 UTC
[38/48] incubator-weex git commit: * [android] Merge WeexCore-master
to master.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/2f8caedb/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
index bb90f23..1a288ee 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -27,8 +27,11 @@ import android.os.Looper;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.UiThread;
import android.support.v4.util.ArrayMap;
+import android.support.v4.util.LruCache;
import android.text.TextUtils;
+import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
@@ -47,18 +50,29 @@ import com.taobao.weex.common.WXErrorCode;
import com.taobao.weex.common.WXException;
import com.taobao.weex.common.WXJSBridgeMsgType;
import com.taobao.weex.common.WXJSExceptionInfo;
-import com.taobao.weex.common.WXPerformance;
import com.taobao.weex.common.WXRefreshData;
import com.taobao.weex.common.WXRuntimeException;
import com.taobao.weex.common.WXThread;
-import com.taobao.weex.dom.DOMAction;
-import com.taobao.weex.dom.WXDomModule;
-import com.taobao.weex.dom.action.Action;
-import com.taobao.weex.dom.action.Actions;
-import com.taobao.weex.dom.action.TraceableAction;
-import com.taobao.weex.tracing.WXTracing;
+import com.taobao.weex.dom.CSSShorthand;
+import com.taobao.weex.layout.ContentBoxMeasurement;
import com.taobao.weex.ui.WXComponentRegistry;
import com.taobao.weex.ui.component.WXComponent;
+import com.taobao.weex.ui.action.ActionReloadPage;
+import com.taobao.weex.ui.action.BasicGraphicAction;
+import com.taobao.weex.ui.action.GraphicActionAddElement;
+import com.taobao.weex.ui.action.GraphicActionAddEvent;
+import com.taobao.weex.ui.action.GraphicActionCreateBody;
+import com.taobao.weex.ui.action.GraphicActionCreateFinish;
+import com.taobao.weex.ui.action.GraphicActionLayout;
+import com.taobao.weex.ui.action.GraphicActionMoveElement;
+import com.taobao.weex.ui.action.GraphicActionRefreshFinish;
+import com.taobao.weex.ui.action.GraphicActionRemoveElement;
+import com.taobao.weex.ui.action.GraphicActionRemoveEvent;
+import com.taobao.weex.ui.action.GraphicActionUpdateAttr;
+import com.taobao.weex.ui.action.GraphicActionUpdateStyle;
+import com.taobao.weex.ui.action.GraphicPosition;
+import com.taobao.weex.ui.action.GraphicSize;
+import com.taobao.weex.ui.module.WXDomModule;
import com.taobao.weex.utils.WXExceptionUtils;
import com.taobao.weex.utils.WXFileUtils;
import com.taobao.weex.utils.WXJsonUtils;
@@ -67,8 +81,6 @@ import com.taobao.weex.utils.WXUtils;
import com.taobao.weex.utils.WXViewUtils;
import com.taobao.weex.utils.batch.BactchExecutor;
import com.taobao.weex.utils.batch.Interceptor;
-import com.taobao.weex.wson.Wson;
-
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -80,6 +92,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -87,11 +100,9 @@ import java.util.Set;
import java.util.Stack;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import static com.taobao.weex.bridge.WXModuleManager.getDomModule;
-import static com.taobao.weex.bridge.WXModuleManager.createDomModule;
+import static com.taobao.weex.bridge.WXModuleManager.createDomModule;
/**
* Manager class for communication between JavaScript and Android.
@@ -118,7 +129,6 @@ import static com.taobao.weex.bridge.WXModuleManager.createDomModule;
public class WXBridgeManager implements Callback, BactchExecutor {
public static final String METHOD_CREATE_INSTANCE = "createInstance";
- public static final String METHOD_CREATE_INSTANCE_CONTEXT = "createInstanceContext";
public static final String METHOD_DESTROY_INSTANCE = "destroyInstance";
public static final String METHOD_CALL_JS = "callJS";
public static final String METHOD_SET_TIMEOUT = "setTimeoutCallback";
@@ -131,7 +141,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public static final String METHOD_REFRESH_INSTANCE = "refreshInstance";
public static final String METHOD_NOTIFY_TRIM_MEMORY = "notifyTrimMemory";
public static final String METHOD_NOTIFY_SERIALIZE_CODE_CACHE =
- "notifySerializeCodeCache";
+ "notifySerializeCodeCache";
public static final String KEY_METHOD = "method";
public static final String KEY_ARGS = "args";
@@ -147,7 +157,6 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public static final String INITLOGFILE = "/jsserver_start.log";
private static final String NON_CALLBACK = "-1";
private static final String UNDEFINED = "undefined";
-
private static final String BUNDLE_TYPE = "bundleType";
private static final int INIT_FRAMEWORK_OK = 1;
private static final int CRASHREINIT = 50;
@@ -156,6 +165,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
private volatile static int reInitCount = 1;
private static String crashUrl = null;
private static long lastCrashTime = 0;
+
private static String mRaxApi = null;
// add for clound setting, default value is true
@@ -169,16 +179,18 @@ public class WXBridgeManager implements Callback, BactchExecutor {
Others
};
+ private static final boolean BRIDGE_LOG_SWITCH = false;
+
/**
* Whether JS Framework(main.js) has been initialized.
*/
private volatile static boolean mInit = false;
-
-
private static String globalConfig = "none";
private static String GLOBAL_CONFIG_KEY = "global_switch_config";
+ private static Map<String, String> mWeexCoreEnvOptions = new HashMap<>();
+
/**
* package
**/
@@ -264,11 +276,14 @@ public class WXBridgeManager implements Callback, BactchExecutor {
// setJSFrameworkInit and isJSFrameworkInit may use on diff thread
// use volatile
private boolean isJSFrameworkInit() {
- return mInit;
+ return mInit;
}
private void setJSFrameworkInit(boolean init) {
- mInit = init;
+ mInit = init;
+ if (init == true) {
+ onJsFrameWorkInitSuccees();
+ }
}
private void initWXBridge(boolean remoteDebug) {
@@ -287,9 +302,9 @@ public class WXBridgeManager implements Callback, BactchExecutor {
Constructor constructor = clazz.getConstructor(Context.class, WXBridgeManager.class);
if (constructor != null) {
mWxDebugProxy = (IWXDebugProxy) constructor.newInstance(
- WXEnvironment.getApplication(), WXBridgeManager.this);
+ WXEnvironment.getApplication(), WXBridgeManager.this);
if (mWxDebugProxy != null) {
- mWxDebugProxy.start();
+ mWxDebugProxy.start(new WXJsFunctions());
}
}
}
@@ -321,21 +336,21 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public Object callModuleMethod(String instanceId, String moduleStr, String methodStr, JSONArray args, JSONObject options) {
WXSDKInstance wxsdkInstance = WXSDKManager.getInstance()
- .getSDKInstance(instanceId);
+ .getSDKInstance(instanceId);
if (wxsdkInstance == null) {
return null;
}
if (wxsdkInstance.isNeedValidate()
- && WXSDKManager.getInstance().getValidateProcessor() != null) {
+ && WXSDKManager.getInstance().getValidateProcessor() != null) {
WXValidateProcessor.WXModuleValidateResult validateResult = WXSDKManager
- .getInstance().getValidateProcessor()
- .onModuleValidate(wxsdkInstance, moduleStr, methodStr, args, options);
+ .getInstance().getValidateProcessor()
+ .onModuleValidate(wxsdkInstance, moduleStr, methodStr, args, options);
if (validateResult == null) {
return null;
}
if (validateResult.isSuccess) {
return WXModuleManager.callModuleMethod(instanceId, moduleStr, methodStr,
- args);
+ args);
} else {
JSONObject validateInfo = validateResult.validateInfo;
if (validateInfo != null) {
@@ -412,7 +427,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public void sendMessageDelayed(Message message, long delayMillis) {
if (message == null || mJSHandler == null || mJSThread == null
- || !mJSThread.isWXThreadAlive() || mJSThread.getLooper() == null) {
+ || !mJSThread.isWXThreadAlive() || mJSThread.getLooper() == null) {
return;
}
mJSHandler.sendMessageDelayed(message, delayMillis);
@@ -420,7 +435,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public void removeMessage(int what, Object obj) {
if (mJSHandler == null || mJSThread == null
- || !mJSThread.isWXThreadAlive() || mJSThread.getLooper() == null) {
+ || !mJSThread.isWXThreadAlive() || mJSThread.getLooper() == null) {
return;
}
mJSHandler.removeMessages(what, obj);
@@ -428,27 +443,27 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public Object callNativeModule(String instanceId, String module, String method, JSONArray arguments, Object options) {
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
mLodBuilder.append("[WXBridgeManager] callNativeModule >>>> instanceId:").append(instanceId)
- .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments);
+ .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments);
WXLogUtils.d(mLodBuilder.substring(0));
mLodBuilder.setLength(0);
}
try {
if (WXDomModule.WXDOM.equals(module)) {
- WXDomModule dom = getDomModule(instanceId);
+ WXDomModule dom = WXModuleManager.getDomModule(instanceId);
return dom.callDomMethod(method, arguments);
} else {
return callModuleMethod(instanceId, module,
- method, arguments);
+ method, arguments);
}
} catch (Exception e) {
- String err = "[WXBridgeManager] callNative exception: " + WXLogUtils.getStackTrace(e);
+ String err = "[WXBridgeManager] callNative exception: " + WXLogUtils.getStackTrace(e);
WXLogUtils.e(err);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNativeModule",
- err, null);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNativeModule",
+ err, null);
}
return null;
@@ -456,53 +471,51 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public Object callNativeModule(String instanceId, String module, String method, JSONArray arguments, JSONObject options) {
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
mLodBuilder.append("[WXBridgeManager] callNativeModule >>>> instanceId:").append(instanceId)
- .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments);
+ .append(", module:").append(module).append(", method:").append(method).append(", arguments:").append(arguments);
WXLogUtils.d(mLodBuilder.substring(0));
mLodBuilder.setLength(0);
}
try {
if (WXDomModule.WXDOM.equals(module)) {
- WXDomModule dom = getDomModule(instanceId);
- if(dom != null){
- return dom.callDomMethod(method, arguments);
- } else {
- createDomModule(WXSDKManager.getInstance().getSDKInstance(instanceId));
- }
+ WXDomModule dom = WXModuleManager.getDomModule(instanceId);
+ if(dom != null){
+ return dom.callDomMethod(method, arguments);
+ } else {
+ createDomModule(WXSDKManager.getInstance().getSDKInstance(instanceId));
+ }
} else {
return callModuleMethod(instanceId, module,
- method, arguments, options);
+ method, arguments, options);
}
} catch (Exception e) {
- String err = "[WXBridgeManager] callNative exception: " + WXLogUtils.getStackTrace(e);
- WXLogUtils.e(err);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNativeModule",
- err, null);
+ String err = "[WXBridgeManager] callNative exception: " + WXLogUtils.getStackTrace(e);
+ WXLogUtils.e(err);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNativeModule",
+ err, null);
}
return null;
}
public Object callNativeComponent(String instanceId, String componentRef, String method, JSONArray arguments, Object options) {
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
mLodBuilder.append("[WXBridgeManager] callNativeComponent >>>> instanceId:").append(instanceId)
- .append(", componentRef:").append(componentRef).append(", method:").append(method).append(", arguments:").append(arguments);
+ .append(", componentRef:").append(componentRef).append(", method:").append(method).append(", arguments:").append(arguments);
WXLogUtils.d(mLodBuilder.substring(0));
mLodBuilder.setLength(0);
}
try {
-
- WXDomModule dom = getDomModule(instanceId);
+ WXDomModule dom = WXModuleManager.getDomModule(instanceId);
dom.invokeMethod(componentRef, method, arguments);
-
} catch (Exception e) {
WXLogUtils.e("[WXBridgeManager] callNative exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNativeComponent",
- WXLogUtils.getStackTrace(e), null);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNativeComponent",
+ WXLogUtils.getStackTrace(e), null);
}
return null;
}
@@ -514,22 +527,22 @@ public class WXBridgeManager implements Callback, BactchExecutor {
* @param tasks tasks to be executed
* @param callback next tick id
*/
- public int callNative(String instanceId, JSONArray tasks, String callback) {
- if (tasks == null || tasks.isEmpty()) {
- String err = "[WXBridgeManager] callNative: call Native tasks is null";
+ public int callNative(String instanceId, String tasks, String callback) {
+ if (TextUtils.isEmpty(tasks)) {
+ String err = "[WXBridgeManager] callNative: call Native tasks is null";
WXLogUtils.e(err);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNative",
- err + "| INSTANCE_RENDERING_ERROR will be set", null);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNative",
+ err + "| INSTANCE_RENDERING_ERROR will be set", null);
return IWXBridge.INSTANCE_RENDERING_ERROR;
}
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callNative >>>> instanceId:").append(instanceId)
- .append(", tasks:").append(tasks).append(", callback:").append(callback);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
+ mLodBuilder.append("[WXBridgeManager] callNative >>>> instanceId:").append(instanceId)
+ .append(", tasks:").append(tasks).append(", callback:").append(callback);
+ WXLogUtils.d(mLodBuilder.substring(0));
+ mLodBuilder.setLength(0);
}
if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
@@ -539,33 +552,32 @@ public class WXBridgeManager implements Callback, BactchExecutor {
long start = System.currentTimeMillis();
long parseNanos = System.nanoTime();
- JSONArray array = tasks;
+ JSONArray array = JSON.parseArray(tasks);
parseNanos = System.nanoTime() - parseNanos;
if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
WXSDKManager.getInstance().getSDKInstance(instanceId).jsonParseTime(System.currentTimeMillis() - start);
}
- int size = array.size();
- if (size > 0) {
+ if (null != array && array.size() > 0) {
+ int size = array.size();
try {
JSONObject task;
for (int i = 0; i < size; ++i) {
task = (JSONObject) array.get(i);
if (task != null && WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- Object target = task.get(MODULE);
- if (target != null) {
- if (WXDomModule.WXDOM.equals(target)) {
- WXDomModule dom = getDomModule(instanceId);
+ Object module = task.get(MODULE);
+ if (module != null) {
+ if (WXDomModule.WXDOM.equals(module)) {
+ WXDomModule dom = WXModuleManager.getDomModule(instanceId);
dom.callDomMethod(task, parseNanos);
} else {
JSONObject optionObj = task.getJSONObject(OPTIONS);
- callModuleMethod(instanceId, (String) target,
- (String) task.get(METHOD), (JSONArray) task.get(ARGS), optionObj);
+ callModuleMethod(instanceId, (String) module,
+ (String) task.get(METHOD), (JSONArray) task.get(ARGS), optionObj);
}
} else if (task.get(COMPONENT) != null) {
- //call component
- WXDomModule dom = getDomModule(instanceId);
+ WXDomModule dom = WXModuleManager.getDomModule(instanceId);
dom.invokeMethod((String) task.get(REF), (String) task.get(METHOD), (JSONArray) task.get(ARGS));
} else {
throw new IllegalArgumentException("unknown callNative");
@@ -574,67 +586,10 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
} catch (Exception e) {
WXLogUtils.e("[WXBridgeManager] callNative exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNative",
- WXLogUtils.getStackTrace(e) , null);
- }
- }
-
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
- }
-
- // callCreateBody
- public int callCreateBody(String instanceId, String tasks, String callback) {
- if (TextUtils.isEmpty(tasks)) {
- // if (WXEnvironment.isApkDebugable()) {
- WXLogUtils.d("[WXBridgeManager] callCreateBody: call CreateBody tasks is null");
- // }
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callCreateBody",
- "tasks is empty, INSTANCE_RENDERING_ERROR will be set", null);
-
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
-
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callCreateBody >>>> instanceId:").append(instanceId)
- .append(", tasks:").append(tasks).append(", callback:").append(callback);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
- }
-
-
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
- }
-
- try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- long start = System.currentTimeMillis();
- long nanosTemp = System.nanoTime();
- JSONObject domObject = JSON.parseObject(tasks);
- nanosTemp = System.nanoTime() - nanosTemp;
-
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getCreateBody(domObject);
- domModule.postAction((DOMAction) action, true);
-
- if (WXTracing.isAvailable() && action instanceof TraceableAction) {
- ((TraceableAction) action).mParseJsonNanos = nanosTemp;
- ((TraceableAction) action).mStartMillis = start;
- ((TraceableAction) action).onStartDomExecute(instanceId, "createBody", "_root", domObject.getString("type"), tasks);
- }
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callNative",
+ WXLogUtils.getStackTrace(e) , null);
}
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callCreateBody exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callCreateBody",
- WXLogUtils.getStackTrace(e), null);
}
if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
@@ -643,14 +598,13 @@ public class WXBridgeManager implements Callback, BactchExecutor {
// get next tick
getNextTick(instanceId, callback);
return IWXBridge.INSTANCE_RENDERING;
-
}
// callUpdateFinish
public int callUpdateFinish(String instanceId, String callback) {
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
mLodBuilder.append("[WXBridgeManager] callUpdateFinish >>>> instanceId:").append(instanceId)
- .append(", callback:").append(callback);
+ .append(", callback:").append(callback);
WXLogUtils.d(mLodBuilder.substring(0));
mLodBuilder.setLength(0);
}
@@ -661,65 +615,30 @@ public class WXBridgeManager implements Callback, BactchExecutor {
try {
if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getUpdateFinish();
- domModule.postAction((DOMAction) action, false);
+// WXDomModule domModule = getDomModule(instanceId);
+// Action action = Actions.getUpdateFinish();
+// domModule.postAction((DOMAction) action, false);
}
} catch (Exception e) {
WXLogUtils.e("[WXBridgeManager] callUpdateFinish exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateFinish",
- WXLogUtils.getStackTrace(e), null);
- }
-
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
- }
-
- // callCreateFinish
- public int callCreateFinish(String instanceId, String callback) {
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callCreateFinish >>>> instanceId:").append(instanceId)
- .append(", callback:").append(callback);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
- }
-
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
- }
-
- try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getCreateFinish();
- domModule.postAction((DOMAction) action, false);
- }
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callCreateFinish exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateFinish",
- WXLogUtils.getStackTrace(e), null);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateFinish",
+ WXLogUtils.getStackTrace(e), null);
}
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
+ if (callback == null || callback.isEmpty() || UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
return IWXBridge.INSTANCE_RENDERING_ERROR;
}
// get next tick
getNextTick(instanceId, callback);
return IWXBridge.INSTANCE_RENDERING;
-
}
// callRefreshFinish
public int callRefreshFinish(String instanceId, String callback) {
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
mLodBuilder.append("[WXBridgeManager] callRefreshFinish >>>> instanceId:").append(instanceId)
- .append(", callback:").append(callback);
+ .append(", callback:").append(callback);
WXLogUtils.d(mLodBuilder.substring(0));
mLodBuilder.setLength(0);
}
@@ -729,16 +648,16 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getRefreshFinish();
- domModule.postAction((DOMAction) action, false);
- }
+ WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
+ if (instance != null) {
+ GraphicActionRefreshFinish action = new GraphicActionRefreshFinish(instanceId);
+ WXSDKManager.getInstance().getWXRenderManager().postGraphicAction(instanceId, action);
+ }
} catch (Exception e) {
WXLogUtils.e("[WXBridgeManager] callRefreshFinish exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callRefreshFinish",
- WXLogUtils.getStackTrace(e), null);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callRefreshFinish",
+ WXLogUtils.getStackTrace(e), null);
}
if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
@@ -750,441 +669,127 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
- // callUpdateAttrs
- public int callUpdateAttrs(String instanceId, String ref, String task, String callback) {
- if (TextUtils.isEmpty(task)) {
- WXLogUtils.e("[WXBridgeManager] callUpdateAttrs: call UpdateAttrs tasks is null");
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateAttrs",
- "call UpdateAttrs tasks is null| INSTANCE_RENDERING_ERROR will be set", null);
-
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callUpdateAttrs >>>> instanceId:").append(instanceId)
- .append(", ref:").append(ref)
- .append(", task:").append(task)
- .append(", callback:").append(callback);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
- }
-
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
- }
-
+ public int callReportCrashReloadPage(String instanceId, String crashFile) {
try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- long start = System.currentTimeMillis();
- long parseNanos = System.nanoTime();
- JSONObject domObject = JSON.parseObject(task);
- parseNanos = System.nanoTime() - parseNanos;
-
- Action action = Actions.getUpdateAttrs(ref, domObject);
- domModule.postAction((DOMAction) action, false);
-
- if (WXTracing.isAvailable() && action instanceof TraceableAction) {
- ((TraceableAction) action).mStartMillis = start;
- ((TraceableAction) action).mParseJsonNanos = parseNanos;
- ((TraceableAction) action).onStartDomExecute(instanceId, "updateAttrs", domObject.getString("ref"), domObject.getString("type"), task);
+ String url = null;
+ WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
+ if (instance != null) {
+ url = instance.getBundleUrl();
+ }
+ try {
+ if (WXEnvironment.getApplication() != null) {
+ crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath() + crashFile;
+ // Log.e("jsengine", "callReportCrashReloadPage crashFile:" + crashFile);
}
+ } catch (Throwable e) {
+ e.printStackTrace();
}
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callUpdateAttrs exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateAttrs",
- WXLogUtils.getStackTrace(e), null);
- }
-
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
-
- }
-
- // callUpdateStyle
- public int callUpdateStyle(String instanceId, String ref, String task, String callback) {
- if (TextUtils.isEmpty(task)) {
- WXLogUtils.e("[WXBridgeManager] callUpdateStyle: call UpdateStyle tasks is null");
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateStyle",
- "task is empty", null);
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callUpdateStyle >>>> instanceId:").append(instanceId)
- .append(", ref:").append(ref)
- .append(", task:").append(task)
- .append(", callback:").append(callback);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
- }
+ callReportCrash(crashFile, instanceId, url);
+ if (reInitCount > CRASHREINIT) {
+ return IWXBridge.INSTANCE_RENDERING_ERROR;
+ }
+ reInitCount++;
+ // reinit frame work
+ setJSFrameworkInit(false);
+ WXModuleManager.resetAllModuleState();
+ initScriptsFramework("");
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
+ if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
+ return IWXBridge.DESTROY_INSTANCE;
+ }
+ } catch (Exception e) {
+ WXLogUtils.e("[WXBridgeManager] callReportCrashReloadPage exception: ", e);
}
-
try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- long start = System.currentTimeMillis();
- long nanosTemp = System.nanoTime();
- JSONObject domObject = JSON.parseObject(task);
- nanosTemp = System.nanoTime() - nanosTemp;
- Action action = Actions.getUpdateStyle(ref, domObject, false);
- domModule.postAction((DOMAction) action, false);
-
- if (WXTracing.isAvailable() && action instanceof TraceableAction) {
- ((TraceableAction) action).mParseJsonNanos = nanosTemp;
- ((TraceableAction) action).mStartMillis = start;
- ((TraceableAction) action).onStartDomExecute(instanceId, "updateStyle", ref, domObject.getString("type"), domObject.toJSONString());
- }
+ if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
+ boolean reloadThisInstance = shouReloadCurrentInstance(
+ WXSDKManager.getInstance().getSDKInstance(instanceId).getBundleUrl());
+ new ActionReloadPage(instanceId, reloadThisInstance).executeAction();
}
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callUpdateStyle exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callUpdateStyle",
- WXLogUtils.getStackTrace(e), null);
- }
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
+ } catch (Exception e) {
+ WXLogUtils.e("[WXBridgeManager] callReloadPage exception: ", e);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callReloadPage",
+ WXLogUtils.getStackTrace(e), null);
}
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
+ return IWXBridge.INSTANCE_RENDERING_ERROR;
}
- // callUpdateStyle
- public int callRemoveElement(String instanceId, String ref, String callback) {
-
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callRemoveElement >>>> instanceId:").append(instanceId)
- .append(", ref:").append(ref);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
+ public boolean shouReloadCurrentInstance(String aUrl) {
+ long time = System.currentTimeMillis();
+ if (crashUrl == null ||
+ (crashUrl != null && !crashUrl.equals(aUrl)) ||
+ ((time - lastCrashTime) > 15000)) {
+ crashUrl = aUrl;
+ lastCrashTime = time;
+ return true;
}
+ lastCrashTime = time;
+ return false;
+ }
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
+ public void callReportCrash(String crashFile, final String instanceId, final String url) {
+ // statistic weexjsc process crash
+ Date date = new Date();
+ DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
+ String time = format.format(date);
+ final String origin_filename = crashFile + "." + time;
+ File oldfile = new File(crashFile);
+ File newfile = new File(origin_filename);
+ if (oldfile.exists()) {
+ oldfile.renameTo(newfile);
}
-
- try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getRemoveElement(ref);
- domModule.postAction((DOMAction) action, false);
-
- if (WXTracing.isAvailable() && action instanceof TraceableAction) {
- ((TraceableAction) action).onStartDomExecute(instanceId, "removeElement", ref, null, ref);
+ Thread t = new Thread(new Runnable() {
+ public void run() {
+ try {
+ File file = new File(origin_filename);
+ if (file.exists()) {
+ if (file.length() > 0) {
+ StringBuilder result = new StringBuilder();
+ try {
+ BufferedReader br = new BufferedReader(new FileReader(origin_filename));
+ String s = null;
+ // boolean foundStart = false;
+ while ((s = br.readLine()) != null) {
+ if ("".equals(s)) {
+ continue;
+ }
+ // if (("r0:").equals(s)) {
+ // break;
+ // }
+ result.append(s + "\n");
+ }
+ commitJscCrashAlarmMonitor(IWXUserTrackAdapter.JS_BRIDGE, WXErrorCode.WX_ERR_JSC_CRASH, result.toString(), instanceId, url);
+ br.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ WXLogUtils.e("[WXBridgeManager] callReportCrash crash file is empty");
+ }
+ file.delete();
+ }
+ } catch (Throwable throwable) {
+ WXLogUtils.e("[WXBridgeManager] callReportCrash exception: ", throwable);
}
}
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callRemoveElement exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callRemoveElement",
- WXLogUtils.getStackTrace(e), null);
- }
-
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
+ });
+ t.start();
}
- // callMoveElement
- public int callMoveElement(String instanceId, String ref, String parentref, String index, String callback) {
-
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callMoveElement >>>> instanceId:").append(instanceId)
- .append(", parentref:").append(parentref)
- .append(", index:").append(index)
- .append(", ref:").append(ref);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
- }
-
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
- }
-
- try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getMoveElement(ref, parentref, Integer.parseInt(index));
- domModule.postAction((DOMAction) action, false);
- }
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callMoveElement exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callMoveElement",
- WXLogUtils.getStackTrace(e), null);
-
- }
-
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
- }
-
- public int callAddEvent(String instanceId, String ref, String event, String callback) {
-
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callAddEvent >>>> instanceId:").append(instanceId)
- .append(", ref:").append(ref)
- .append(", event:").append(event);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
- }
-
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
- }
-
- try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getAddEvent(ref, event);
- domModule.postAction((DOMAction) action, false);
-
- if (WXTracing.isAvailable() && action instanceof TraceableAction) {
- ((TraceableAction) action).onStartDomExecute(instanceId, "addEvent", ref, null, event);
- }
- }
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callAddEvent exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callAddEvent",
- WXLogUtils.getStackTrace(e), null);
- }
-
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
- }
-
- public int callRemoveEvent(String instanceId, String ref, String event, String callback) {
-
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callRemoveEvent >>>> instanceId:").append(instanceId)
- .append(", ref:").append(ref)
- .append(", event:").append(event);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
- }
-
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
- }
-
- try {
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getRemoveEvent(ref, event);
- domModule.postAction((DOMAction) action, false);
-
- if (WXTracing.isAvailable() && action instanceof TraceableAction) {
- ((TraceableAction) action).onStartDomExecute(instanceId, "removeEvent", ref, null, event);
- }
- }
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callRemoveEvent exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callAddEvent",
- WXLogUtils.getStackTrace(e), null);
- }
-
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
- }
-
- public int callAddElement(String instanceId, String ref, JSONObject dom, String index, String callback) {
-
- if (WXEnvironment.isOpenDebugLog()) {
- mLodBuilder.append("[WXBridgeManager] callNative::callAddElement >>>> instanceId:").append(instanceId)
- .append(", ref:").append(ref).append(", dom:").append(dom).append(", callback:").append(callback);
- WXLogUtils.d(mLodBuilder.substring(0));
- mLodBuilder.setLength(0);
- }
-
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
- }
-
-
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- long start = System.currentTimeMillis();
- long nanosTemp = System.nanoTime();
- JSONObject domObject = dom;
- nanosTemp = System.nanoTime() - nanosTemp;
-
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXSDKManager.getInstance().getSDKInstance(instanceId).jsonParseTime(System.currentTimeMillis() - start);
- }
- WXDomModule domModule = getDomModule(instanceId);
- DOMAction addElementAction = Actions.getAddElement(domObject, ref, Integer.parseInt(index));
- domModule.postAction(addElementAction, false);
-
- if (WXTracing.isAvailable() && addElementAction instanceof TraceableAction) {
- ((TraceableAction) addElementAction).mParseJsonNanos = nanosTemp;
- ((TraceableAction) addElementAction).mStartMillis = start;
- ((TraceableAction) addElementAction).onStartDomExecute(instanceId, "addElement", domObject.getString("ref"), domObject.getString("type"), dom.toString());
- }
- }
-
- if (UNDEFINED.equals(callback) || NON_CALLBACK.equals(callback)) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- // get next tick
- getNextTick(instanceId, callback);
- return IWXBridge.INSTANCE_RENDERING;
-
- }
-
- public int callReportCrashReloadPage(String instanceId, String crashFile) {
- try {
- String url = null;
- WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
- if (instance != null) {
- url = instance.getBundleUrl();
- }
- try {
- if (WXEnvironment.getApplication() != null) {
- crashFile = WXEnvironment.getApplication().getApplicationContext().getCacheDir().getPath() + crashFile;
- // Log.e("jsengine", "callReportCrashReloadPage crashFile:" + crashFile);
- }
- } catch (Throwable e) {
- e.printStackTrace();
- }
- callReportCrash(crashFile, instanceId, url);
- if (reInitCount > CRASHREINIT) {
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
- reInitCount++;
- // reinit frame work
- setJSFrameworkInit(false);
- WXModuleManager.resetAllModuleState();
- initScriptsFramework("");
-
- if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
- return IWXBridge.DESTROY_INSTANCE;
- }
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callReportCrashReloadPage exception: ", e);
- }
- try {
-
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- boolean reloadThisInstance = shouReloadCurrentInstance(
- WXSDKManager.getInstance().getSDKInstance(instanceId).getBundleUrl());
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getReloadPage(instanceId, reloadThisInstance);
- domModule.postAction((DOMAction) action, true);
- }
-
- } catch (Exception e) {
- WXLogUtils.e("[WXBridgeManager] callReloadPage exception: ", e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callReloadPage",
- WXLogUtils.getStackTrace(e), null);
- }
- return IWXBridge.INSTANCE_RENDERING_ERROR;
- }
-
- public boolean shouReloadCurrentInstance(String aUrl) {
- long time = System.currentTimeMillis();
- if (crashUrl == null ||
- (crashUrl != null && !crashUrl.equals(aUrl)) ||
- ((time - lastCrashTime) > 15000)) {
- crashUrl = aUrl;
- lastCrashTime = time;
- return true;
- }
- lastCrashTime = time;
- return false;
- }
-
- public void callReportCrash(String crashFile, final String instanceId, final String url) {
- // statistic weexjsc process crash
- Date date = new Date();
- DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
- String time = format.format(date);
- final String origin_filename = crashFile + "." + time;
- File oldfile = new File(crashFile);
- File newfile = new File(origin_filename);
- if (oldfile.exists()) {
- oldfile.renameTo(newfile);
- }
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- File file = new File(origin_filename);
- if (file.exists()) {
- if (file.length() > 0) {
- StringBuilder result = new StringBuilder();
- try {
- BufferedReader br = new BufferedReader(new FileReader(origin_filename));
- String s = null;
- // boolean foundStart = false;
- while ((s = br.readLine()) != null) {
- if ("".equals(s)) {
- continue;
- }
- // if (("r0:").equals(s)) {
- // break;
- // }
- result.append(s + "\n");
- }
- commitJscCrashAlarmMonitor(IWXUserTrackAdapter.JS_BRIDGE, WXErrorCode.WX_ERR_JSC_CRASH, result.toString(), instanceId, url);
- br.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- WXLogUtils.e("[WXBridgeManager] callReportCrash crash file is empty");
- }
- file.delete();
- }
- } catch (Throwable throwable) {
- WXLogUtils.e("[WXBridgeManager] callReportCrash exception: ", throwable);
- }
- }
- });
- t.start();
- }
-
- private void getNextTick(final String instanceId, final String callback) {
- addJSTask(METHOD_CALLBACK, instanceId, callback, "{}");
- sendMessage(instanceId, WXJSBridgeMsgType.CALL_JS_BATCH);
- }
+ private void getNextTick(final String instanceId, final String callback) {
+ addJSTask(METHOD_CALLBACK, instanceId, callback, "{}");
+ sendMessage(instanceId, WXJSBridgeMsgType.CALL_JS_BATCH);
+ }
+ private void getNextTick(final String instanceId) {
+ addJSTask(METHOD_CALLBACK, instanceId, "", "{}");
+ sendMessage(instanceId, WXJSBridgeMsgType.CALL_JS_BATCH);
+ }
public String syncExecJsOnInstanceWithResult(final String instanceId, final String js, final int type) {
- try {
- if (isJSThread()) {
- return invokeExecJSOnInstance(instanceId, js, type);
- }
- } catch (Throwable e) {
- WXLogUtils.e("[WXBridgeManager] syncExecJsOnInstanceWithResult on jsThread Exception");
- return "";
- }
final CountDownLatch waitLatch = new CountDownLatch(1);
EventResult callback = new EventResult(){
@Override
@@ -1250,7 +855,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
Object[] tasks = {task};
WXJSObject[] jsArgs = {
new WXJSObject(WXJSObject.String, instanceId),
- WXJsonUtils.wsonWXJSObject(tasks)};
+ new WXJSObject(WXJSObject.JSON, WXJsonUtils.fromObjectToJSONString(tasks))};
invokeExecJS(String.valueOf(instanceId), null, METHOD_CALL_JS, jsArgs, true);
jsArgs[0] = null;
jsArgs = null;
@@ -1261,9 +866,9 @@ public class WXBridgeManager implements Callback, BactchExecutor {
});
}
- /**
- * aync call js event and return result in eventResult callback
- * */
+ /**
+ * aync call js event and return result in eventResult callback
+ * */
private void asyncCallJSEventWithResult(final EventResult eventCallback, final String method, final String instanceId, final List<Object> params, final Object... args) {
post(new Runnable() {
@Override
@@ -1290,13 +895,13 @@ public class WXBridgeManager implements Callback, BactchExecutor {
Object[] tasks = {task};
WXJSObject[] jsArgs = {
new WXJSObject(WXJSObject.String, instanceId),
- WXJsonUtils.wsonWXJSObject(tasks)};
+ new WXJSObject(WXJSObject.JSON, WXJsonUtils.fromObjectToJSONString(tasks))};
byte[] taskResult = invokeExecJSWithResult(String.valueOf(instanceId), null, METHOD_CALL_JS, jsArgs, true);
if(eventCallback == null){
return;
}
if(taskResult != null){
- JSONArray arrayResult = (JSONArray) WXJsonUtils.parseWson(taskResult);
+ JSONArray arrayResult = (JSONArray) JSON.parse(new String(taskResult, "UTF-8"));
if(arrayResult != null && arrayResult.size() > 0){
result = arrayResult.get(0);
}
@@ -1312,7 +917,6 @@ public class WXBridgeManager implements Callback, BactchExecutor {
});
}
-
private void addJSEventTask(final String method, final String instanceId, final List<Object> params, final Object... args) {
post(new Runnable() {
@Override
@@ -1413,12 +1017,12 @@ public class WXBridgeManager implements Callback, BactchExecutor {
final String type, final Map<String, Object> data,
final Map<String, Object> domChanges, List<Object> params, EventResult callback) {
if (TextUtils.isEmpty(instanceId) || TextUtils.isEmpty(ref)
- || TextUtils.isEmpty(type) || mJSHandler == null) {
+ || TextUtils.isEmpty(type) || mJSHandler == null) {
return;
}
if (!checkMainThread()) {
throw new WXRuntimeException(
- "fireEvent must be called by main thread");
+ "fireEvent must be called by main thread");
}
if(callback == null) {
addJSEventTask(METHOD_FIRE_EVENT, instanceId, params, ref, type, data, domChanges);
@@ -1477,7 +1081,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
void callbackJavascript(final String instanceId, final String callback,
final Object data, boolean keepAlive) {
if (TextUtils.isEmpty(instanceId) || TextUtils.isEmpty(callback)
- || mJSHandler == null) {
+ || mJSHandler == null) {
return;
}
@@ -1506,88 +1110,40 @@ public class WXBridgeManager implements Callback, BactchExecutor {
WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
if (instance != null) {
instance.onRenderError(
- WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
- WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg()
- + "invokeRefreshInstance FAILED for JSFrameworkInit FAILED, intance will invoke instance.onRenderError"
- );
+ WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
+ WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg()
+ + "invokeRefreshInstance FAILED for JSFrameworkInit FAILED, intance will invoke instance.onRenderError"
+ );
}
String err = "[WXBridgeManager] invokeRefreshInstance: framework.js uninitialized.";
WXLogUtils.e(err);
return;
}
long start = System.currentTimeMillis();
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isApkDebugable()) {
WXLogUtils.d("refreshInstance >>>> instanceId:" + instanceId
- + ", data:" + refreshData.data + ", isDirty:" + refreshData.isDirty);
+ + ", data:" + refreshData.data + ", isDirty:" + refreshData.isDirty);
}
if (refreshData.isDirty) {
return;
}
WXJSObject instanceIdObj = new WXJSObject(WXJSObject.String,
- instanceId);
+ instanceId);
WXJSObject dataObj = new WXJSObject(WXJSObject.JSON,
- refreshData.data == null ? "{}" : refreshData.data);
+ refreshData.data == null ? "{}" : refreshData.data);
WXJSObject[] args = {instanceIdObj, dataObj};
invokeExecJS(instanceId, null, METHOD_REFRESH_INSTANCE, args);
WXLogUtils.renderPerformanceLog("invokeRefreshInstance", System.currentTimeMillis() - start);
} catch (Throwable e) {
String err = "[WXBridgeManager] invokeRefreshInstance " + WXLogUtils.getStackTrace(e);
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "invokeRefreshInstance",
- err, null);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "invokeRefreshInstance",
+ err, null);
WXLogUtils.e(err);
}
}
-// public void commitJSBridgeAlarmMonitor(String instanceId, WXErrorCode errCode, String errMsg) {
-// WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
-// if (instance == null || errCode == null) {
-// return;
-// }
-// // TODO: We should move WXPerformance and IWXUserTrackAdapter
-// // into a adapter level.
-// // comment out the line below to prevent commiting twice.
-// //instance.commitUTStab(WXConst.JS_BRIDGE, errCode, errMsg);
-//
-// IWXUserTrackAdapter adapter = WXSDKManager.getInstance().getIWXUserTrackAdapter();
-// if (adapter == null) {
-// return;
-// }
-// WXPerformance performance = new WXPerformance();
-// performance.args = instance.getBundleUrl();
-// performance.errCode = errCode.getErrorCode();
-// if (errCode != WXErrorCode.WX_SUCCESS) {
-// performance.appendErrMsg(TextUtils.isEmpty(errMsg) ? errCode.getErrorMsg() : errMsg);
-// WXLogUtils.e("wx_monitor", performance.toString());
-// }
-// adapter.commit(WXEnvironment.getApplication(), null, IWXUserTrackAdapter.JS_BRIDGE, performance, instance.getUserTrackParams());
-// }
-
-// public void commitJSFrameworkAlarmMonitor(final String type, final WXErrorCode errorCode, String errMsg) {
-// if (TextUtils.isEmpty(type) || errorCode == null) {
-// return;
-// }
-// if (WXSDKManager.getInstance().getWXStatisticsListener() != null) {
-// WXSDKManager.getInstance().getWXStatisticsListener().onException("0",
-// errorCode.getErrorCode(),
-// TextUtils.isEmpty(errMsg) ? errorCode.getErrorMsg() : errMsg);
-// }
-//
-// final IWXUserTrackAdapter userTrackAdapter = WXSDKManager.getInstance().getIWXUserTrackAdapter();
-// if (userTrackAdapter == null) {
-// return;
-// }
-// WXPerformance performance = new WXPerformance();
-// performance.errCode = errorCode.getErrorCode();
-// if (errorCode != WXErrorCode.WX_SUCCESS) {
-// performance.appendErrMsg(TextUtils.isEmpty(errMsg) ? errorCode.getErrorMsg() : errMsg);
-// WXLogUtils.e("wx_monitor", performance.toString());
-// }
-// userTrackAdapter.commit(WXEnvironment.getApplication(), null, type, performance, null);
-// }
-
-
public void commitJscCrashAlarmMonitor(final String type, final WXErrorCode errorCode, String errMsg,
String instanceId, String url) {
if (TextUtils.isEmpty(type) || errorCode == null) {
@@ -1620,18 +1176,18 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
if (TextUtils.isEmpty(instanceId) || TextUtils.isEmpty(template) || mJSHandler == null) {
instance.onRenderError(
- WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
- WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg() +
- " instanceId==" + instanceId + " template ==" + template + " mJSHandler== " + mJSHandler.toString()
- );
+ WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
+ WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg() +
+ " instanceId==" + instanceId + " template ==" + template + " mJSHandler== " + mJSHandler.toString()
+ );
return;
}
if (!isJSFrameworkInit() && reInitCount == 1 && !WXEnvironment.sDebugServerConnectable) {
instance.onRenderError(
- WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
+ WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg() +
- " isJSFrameworkInit==" + isJSFrameworkInit() + " reInitCount == 1" );
+ " isJSFrameworkInit==" + isJSFrameworkInit() + " reInitCount == 1" );
post(new Runnable() {
@Override
public void run() {
@@ -1663,7 +1219,6 @@ public class WXBridgeManager implements Callback, BactchExecutor {
private void invokeCreateInstance(@NonNull WXSDKInstance instance, String template,
Map<String, Object> options, String data) {
-
// add for sandbox, will delete on sandbox ok
initFramework("");
@@ -1671,11 +1226,11 @@ public class WXBridgeManager implements Callback, BactchExecutor {
mock(instance.getInstanceId());
} else {
if (!isJSFrameworkInit()) {
- String err = "[WXBridgeManager] invokeCreateInstance: framework.js uninitialized.";
- instance.onRenderError(
- WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
+ String err = "[WXBridgeManager] invokeCreateInstance: framework.js uninitialized.";
+ instance.onRenderError(
+ WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg()
- );
+ );
WXLogUtils.e(err);
return;
}
@@ -1695,6 +1250,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
} catch (Throwable e) {
e.printStackTrace();
}
+
try {
if (options == null) {
options = new HashMap<>();
@@ -1717,23 +1273,23 @@ public class WXBridgeManager implements Callback, BactchExecutor {
e.printStackTrace();
}
-
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
WXLogUtils.d("createInstance >>>> instanceId:" + instance.getInstanceId()
- + ", options:"
- + WXJsonUtils.fromObjectToJSONString(options)
- + ", data:" + data);
+ + ", options:"
+ + WXJsonUtils.fromObjectToJSONString(options)
+ + ", data:" + data);
}
WXJSObject instanceIdObj = new WXJSObject(WXJSObject.String,
- instance.getInstanceId());
+ instance.getInstanceId());
WXJSObject instanceObj = new WXJSObject(WXJSObject.String,
- template);
+ template);
WXJSObject optionsObj = new WXJSObject(WXJSObject.JSON,
- options == null ? "{}"
- : WXJsonUtils.fromObjectToJSONString(options));
+ options == null ? "{}"
+ : WXJsonUtils.fromObjectToJSONString(options));
optionsObj = optionObjConvert(isSandBoxContext, type, optionsObj);
WXJSObject dataObj = new WXJSObject(WXJSObject.JSON,
- data == null ? "{}" : data);
+ data == null ? "{}" : data);
+
WXJSObject apiObj;
if (type == BundType.Rax) {
if (mRaxApi == null) {
@@ -1747,8 +1303,10 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
WXJSObject[] args = {instanceIdObj, instanceObj, optionsObj,
- dataObj, apiObj};
+ dataObj, apiObj};
+
instance.setTemplate(template);
+
// if { "framework": "Vue" } or { "framework": "Rax" } will use invokeCreateInstanceContext
// others will use invokeExecJS
if (!isSandBoxContext || WXEnvironment.sDebugServerConnectable) {
@@ -1756,20 +1314,20 @@ public class WXBridgeManager implements Callback, BactchExecutor {
return;
}
if (type == BundType.Vue || type == BundType.Rax) {
- invokeCreateInstanceContext(instance.getInstanceId(), null, METHOD_CREATE_INSTANCE_CONTEXT, args, false);
+ invokeCreateInstanceContext(instance.getInstanceId(), null, METHOD_CREATE_INSTANCE, args, false);
return;
} else {
invokeExecJS(instance.getInstanceId(), null, METHOD_CREATE_INSTANCE, args, false);
return;
}
} catch (Throwable e) {
- String err = "[WXBridgeManager] invokeCreateInstance " + e.getCause()
- + instance.getTemplateInfo();
+ String err = "[WXBridgeManager] invokeCreateInstance " + e.getCause()
+ + instance.getTemplateInfo();
instance.onRenderError(
- WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
+ WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg() + err);
- WXLogUtils.e(err);
+ WXLogUtils.e(err);
}
}
}
@@ -1877,7 +1435,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public void destroyInstance(final String instanceId) {
if (mJSHandler == null
- || TextUtils.isEmpty(instanceId)) {
+ || TextUtils.isEmpty(instanceId)) {
return;
}
if (mDestroyedInstanceId != null) {
@@ -1900,11 +1458,11 @@ public class WXBridgeManager implements Callback, BactchExecutor {
private void invokeDestroyInstance(String instanceId) {
try {
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
WXLogUtils.d("destroyInstance >>>> instanceId:" + instanceId);
}
WXJSObject instanceIdObj = new WXJSObject(WXJSObject.String,
- instanceId);
+ instanceId);
WXJSObject[] args = {instanceIdObj};
if (isJSFrameworkInit()) {
invokeDestoryInstance(instanceId, null, METHOD_DESTROY_INSTANCE, args, true);
@@ -1912,8 +1470,8 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
} catch (Throwable e) {
String err = "[WXBridgeManager] invokeDestroyInstance " + e.getCause();
- WXExceptionUtils.commitCriticalExceptionRT(instanceId,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "invokeDestroyInstance", err, null);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "invokeDestroyInstance", err, null);
WXLogUtils.e(err);
}
}
@@ -1959,9 +1517,9 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public void invokeExecJS(String instanceId, String namespace, String function,
WXJSObject[] args, boolean logTaskDetail) {
- if (WXEnvironment.isOpenDebugLog()) {
+ if (WXEnvironment.isOpenDebugLog()) {
mLodBuilder.append("callJS >>>> instanceId:").append(instanceId)
- .append("function:").append(function);
+ .append("function:").append(function);
if (logTaskDetail) {
mLodBuilder.append(" tasks:").append(argsToJSON(args));
}
@@ -1975,7 +1533,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
instance.callJsTime(System.currentTimeMillis()-start);
}
}
-
+
public void invokeCreateInstanceContext(String instanceId, String namespace, String function,
WXJSObject[] args, boolean logTaskDetail) {
WXLogUtils.d("invokeCreateInstanceContext instanceId:" + instanceId + " function:"
@@ -1990,7 +1548,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
mWXBridge.createInstanceContext(instanceId, namespace, function, args);
}
-public void invokeDestoryInstance(String instanceId, String namespace, String function,
+ public void invokeDestoryInstance(String instanceId, String namespace, String function,
WXJSObject[] args, boolean logTaskDetail) {
// if (WXEnvironment.isApkDebugable()) {
mLodBuilder.append("callJS >>>> instanceId:").append(instanceId)
@@ -2023,7 +1581,7 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
}
private byte[] invokeExecJSWithResult(String instanceId, String namespace, String function,
- WXJSObject[] args,boolean logTaskDetail){
+ WXJSObject[] args,boolean logTaskDetail){
if (WXEnvironment.isOpenDebugLog()) {
mLodBuilder.append("callJS >>>> instanceId:").append(instanceId)
.append("function:").append(function);
@@ -2040,9 +1598,6 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
StringBuilder builder = new StringBuilder();
builder.append("[");
for(WXJSObject object : args){
- if(object.type == WXJSObject.WSON){
- object = new WXJSObject(WXJSObject.WSON, WXJsonUtils.parseWson(((byte[]) object.data)));
- }
builder.append(WXJsonUtils.fromObjectToJSONString(object));
builder.append(",");
}
@@ -2050,7 +1605,6 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
return builder.toString();
}
-
private void invokeInitFramework(Message msg) {
String framework = "";
if (msg.obj != null) {
@@ -2076,8 +1630,8 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
}
if (TextUtils.isEmpty(framework)) {
setJSFrameworkInit(false);
- WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
- "initFramework", "framework is empty!! ", null);
+ WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
+ "initFramework", "framework is empty!! ", null);
return;
}
try {
@@ -2119,37 +1673,36 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
String reinitInfo = "";
if (reInitCount > 1) {
reinitInfo = "reinit Framework:";
- // WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_JS_FRAMEWORK_REINIT_SUCCESS,
- // "initFramework", reinitInfo + "success", null);
+// WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_JS_FRAMEWORK_REINIT_SUCCESS,
+// "initFramework", reinitInfo + "success", null);
} else {
- // WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_JS_FRAMEWORK_INIT_SUCCESS.getErrorCode(),
- // "initFramework", reinitInfo + "success", null);
+// WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_JS_FRAMEWORK_INIT_SUCCESS,
+// "initFramework", reinitInfo + "success", null);
}
-
} else {
if (reInitCount > 1) {
WXLogUtils.e("[WXBridgeManager] invokeReInitFramework ExecuteJavaScript fail");
String err = "[WXBridgeManager] invokeReInitFramework ExecuteJavaScript fail reinit FrameWork";
- // WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_REINIT_FRAMEWORK,
- // "initFramework", "reInitCount = " + reInitCount + err, null);
+// WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
+// "initFramework", "reInitCount = " + reInitCount + err, null);
} else {
WXLogUtils.e("[WXBridgeManager] invokeInitFramework ExecuteJavaScript fail");
String err = "[WXBridgeManager] invokeInitFramework ExecuteJavaScript fail";
- // WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
- // "initFramework", err, null);
+// WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
+// "initFramework", err, null);
}
}
} catch (Throwable e) {
if (reInitCount > 1) {
WXLogUtils.e("[WXBridgeManager] invokeInitFramework ", e);
String err = "[WXBridgeManager] invokeInitFramework reinit FrameWork exception!#" + e.toString();
- WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_REINIT_FRAMEWORK,
- "initFramework", "reInitCount ==" + reInitCount + err, null);
+// WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
+// "initFramework", "reInitCount ==" + reInitCount + err, null);
} else {
WXLogUtils.e("[WXBridgeManager] invokeInitFramework ", e);
String err = "[WXBridgeManager] invokeInitFramework exception!#" + e.toString();
- WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
- "initFramework", err, null);
+// WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
+// "initFramework", err, null);
}
}
@@ -2168,7 +1721,7 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
try {
Object instanceId = message.obj;
- ArrayList<WXHashMap<String, Object>> task = null;
+ Object task = null;
Stack<String> instanceStack = mNextTickTasks.getInstanceStack();
int size = instanceStack.size();
for (int i = size - 1; i >= 0; i--) {
@@ -2178,23 +1731,20 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
break;
}
}
- Object[] tasks = ((ArrayList) task).toArray();
+ task = ((ArrayList) task).toArray();
WXJSObject[] args = {
- new WXJSObject(WXJSObject.String, instanceId),
- WXJsonUtils.wsonWXJSObject(tasks)};
+ new WXJSObject(WXJSObject.String, instanceId),
+ new WXJSObject(WXJSObject.JSON,
+ WXJsonUtils.fromObjectToJSONString(task))};
invokeExecJS(String.valueOf(instanceId), null, METHOD_CALL_JS, args);
- task.clear();
- for(int i=0; i<tasks.length; i++){
- tasks[i] = null;
- }
- args = null;
+
} catch (Throwable e) {
WXLogUtils.e("WXBridgeManager", e);
String err = "invokeCallJSBatch#" + WXLogUtils.getStackTrace(e);
- WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
- "invokeCallJSBatch", err, null);
+ WXExceptionUtils.commitCriticalExceptionRT(null, WXErrorCode.WX_ERR_JS_FRAMEWORK,
+ "invokeCallJSBatch", err, null);
}
// If task is not empty, loop until it is empty
@@ -2279,7 +1829,7 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
post(new Runnable() {
@Override
public void run() {
- invokeRegisterModules(modules, mRegisterComponentFailList);
+ invokeRegisterModules(modules, mRegisterComponentFailList);
}
}, null);
}
@@ -2291,7 +1841,7 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
*/
public void registerComponents(final List<Map<String, Object>> components) {
if (mJSHandler == null || components == null
- || components.size() == 0) {
+ || components.size() == 0) {
return;
}
post(new Runnable() {
@@ -2322,17 +1872,17 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
} catch (Throwable e) {
WXLogUtils.e("[WXBridgeManager] invokeRegisterService:", e);
- Map<String, String> data = new HashMap<String, String>();
- data.put("inputParams",service + "||" + receiver.toString());
+ Map<String, String> data = new HashMap<String, String>();
+ data.put("inputParams",service + "||" + receiver.toString());
- WXExceptionUtils.commitCriticalExceptionRT("invokeExecJSService",
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE_JSSERVICE_EXECUTE,
- "invokeExecJSService",
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE_JSSERVICE_EXECUTE.getErrorMsg()
- + "[WXBridgeManager] invokeRegisterService:"
- + WXLogUtils.getStackTrace(e),
- data);
- }
+ WXExceptionUtils.commitCriticalExceptionRT("invokeExecJSService",
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE_JSSERVICE_EXECUTE,
+ "invokeExecJSService",
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE_JSSERVICE_EXECUTE.getErrorMsg()
+ + "[WXBridgeManager] invokeRegisterService:"
+ + WXLogUtils.getStackTrace(e),
+ data);
+ }
}
private boolean isJSThread() {
@@ -2349,7 +1899,7 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
}
WXJSObject[] args = {new WXJSObject(WXJSObject.JSON,
- WXJsonUtils.fromObjectToJSONString(modules))};
+ WXJsonUtils.fromObjectToJSONString(modules))};
try {
mWXBridge.execJS("", null, METHOD_REGISTER_MODULES, args);
try {
@@ -2365,11 +1915,11 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
} catch (Throwable e) {
}
} catch (Throwable e) {
- WXExceptionUtils.commitCriticalExceptionRT(null,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_MODULES,
- "invokeRegisterModules", WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_MODULES.getErrorMsg() +
- " \n " + e.getMessage() + modules.entrySet().toString(),
- null );
+ WXExceptionUtils.commitCriticalExceptionRT(null,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_MODULES,
+ "invokeRegisterModules", WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_MODULES.getErrorMsg() +
+ " \n " + e.getMessage() + modules.entrySet().toString(),
+ null );
WXLogUtils.e("[WXBridgeManager] invokeRegisterModules:", e);
}
@@ -2392,18 +1942,18 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
}
WXJSObject[] args = {new WXJSObject(WXJSObject.JSON,
- WXJsonUtils.fromObjectToJSONString(components))};
+ WXJsonUtils.fromObjectToJSONString(components))};
try {
mWXBridge.execJS("", null, METHOD_REGISTER_COMPONENTS, args);
} catch (Throwable e) {
WXLogUtils.e("[WXBridgeManager] invokeRegisterComponents ", e);
- WXExceptionUtils.commitCriticalExceptionRT(null,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_CONTENT_FAILED,
- METHOD_REGISTER_COMPONENTS,
- WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_CONTENT_FAILED.getErrorMsg()
- + args.toString()
- + WXLogUtils.getStackTrace(e),
- null);
+ WXExceptionUtils.commitCriticalExceptionRT(null,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_CONTENT_FAILED,
+ METHOD_REGISTER_COMPONENTS,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE_REGISTER_CONTENT_FAILED
+ + args.toString()
+ + WXLogUtils.getStackTrace(e),
+ null);
}
}
@@ -2424,28 +1974,25 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
public void reportJSException(String instanceId, String function,
String exception) {
WXLogUtils.e("reportJSException >>>> instanceId:" + instanceId
- + ", exception function:" + function + ", exception:"
- + exception);
+ + ", exception function:" + function + ", exception:"
+ + exception);
WXSDKInstance instance = null;
if (instanceId != null && (instance = WXSDKManager.getInstance().getSDKInstance(instanceId)) != null) {
- exception += "\n getTemplateInfo==" +instance.getTemplateInfo();//add network header info
- if (METHOD_CREATE_INSTANCE_CONTEXT.equals(function) || METHOD_CREATE_INSTANCE.equals(function) || !instance.isContentMd5Match()) {
+ exception += "\n getTemplateInfo==" +instance.getTemplateInfo();//add network header info
+ if (METHOD_CREATE_INSTANCE.equals(function)) {
try {
if (isJSFrameworkInit() && reInitCount > 1 && !instance.isNeedReLoad()) {
- // JSONObject domObject = JSON.parseObject(tasks);
- WXDomModule domModule = getDomModule(instanceId);
- Action action = Actions.getReloadPage(instanceId, true);
- domModule.postAction((DOMAction) action, true);
+ new ActionReloadPage(instanceId, true).executeAction();
instance.setNeedLoad(true);
return;
} else {
instance.onRenderError(//DegradPassivity to H5
- WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
+ WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg() +
- "reportJSException >>>> instanceId:" + instanceId
- + ", exception function:" + function + ", exception:"
- + exception
- );
+ "reportJSException >>>> instanceId:" + instanceId
+ + ", exception function:" + function + ", exception:"
+ + exception
+ );
//doReportJSException(instanceId,function,exception);
WXExceptionUtils.commitCriticalExceptionRT(instanceId,WXErrorCode.WX_RENDER_ERR_JS_CREATE_INSTANCE,function,exception,null);
return;
@@ -2455,8 +2002,8 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
}
}
instance.onJSException(WXErrorCode.WX_ERR_JS_EXECUTE.getErrorCode(), function, exception);
- }
- doReportJSException(instanceId,function,exception);
+ }
+ doReportJSException(instanceId,function,exception);
}
private void doReportJSException(String instanceId, String function, String exception){
@@ -2508,20 +2055,20 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
}
}
- if (checkEmptyScreen(instance)){
+ if (checkEmptyScreen(instance)){
if (WXEnvironment.isApkDebugable()){
WXLogUtils.e("render error 4 js error !");
}
- WXExceptionUtils.commitCriticalExceptionRT(exceptionId, WXErrorCode.WX_RENDER_ERR_JS_RUNTIME,
- function,
- WXErrorCode.WX_RENDER_ERR_JS_RUNTIME.getErrorMsg() + exception,
- null);
- } else {
- WXExceptionUtils.commitCriticalExceptionRT(exceptionId, WXErrorCode.WX_KEY_EXCEPTION_WXBRIDGE,
- function,
- WXErrorCode.WX_KEY_EXCEPTION_WXBRIDGE.getErrorMsg() + exception,
- null);
- }
+ WXExceptionUtils.commitCriticalExceptionRT(exceptionId, WXErrorCode.WX_RENDER_ERR_JS_RUNTIME,
+ function,
+ WXErrorCode.WX_RENDER_ERR_JS_RUNTIME.getErrorMsg() + exception,
+ null);
+ } else {
+ WXExceptionUtils.commitCriticalExceptionRT(exceptionId, WXErrorCode.WX_KEY_EXCEPTION_WXBRIDGE,
+ function,
+ WXErrorCode.WX_KEY_EXCEPTION_WXBRIDGE.getErrorMsg() + exception,
+ null);
+ }
}
}
@@ -2539,15 +2086,13 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
return true;
}
- if (rootView instanceof ViewGroup){
+ if (rootView instanceof ViewGroup) {
return ((ViewGroup) rootView).getChildCount() > 0;
}else {
return false;
}
}
-
-
private void registerDomModule() throws WXException {
/** Tell Javascript Framework what methods you have. This is Required.**/
Map<String, Object> domMap = new HashMap<>();
@@ -2565,7 +2110,7 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
* update js server global config, current support turn wson off
* by pass wson_off
* */
- public static void updateGlobalConfig(String config){
+ public static void updateGlobalConfig(String config) {
if(TextUtils.isEmpty(config)){
config = "none";
}
@@ -2579,21 +2124,16 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
if(mBridgeManager.isJSFrameworkInit()){
if(mBridgeManager.mWXBridge instanceof WXBridge) {
final WXBridge bridge = (WXBridge) mBridgeManager.mWXBridge;
- bridge.updateGlobalConfig(globalConfig);
+ bridge.nativeUpdateGlobalConfig(globalConfig);
}
}
}
- if(globalConfig.contains("wson_off")){
- WXJsonUtils.USE_WSON = false;
- }else{
- WXJsonUtils.USE_WSON = true;
- }
}
};
if(mBridgeManager != null && mBridgeManager.isJSFrameworkInit()){
- mBridgeManager.post(runnable);
+ mBridgeManager.post(runnable);
}else{
- runnable.run();
+ runnable.run();
}
}
}
@@ -2635,6 +2175,469 @@ public void invokeDestoryInstance(String instanceId, String namespace, String fu
public String instanceId;
}
+ public int callCreateBody(String pageId, String componentType, String ref,
+ HashMap<String, String> styles, HashMap<String, String> attributes, HashSet<String> events,
+ float[] margins, float[] paddings, float[] borders) {
+ long start = System.currentTimeMillis();
+ if (TextUtils.isEmpty(pageId) || TextUtils.isEmpty(componentType) || TextUtils.isEmpty(ref)) {
+ // if (WXEnvironment.isApkDebugable()) {
+ WXLogUtils.d("[WXBridgeManager] callCreateBody: call CreateBody tasks is null");
+ // }
+ WXExceptionUtils.commitCriticalExceptionRT(pageId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callCreateBody",
+ "tasks is empty, INSTANCE_RENDERING_ERROR will be set", null);
+
+ return IWXBridge.INSTANCE_RENDERING_ERROR;
+ }
+
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
+ mLodBuilder.append("[WXBridgeManager] callCreateBody >>>> pageId:").append(pageId)
+ .append(", componentType:").append(componentType).append(", ref:").append(ref)
+ .append(", styles:").append(styles)
+ .append(", attributes:").append(attributes)
+ .append(", events:").append(events);
+ WXLogUtils.d(mLodBuilder.substring(0));
+ mLodBuilder.setLength(0);
+ }
+
+ if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(pageId)) {
+ return IWXBridge.DESTROY_INSTANCE;
+ }
+
+ try {
+ if (WXSDKManager.getInstance().getSDKInstance(pageId) != null) {
+ final BasicGraphicAction action = new GraphicActionCreateBody(pageId, ref, componentType,
+ styles, attributes, events, margins, paddings, borders);
+ WXSDKManager.getInstance().getWXRenderManager().postGraphicAction(action.getPageId(), action);
+ }
+ } catch (Exception e) {
+ WXLogUtils.e("[WXBridgeManager] callCreateBody exception: ", e);
+ WXExceptionUtils.commitCriticalExceptionRT(pageId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callCreateBody",
+ WXLogUtils.getStackTrace(e), null);
+ }
+
+ WXSDKManager.getInstance().getSDKInstance(pageId).callCreateBodyTime(System.currentTimeMillis() - start);
+ return IWXBridge.INSTANCE_RENDERING;
+ }
+
+ public int callAddElement(String pageId, String componentType, String ref, int index, String parentRef,
+ HashMap<String, String> styles, HashMap<String, String> attributes, HashSet<String> events,
+ float[] margins, float[] paddings, float[] borders) {
+ long start = System.currentTimeMillis();
+ if (TextUtils.isEmpty(pageId) || TextUtils.isEmpty(componentType) || TextUtils.isEmpty(ref)) {
+ WXLogUtils.d("[WXBridgeManager] callAddElement: call CreateBody tasks is null");
+ WXExceptionUtils.commitCriticalExceptionRT(pageId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callAddElement",
+ "arguments is empty, INSTANCE_RENDERING_ERROR will be set", null);
+
+ return IWXBridge.INSTANCE_RENDERING_ERROR;
+ }
+
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
+ mLodBuilder.append("[WXBridgeManager] callAddElement >>>> pageId:").append(pageId)
+ .append(", componentType:").append(componentType).append(", ref:").append(ref).append(", index:").append(index)
+ .append(", parentRef:").append(parentRef)
+ .append(", styles:").append(styles)
+ .append(", attributes:").append(attributes)
+ .append(", events:").append(events);
+ WXLogUtils.d(mLodBuilder.substring(0));
+ mLodBuilder.setLength(0);
+ }
+
+ if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(pageId)) {
+ return IWXBridge.DESTROY_INSTANCE;
+ }
+
+ try {
+ if (WXSDKManager.getInstance().getSDKInstance(pageId) != null) {
+ final GraphicActionAddElement action = new GraphicActionAddElement(pageId, ref, componentType, parentRef, index,
+ styles, attributes, events, margins, paddings, borders);
+ WXSDKManager.getInstance().getSDKInstance(pageId).addInActiveAddElementAction(ref, action);
+ }
+ } catch (Exception e) {
+ WXLogUtils.e("[WXBridgeManager] callAddElement exception: ", e);
+ WXExceptionUtils.commitCriticalExceptionRT(pageId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callAddElement",
+ WXLogUtils.getStackTrace(e), null);
+ }
+
+ WXSDKManager.getInstance().getSDKInstance(pageId).callAddElementTime(System.currentTimeMillis() - start);
+ return IWXBridge.INSTANCE_RENDERING;
+ }
+
+ public int callRemoveElement(String instanceId, String ref) {
+
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
+ mLodBuilder.append("[WXBridgeManager] callRemoveElement >>>> instanceId:").append(instanceId)
+ .append(", ref:").append(ref);
+ WXLogUtils.d(mLodBuilder.substring(0));
+ mLodBuilder.setLength(0);
+ }
+
+ if (mDestroyedInstanceId != null && mDestroyedInstanceId.contains(instanceId)) {
+ return IWXBridge.DESTROY_INSTANCE;
+ }
+
+ try {
+ WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
+ if (instance != null) {
+ final BasicGraphicAction action = new GraphicActionRemoveElement(instanceId, ref);
+ if(instance.getInActiveAddElementAction(ref)!=null){
+ instance.removeInActiveAddElmentAction(ref);
+ }
+ else {
+ WXSDKManager.getInstance().getWXRenderManager()
+ .postGraphicAction(action.getPageId(), action);
+ }
+ }
+ } catch (Exception e) {
+ WXLogUtils.e("[WXBridgeManager] callRemoveElement exception: ", e);
+ WXExceptionUtils.commitCriticalExceptionRT(instanceId,
+ WXErrorCode.WX_KEY_EXCEPTION_INVOKE, "callRemoveElement",
+ WXLogUtils.getStackTrace(e), null);
+ }
+
+ return IWXBridge.INSTANCE_RENDERING;
+ }
+
+ public int callMoveElement(String instanceId, String ref, String parentref, int index) {
+
+ if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) {
+ mLodBuilder.append("[WXBridgeManager] callMoveElement >>>> instanceId:").append(instanceId)
+ .append(", parentref:").append(p
<TRUNCATED>