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/08/01 04:04:25 UTC
[incubator-weex] branch master updated: Feature/new log branch
(#2768)
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 10ddece Feature/new log branch (#2768)
10ddece is described below
commit 10ddeced10668b26ea5c73b072b3fc9b12708e73
Author: darin <dy...@qq.com>
AuthorDate: Thu Aug 1 12:04:19 2019 +0800
Feature/new log branch (#2768)
* Add TimeCalculator
* Fix All Log Problem
* Add for cal initJsc
* Add Tlog Type
* Refine log Utils
* add jni setLogType
to Make weexcore and jss know log type
* add Debug & perf flag for log utils
* Add logType interface
* add setLogLevel interface
* add Tlog level
* Log Api jss <-> weexcore Done
* performance Log api Done
* Scan to set log level dynamicly
* All Log Api is fine
* Only Add time calculator in performance mode
* Refine Log Print logic
* Support all cpu type
* Add For test
* Fix jni type
* modify for ios
* Add CreateInstance tlog
* remove debug log
* Do nothing for performance
* clear unuse log
* Support "wx" in Transform.translate
* remove useless log
* [Android] record performance detail cost (#2769)
* [iOS] fix multi jsthread error
* [Android] Avoid duplicated call of setViewPort (#2764)
* [iOS] Protect animation argument missing which cause crash on iOS. (#2771)
* [iOS] fix compile error
* Remove Useles log
---
android/sdk/build.gradle | 8 +-
.../main/java/com/taobao/weex/WXEnvironment.java | 2 +-
.../main/java/com/taobao/weex/WXHttpListener.java | 12 +-
.../src/main/java/com/taobao/weex/WXSDKEngine.java | 4 +-
.../main/java/com/taobao/weex/WXSDKInstance.java | 16 +-
.../main/java/com/taobao/weex/bridge/WXBridge.java | 11 +-
.../com/taobao/weex/bridge/WXBridgeManager.java | 86 +-
.../com/taobao/weex/bridge/WXModuleManager.java | 8 +-
.../java/com/taobao/weex/common/IWXBridge.java | 2 +
.../main/java/com/taobao/weex/common/WXThread.java | 49 +-
.../taobao/weex/ui/module/ConsoleLogModule.java | 10 +
.../main/java/com/taobao/weex/utils/LogLevel.java | 5 +-
.../java/com/taobao/weex/utils/WXLogUtils.java | 24 +
.../java/com/taobao/weex/utils/tools/Info.java | 47 +-
.../com/taobao/weex/utils/tools/LogDetail.java | 85 +
.../com/taobao/weex/utils/tools/LogSwitch.java | 41 +-
.../java/com/taobao/weex/utils/tools/TaskInfo.java | 28 +-
.../java/com/taobao/weex/utils/tools/Time.java | 83 +
.../taobao/weex/utils/tools/TimeCalculator.java | 67 +
ios/sdk/WeexSDK.xcodeproj/project.pbxproj | 12 +
ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm | 16 +-
weex_core/Source/CMakeLists.txt | 1 +
weex_core/Source/WXBridge_jni.h | 3 +
.../bridge/script/script_side_in_multi_process.cpp | 21 +-
.../bridge/script/script_side_in_multi_process.h | 1 +
.../bridge/script/script_side_in_multi_so.cpp | 9 +
.../bridge/script/script_side_in_multi_so.h | 1 +
.../bridge/script_bridge_in_multi_process.cpp | 39 +-
.../android/bridge/script_bridge_in_multi_so.cpp | 229 ++-
.../platform/platform_bridge_in_multi_so.cpp | 4 +
.../bridge/platform/platform_bridge_in_multi_so.h | 3 +-
.../bridge/script/core_side_in_multi_process.cpp | 938 ++++-----
.../bridge/script/core_side_in_multi_process.h | 135 +-
.../bridge/script/core_side_in_multi_so.cpp | 18 +-
.../jsengine/bridge/script/core_side_in_multi_so.h | 5 +
.../script/script_bridge_in_multi_process.cpp | 17 +-
.../bridge/script/script_bridge_in_multi_process.h | 1 +
.../bridge/script/script_bridge_in_multi_so.cpp | 6 +-
.../bridge/script/script_bridge_in_multi_so.h | 1 +
.../bridge/script/script_side_in_queue.cpp | 13 +-
.../jsengine/bridge/script/script_side_in_queue.h | 2 +-
.../bridge/script/script_side_in_simple.cpp | 4 +
.../jsengine/bridge/script/script_side_in_simple.h | 2 +-
.../object/log_utils_jss.h} | 36 +-
weex_core/Source/android/jsengine/object/tlog.h | 53 -
.../jsengine/object/weex_console_object.cpp | 5 +-
.../Source/android/jsengine/object/weex_env.cpp | 80 +-
.../Source/android/jsengine/object/weex_env.h | 11 +-
.../android/jsengine/object/weex_global_object.cpp | 21 +-
.../Source/android/jsengine/weex_ipc_server.cpp | 6 +-
weex_core/Source/android/jsengine/weex_runtime.cpp | 46 +-
weex_core/Source/android/utils/jni_load.cc | 1 +
weex_core/Source/android/utils/params_utils.cpp | 9 +-
weex_core/Source/android/wrap/log_utils.cpp | 98 +-
weex_core/Source/android/wrap/log_utils.h | 20 +-
weex_core/Source/android/wrap/wx_bridge.cpp | 19 +-
weex_core/Source/base/CMakeLists.txt | 1 +
.../Source/base/android/jni/scoped_java_ref.cpp | 5 +-
.../Source/base/android/jni/scoped_java_ref.h | 1 +
.../android/jniprebuild/jniheader/WXBridge_jni.h | 2034 ++++++++++----------
weex_core/Source/base/log_defines.cpp | 224 +--
weex_core/Source/base/log_defines.h | 182 +-
weex_core/Source/base/time_calculator.cpp | 117 ++
weex_core/Source/base/time_calculator.h | 130 +-
weex_core/Source/base/utils/log_utils.cpp | 60 +-
.../core/bridge/platform/core_side_in_platform.cpp | 7 +
.../core/bridge/platform/core_side_in_platform.h | 2 +-
weex_core/Source/core/bridge/platform_bridge.h | 2 +
.../core/bridge/script/core_side_in_script.cpp | 13 +-
.../core/bridge/script/core_side_in_script.h | 5 +
weex_core/Source/core/bridge/script_bridge.h | 10 +
weex_core/Source/core/config/core_environment.cpp | 3 +-
weex_core/Source/core/manager/weex_core_manager.h | 9 -
.../network/android/default_request_handler.cc | 14 +-
weex_core/Source/include/WeexApiHeader.h | 10 +
.../weex/bridge/script/script_side_in_queue.cpp | 5 +
.../weex/bridge/script/script_side_in_simple.cpp | 3 +
.../weex/object/weex_global_object_v2.cpp | 3 +-
weex_core/Source/third_party/IPC/IPCLog.h | 1 +
weex_core/Source/third_party/IPC/IPCMessageJS.h | 3 +-
80 files changed, 3122 insertions(+), 2196 deletions(-)
diff --git a/android/sdk/build.gradle b/android/sdk/build.gradle
index f757b04..f80bd7d 100755
--- a/android/sdk/build.gradle
+++ b/android/sdk/build.gradle
@@ -273,10 +273,10 @@ task checkNdkVersion() {
ndkDir = properties.getProperty('ndk.dir')
}
- if(null == ndkDir){
- def errMsg ='please set ndk.dir path in project/local.properties and ndk-16 supported only,example: ndk.dir=/Users/xxx/Library/Android/sdk/ndk-bundle-r16'
- throw new StopActionException(errMsg)
- }
+// if(null == ndkDir){
+// def errMsg ='please set ndk.dir path in project/local.properties and ndk-16 supported only,example: ndk.dir=/Users/xxx/Library/Android/sdk/ndk-bundle-r16'
+// throw new StopActionException(errMsg)
+// }
}
preBuild.dependsOn checkNdkVersion
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java b/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
index cac4e2c..519861d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXEnvironment.java
@@ -124,7 +124,7 @@ public class WXEnvironment {
public static LogLevel sLogLevel = LogLevel.DEBUG;
private static boolean isApkDebug = true;
- public static boolean isPerf = true;
+ public static boolean isPerf = false;
private static boolean sDebugFlagInit = false;
private static boolean openDebugLog = true;
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXHttpListener.java b/android/sdk/src/main/java/com/taobao/weex/WXHttpListener.java
index 74a9567..d2ffd09 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXHttpListener.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXHttpListener.java
@@ -30,6 +30,7 @@ import com.taobao.weex.common.WXResponse;
import com.taobao.weex.performance.WXInstanceApm;
import com.taobao.weex.tracing.WXTracing;
import com.taobao.weex.utils.WXLogUtils;
+import com.taobao.weex.utils.tools.LogDetail;
import java.util.HashMap;
import java.util.List;
@@ -54,10 +55,14 @@ public class WXHttpListener implements IWXHttpAdapter.OnHttpListener {
private boolean isInstanceReady =false;
private boolean isResponseHasWait = false;
private WXResponse mResponse;
+ private LogDetail mLogDetail;
private String mBundleUrl;
public WXHttpListener(WXSDKInstance instance) {
+ if(instance != null) {
+ mLogDetail = instance.mTimeCalculator.createLogDetail("downloadBundleJS");
+ }
this.instance = instance;
this.traceId = WXTracing.nextId();
this.mWXPerformance = instance.getWXPerformance();
@@ -102,6 +107,9 @@ public class WXHttpListener implements IWXHttpAdapter.OnHttpListener {
if (this.instance != null
&& this.instance.getWXStatisticsListener() != null) {
this.instance.getWXStatisticsListener().onHttpStart();
+ if(mLogDetail != null) {
+ mLogDetail.taskStart();
+ }
}
}
@@ -131,7 +139,9 @@ public class WXHttpListener implements IWXHttpAdapter.OnHttpListener {
@Override
public void onHttpFinish(WXResponse response) {
-
+ if(mLogDetail != null) {
+ mLogDetail.taskEnd();
+ }
if (this.instance != null
&& this.instance.getWXStatisticsListener() != null) {
this.instance.getWXStatisticsListener().onHttpFinish();
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
index 62e8896..959eab3 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
@@ -209,7 +209,7 @@ public class WXSDKEngine implements Serializable {
}
WXEnvironment.JsFrameworkInit = false;
- WXBridgeManager.getInstance().post(new Runnable() {
+ WXBridgeManager.getInstance().postWithName(new Runnable() {
@Override
public void run() {
long start = System.currentTimeMillis();
@@ -243,7 +243,7 @@ public class WXSDKEngine implements Serializable {
WXEnvironment.sSDKInitExecuteTime = System.currentTimeMillis() - start;
WXLogUtils.renderPerformanceLog("SDKInitExecuteTime", WXEnvironment.sSDKInitExecuteTime);
}
- });
+ },null,"doInitWeexSdkInternal");
WXStateRecord.getInstance().startJSThreadWatchDog();
register();
}
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index d07eebd..3802c33 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -91,6 +91,8 @@ import com.taobao.weex.utils.WXReflectionUtils;
import com.taobao.weex.utils.WXUtils;
import com.taobao.weex.utils.WXViewUtils;
import com.taobao.weex.utils.cache.RegisterCache;
+import com.taobao.weex.utils.tools.LogDetail;
+import com.taobao.weex.utils.tools.TimeCalculator;
import java.io.Serializable;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -205,6 +207,7 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
private String mRenderType = RenderTypes.RENDER_TYPE_NATIVE;
+ public TimeCalculator mTimeCalculator;
/**
* Default Width And Viewport is 750,
* when screen width change, we adjust viewport to adapter screen change
@@ -581,6 +584,8 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
// WXBridgeManager.getInstance().checkJsEngineMultiThread();
mDisableSkipFrameworkInit = isDisableSkipFrameworkInDataRender();
+
+ mTimeCalculator = new TimeCalculator(this);
}
/**
@@ -814,6 +819,7 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
return;
}
+ LogDetail logDetail = mTimeCalculator.createLogDetail("renderInternal");
mRenderStrategy = flag;
//some case ,from render(template),but not render (url)
@@ -852,7 +858,7 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
return;
}
-
+ TimeCalculator timeCalculator = new TimeCalculator(this);
mWXPerformance.JSTemplateSize = template.length() / 1024f;
mApmForInstance.addStats(WXInstanceApm.KEY_PAGE_STATS_BUNDLE_SIZE,mWXPerformance.JSTemplateSize);
@@ -880,12 +886,14 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
WXViewUtils.getScreenDensity(mContext));
}
}
+ logDetail.taskStart();
if (isPreInitMode()){
getApmForInstance().onStage(WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_START);
WXBridgeManager.getInstance().loadJsBundleInPreInitMode(getInstanceId(),template.getContent());
} else {
WXSDKManager.getInstance().createInstance(this, template, renderOptions, jsonInitData);
}
+ logDetail.taskEnd();
mRendered = true;
final IWXJscProcessManager wxJscProcessManager = WXSDKManager.getInstance().getWXJscProcessManager();
@@ -957,6 +965,9 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
final String jsonInitData,
WXRenderStrategy flag) {
+
+ LogDetail logDetail = mTimeCalculator.createLogDetail("renderByUrlInternal");
+ logDetail.taskStart();
ensureRenderArchor();
pageName = wrapPageName(pageName, url);
mBundleUrl = url;
@@ -1018,6 +1029,7 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
mHttpListener.setSDKInstance(this);
mApmForInstance.onStage(WXInstanceApm.KEY_PAGE_STAGES_DOWN_BUNDLE_START);
adapter.sendRequest(wxRequest, (IWXHttpAdapter.OnHttpListener) mHttpListener);
+ logDetail.taskEnd();
}
private WXHttpListener mHttpListener = null;
@@ -1436,7 +1448,7 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
WXLogUtils.w("Warning :Component tree has not build completely, onActivityDestroy can not be call!");
}
}
-
+ this.mTimeCalculator.println();
destroy();
}
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
index 669032f..3020cf6 100755
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
@@ -41,6 +41,7 @@ import com.taobao.weex.utils.WXJsonUtils;
import com.taobao.weex.utils.WXLogUtils;
import com.taobao.weex.utils.WXUtils;
import com.taobao.weex.utils.WXWsonJSONSwitch;
+import com.taobao.weex.utils.tools.TimeCalculator;
import java.io.Serializable;
import java.util.HashMap;
@@ -51,7 +52,7 @@ import java.util.Map;
* Communication interface for Java code and JavaScript code.
*/
-public class WXBridge implements IWXBridge {
+ public class WXBridge implements IWXBridge {
private native int nativeInitFrameworkEnv(String framework, WXParams params, String cacheDir, boolean pieSupport);
@@ -136,6 +137,7 @@ public class WXBridge implements IWXBridge {
public native void nativeUpdateGlobalConfig(String config);
private native void nativeSetViewPortWidth(String instanceId, float viewPortWidth);
+ private native void nativeSetLogType(float type, float isPerf);
public static final boolean MULTIPROCESS = true;
@@ -147,6 +149,12 @@ public class WXBridge implements IWXBridge {
}
@Override
+ public void setLogType(float type, boolean isPerf) {
+ Log.e("WeexCore", "setLog" + WXEnvironment.sLogLevel.getValue() + "isPerf : " + isPerf);
+ nativeSetLogType(type, isPerf ? 1 : 0);
+ }
+
+ @Override
public int initFramework(String framework, WXParams params) {
return nativeInitFramework(framework, params);
}
@@ -220,6 +228,7 @@ public class WXBridge implements IWXBridge {
@Override
public int createInstanceContext(String instanceId, String name, String function, WXJSObject[] args) {
+ Log.e(TimeCalculator.TIMELINE_TAG,"createInstance :" + System.currentTimeMillis());
WXStateRecord.getInstance().recordAction(instanceId,"createInstanceContext:");
return nativeCreateInstanceContext(instanceId, name, function, args);
}
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 987d83d..d9d09cc 100755
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -95,6 +95,8 @@ import com.taobao.weex.utils.WXViewUtils;
import com.taobao.weex.utils.WXWsonJSONSwitch;
import com.taobao.weex.utils.batch.BactchExecutor;
import com.taobao.weex.utils.batch.Interceptor;
+import com.taobao.weex.utils.tools.LogDetail;
+import com.taobao.weex.utils.tools.TimeCalculator;
import java.io.BufferedReader;
import java.io.File;
@@ -360,7 +362,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
WXModuleManager.reload();
WXComponentRegistry.reload();
}
- }, null);
+ });
}
}
}
@@ -521,12 +523,17 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public void run() {
mNextTickTasks.setStackTopInstance(instanceId);
}
- }, instanceId);
+ },instanceId, null, null);
}
@Override
public void post(Runnable r) {
- if (mInterceptor != null && mInterceptor.take(r)) {
+ postWithName(r,null,null);
+ }
+
+ public void postWithName(Runnable r, WXSDKInstance instance, String runnableName) {
+ Runnable secure = WXThread.secure(r,instance, runnableName);
+ if (mInterceptor != null && mInterceptor.take(secure)) {
//task is token by the interceptor
return;
}
@@ -534,7 +541,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
return;
}
- mJSHandler.post(WXThread.secure(r));
+ mJSHandler.post(secure);
}
@Override
@@ -542,16 +549,20 @@ public class WXBridgeManager implements Callback, BactchExecutor {
mInterceptor = interceptor;
}
- public void post(Runnable r, Object token) {
+ public void post(Runnable r, Object token, WXSDKInstance instance, String runnableName) {
if (mJSHandler == null) {
return;
}
- Message m = Message.obtain(mJSHandler, WXThread.secure(r));
+ Message m = Message.obtain(mJSHandler, WXThread.secure(r, instance, runnableName));
m.obj = token;
m.sendToTarget();
}
+ public void post(Runnable r, Object token) {
+ post(r, token, null, null);
+ }
+
public void postDelay(Runnable r,long delayMillis){
if (mJSHandler == null) {
return;
@@ -1482,6 +1493,17 @@ public class WXBridgeManager implements Callback, BactchExecutor {
createInstance(instanceId, new Script(template), options, data);
}
+ public void setLogLevel(final int level, final boolean isPerf) {
+ post(new Runnable() {
+ @Override
+ public void run() {
+ if(mWXBridge != null) {
+ mWXBridge.setLogType(level, isPerf);
+ }
+ }
+ });
+ }
+
public void createInstance(final String instanceId, final Script template,
final Map<String, Object> options, final String data) {
final WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
@@ -1511,7 +1533,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public void run() {
initFramework("");
}
- }, instanceId);
+ }, instanceId, instance,"initFrameworkInCreateInstance");
return;
}
@@ -1529,7 +1551,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
instance.getWXPerformance().callCreateInstanceTime = end - start;
instance.getWXPerformance().communicateTime = instance.getWXPerformance().callCreateInstanceTime;
}
- }, instanceId);
+ }, instanceId, instance,"createInstance");
}
private void invokeCreateInstance(@NonNull WXSDKInstance instance, Script template,
@@ -1670,6 +1692,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
// others will use invokeExecJS
if (!isSandBoxContext) {
instance.getApmForInstance().onStage("!isSandBoxContext,and excute");
+ WXLogUtils.e("Instance " + instance.getInstanceId() + " Did Not Render in SandBox Mode");
invokeExecJS(instance.getInstanceId(), null, METHOD_CREATE_INSTANCE, args, false);
return;
}
@@ -1678,11 +1701,15 @@ public class WXBridgeManager implements Callback, BactchExecutor {
|| instance.getRenderStrategy() == WXRenderStrategy.DATA_RENDER_BINARY
|| instance.getRenderStrategy() == WXRenderStrategy.JSON_RENDER) {
instance.getApmForInstance().onStage("wxBeforeInvokeCreateInstanceContext");
+
+ WXLogUtils.d("Instance " + instance.getInstanceId() + " Render in SandBox Mode And Render Type is "
+ + type + " Render Strategy is " + instance.getRenderStrategy());
+
int ret = invokeCreateInstanceContext(instance.getInstanceId(), null, "createInstanceContext", args, false);
instance.getApmForInstance().onStage(WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_END);
if(ret == 0) {
String err = "[WXBridgeManager] invokeCreateInstance : " + instance.getTemplateInfo();
-
+ WXLogUtils.e("Instance " + instance.getInstanceId() + "Render error : " + err);
instance.onRenderError(
WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg() + err);
@@ -1697,6 +1724,9 @@ public class WXBridgeManager implements Callback, BactchExecutor {
// WXErrorCode.WX_KEY_EXCEPTION_NO_BUNDLE_TYPE.getErrorMsg(),
// null
//);
+
+ WXLogUtils.d("Instance " + instance.getInstanceId() + "Did not Render in SandBox Mode And Render Type is "
+ + type + " Render Strategy is " + instance.getRenderStrategy());
instance.getApmForInstance().onStage("StartInvokeExecJSBadBundleType");
invokeExecJS(instance.getInstanceId(), null, METHOD_CREATE_INSTANCE, args, false);
instance.getApmForInstance().onStage(WXInstanceApm.KEY_PAGE_STAGES_LOAD_BUNDLE_END);
@@ -1706,7 +1736,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
String err = "[WXBridgeManager] invokeCreateInstance " + e.getCause()
+ instance.getTemplateInfo();
instance.getApmForInstance().onStage("createInstance error :"+e.toString());
-
+ WXLogUtils.e("Instance " + instance.getInstanceId() + "Render error : " + err);
instance.onRenderError(
WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorCode(),
WXErrorCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getErrorMsg() + err);
@@ -1812,7 +1842,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
removeTaskByInstance(instanceId);
invokeDestroyInstance(instanceId);
}
- }, instanceId);
+ }, instanceId, null, "destroyInstance");
}
private void removeTaskByInstance(String instanceId) {
@@ -1878,8 +1908,8 @@ public class WXBridgeManager implements Callback, BactchExecutor {
invokeExecJS(instanceId, namespace, function, args, true);
}
- public void invokeExecJS(String instanceId, String namespace, String function,
- WXJSObject[] args, boolean logTaskDetail) {
+ public void invokeExecJS(final String instanceId, final String namespace, final String function,
+ final WXJSObject[] args, boolean logTaskDetail) {
if (WXEnvironment.isOpenDebugLog() && BRIDGE_LOG_SWITCH) {
mLodBuilder.append("callJS >>>> instanceId:").append(instanceId)
.append("function:").append(function);
@@ -1901,7 +1931,13 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
callbackJavascriptOnDataRender(instanceId, (String) data.first.first, data.first.second, data.second);
} else {
- mWXBridge.execJS(instanceId, namespace, function, args);
+
+ WXThread.secure(new Runnable() {
+ @Override
+ public void run() {
+ mWXBridge.execJS(instanceId, namespace, function, args);
+ }
+ }, instance, "ExecJs").run();
}
if (null != instance){
long diff = System.currentTimeMillis()-start;
@@ -2022,6 +2058,9 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public static StringBuilder sInitFrameWorkMsg = new StringBuilder();
private void initFramework(String framework) {
+ LogDetail logDetail = new LogDetail();
+ logDetail.name("initFramework");
+ logDetail.taskStart();
if (WXSDKEngine.isSoInitialized() && !isJSFrameworkInit()) {
sInitFrameWorkTimeOrigin = System.currentTimeMillis();
if (TextUtils.isEmpty(framework)) {
@@ -2029,6 +2068,10 @@ public class WXBridgeManager implements Callback, BactchExecutor {
WXLogUtils.d("weex JS framework from assets");
// }
+ LogDetail logDetail2 = new LogDetail();
+ logDetail2.name("loadJSFramework");
+ logDetail2.taskStart();
+
IWXJsFileLoaderAdapter wxJsFileLoaderAdapter = WXSDKEngine.getIWXJsFileLoaderAdapter();
if (!isSandBoxContext) {
@@ -2049,6 +2092,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
}
sInitFrameWorkMsg.append("| weex JS framework from assets, isSandBoxContext: ").append(isSandBoxContext);
+ logDetail2.taskEnd();
}
if (TextUtils.isEmpty(framework)) {
setJSFrameworkInit(false);
@@ -2092,11 +2136,15 @@ public class WXBridgeManager implements Callback, BactchExecutor {
sInitFrameWorkMsg.append(" | pieSupport:").append(pieSupport);
WXLogUtils.d("[WXBridgeManager] initFrameworkEnv crashFile:" + crashFile + " pieSupport:" + pieSupport);
// extends initFramework
+ LogDetail logDetail3 = new LogDetail();
+ logDetail3.name("native initFrameworkEnv");
+ logDetail3.taskStart();
if (mWXBridge.initFrameworkEnv(framework, assembleDefaultOptions(), crashFile, pieSupport) == INIT_FRAMEWORK_OK) {
+ logDetail3.taskEnd();
WXEnvironment.sJSLibInitTime = System.currentTimeMillis() - start;
WXEnvironment.sSDKInitTime = System.currentTimeMillis() - WXEnvironment.sSDKInitStart;
setJSFrameworkInit(true);
-
+ logDetail.taskEnd();
if (WXSDKManager.getInstance().getWXStatisticsListener() != null) {
WXSDKManager.getInstance().getWXStatisticsListener().onJsFrameworkReady();
}
@@ -2279,7 +2327,7 @@ public class WXBridgeManager implements Callback, BactchExecutor {
public void run() {
invokeRegisterModules(modules, mRegisterModuleFailList);
}
- }, null);
+ });
}
}
}
@@ -2302,17 +2350,17 @@ public class WXBridgeManager implements Callback, BactchExecutor {
if(isJSThread() && isJSFrameworkInit()){
runnable.run();
}else{
- post(runnable, null);
+ post(runnable);
}
}
public void execJSService(final String service) {
- post(new Runnable() {
+ postWithName(new Runnable() {
@Override
public void run() {
invokeExecJSService(service, mRegisterServiceFailList);
}
- });
+ },null,"execJSService");
}
private void invokeExecJSService(String service, List<String> receiver) {
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java
index 650d64e..f544123 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXModuleManager.java
@@ -74,7 +74,7 @@ public class WXModuleManager {
final Iterator<Entry<String, RegisterCache.ModuleCache>> iterator = moduleCacheMap.entrySet().iterator();
WXBridgeManager.getInstance()
- .post(new Runnable() {
+ .postWithName(new Runnable() {
@Override
public void run() {
Map<String, Object> modules = new HashMap<>();
@@ -117,7 +117,7 @@ public class WXModuleManager {
}
WXSDKManager.getInstance().registerModules(modules);
}
- });
+ },null,"registerModule From Cache");
return true;
}
@@ -140,7 +140,7 @@ public class WXModuleManager {
//execute task in js thread to make sure register order is same as the order invoke register method.
WXBridgeManager.getInstance()
- .post(new Runnable() {
+ .postWithName(new Runnable() {
@Override
public void run() {
if (sModuleFactoryMap != null && sModuleFactoryMap.containsKey(moduleName)) {
@@ -170,7 +170,7 @@ public class WXModuleManager {
}
}
- });
+ },null,"registerModule");
return true;
}
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
index 5e69b5c..da33222 100755
--- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
@@ -59,6 +59,8 @@ public interface IWXBridge extends IWXObject {
void updateInitFrameworkParams(String key, String value, String desc);
+ void setLogType(float type, boolean isPerf);
+
void refreshInstance(String instanceId, String namespace, String function, WXJSObject[] args);
/**
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXThread.java b/android/sdk/src/main/java/com/taobao/weex/common/WXThread.java
index 7cec9e9..f8afc56 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/WXThread.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/WXThread.java
@@ -23,7 +23,13 @@ import android.os.Handler.Callback;
import android.os.HandlerThread;
import android.os.Message;
import com.taobao.weex.WXEnvironment;
+import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.utils.WXLogUtils;
+import com.taobao.weex.utils.tools.LogDetail;
+
+import java.lang.ref.WeakReference;
+
+import static com.taobao.weex.utils.tools.TimeCalculator.PLATFORM_ANDROID;
/**
* Thread used in weex
@@ -35,17 +41,37 @@ public class WXThread extends HandlerThread {
static class SafeRunnable implements Runnable {
static final String TAG = "SafeRunnable";
-
+ private LogDetail mTimelineLog = null;
+ private WeakReference<WXSDKInstance> mInstance;
final Runnable mTask;
SafeRunnable(Runnable task){
- mTask = task;
+ this(task,null);
+ }
+
+ SafeRunnable(Runnable task, String taskName){
+ this(task,null, taskName);
+ }
+
+ SafeRunnable(Runnable runnable, WXSDKInstance instance, String taskName) {
+ mTask = runnable;
+ if(taskName != null) {
+ mTimelineLog = new LogDetail();
+ mTimelineLog.info.platform = PLATFORM_ANDROID;
+ mTimelineLog.name(taskName);
+ mInstance = new WeakReference<>(instance);
+ }
}
@Override
public void run() {
try {
- if(mTask != null)
+ if(mTask != null) {
+ if (mTimelineLog != null)
+ mTimelineLog.taskStart();
mTask.run();
+ if (mTimelineLog != null)
+ mTimelineLog.taskEnd();
+ }
}catch (Throwable e){
//catch everything may throw from exection.
if(WXEnvironment.isApkDebugable()){
@@ -54,6 +80,16 @@ public class WXThread extends HandlerThread {
}
WXLogUtils.w(TAG, e);
}
+
+ if (mTimelineLog != null) {
+ if(mInstance != null) {
+ WXSDKInstance wxsdkInstance = mInstance.get();
+ if(wxsdkInstance != null) {
+ wxsdkInstance.mTimeCalculator.addLog(mTimelineLog);
+ }
+ }
+ }
+
}
}
@@ -90,10 +126,15 @@ public class WXThread extends HandlerThread {
* @return
*/
public static Runnable secure(Runnable runnable){
+ return secure(runnable, null, null);
+ }
+
+
+ public static Runnable secure(Runnable runnable, WXSDKInstance instance, String runnableName){
if(runnable == null || runnable instanceof SafeRunnable){
return runnable;
}
- return new SafeRunnable(runnable);
+ return new SafeRunnable(runnable,instance, runnableName);
}
public static Callback secure(Callback callback){
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/module/ConsoleLogModule.java b/android/sdk/src/main/java/com/taobao/weex/ui/module/ConsoleLogModule.java
index e34dd81..3db7cef 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/module/ConsoleLogModule.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/module/ConsoleLogModule.java
@@ -21,9 +21,12 @@ package com.taobao.weex.ui.module;
import android.support.annotation.Nullable;
import android.support.v4.util.ArrayMap;
import android.text.TextUtils;
+import android.util.Log;
+
import com.taobao.weex.WXEnvironment;
import com.taobao.weex.annotation.JSMethod;
import com.taobao.weex.bridge.JSCallback;
+import com.taobao.weex.bridge.WXBridgeManager;
import com.taobao.weex.common.WXModule;
import com.taobao.weex.utils.LogLevel;
import java.util.Map;
@@ -37,6 +40,7 @@ public class ConsoleLogModule extends WXModule {
Map<String, String> ret = new ArrayMap<>();
if (logLevelEnum != null) {
WXEnvironment.sLogLevel = logLevelEnum;
+ WXBridgeManager.getInstance().setLogLevel(WXEnvironment.sLogLevel.getValue(),WXEnvironment.isPerf());
ret.put("status", "success");
} else {
ret.put("status", "failure");
@@ -48,6 +52,12 @@ public class ConsoleLogModule extends WXModule {
}
+ @JSMethod(uiThread = false)
+ public void setPerfMode(@Nullable String on) {
+ WXEnvironment.isPerf = "true".equals(on);
+ WXBridgeManager.getInstance().setLogLevel(WXEnvironment.sLogLevel.getValue(),WXEnvironment.isPerf());
+ }
+
private @Nullable LogLevel getLogLevel(@Nullable String logLevel) {
LogLevel logLevelEnum = null;
if(!TextUtils.isEmpty(logLevel)){
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java b/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java
index e96ce3f..a590820 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/LogLevel.java
@@ -24,8 +24,9 @@ import android.util.Log;
* Created by lixinke on 16/5/11.
*/
public enum LogLevel {
- OFF("off",7, Log.ASSERT),
- WTF("wtf", 6, Log.ASSERT),
+ OFF("off",8, Log.ASSERT),
+ WTF("wtf", 7, Log.ASSERT),
+ TLOG("tlog",6,Log.ERROR), //Add For Son Process
ERROR("error", 5, Log.ERROR),
WARN("warn", 4, Log.WARN),
INFO("info", 3, Log.INFO),
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java b/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
index b4f4326..2560777 100644
--- a/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
@@ -21,7 +21,13 @@ package com.taobao.weex.utils;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
+
+import com.alibaba.fastjson.JSON;
import com.taobao.weex.WXEnvironment;
+import com.taobao.weex.WXSDKInstance;
+import com.taobao.weex.WXSDKManager;
+import com.taobao.weex.utils.tools.LogDetail;
+
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -30,6 +36,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import static com.taobao.weex.utils.tools.TimeCalculator.TIMELINE_TAG;
+
public class WXLogUtils {
public static final String WEEX_TAG = "weex";
@@ -131,6 +139,22 @@ public class WXLogUtils {
e(tag, new String(msg));
}
+ public static void performance(String instanceId, byte[]msg) {
+// String s = new String(msg);
+// if(!TextUtils.isEmpty(instanceId)) {
+// WXSDKInstance sdkInstance = WXSDKManager.getInstance().getSDKInstance(instanceId);
+// if(sdkInstance != null) {
+// int i = s.indexOf(",");
+// if(i >=0 && i < s.length()) {
+// String substring = s.substring(s.indexOf(",") + 1);
+// LogDetail logDetail = JSON.parseObject(substring,LogDetail.class);
+// sdkInstance.mTimeCalculator.addLog(logDetail);
+// }
+// }
+// }
+// Log.e(TIMELINE_TAG, "from WeexCore" + s);
+ }
+
public static void wtf(String msg){
wtf(WEEX_TAG, msg);
}
diff --git a/weex_core/Source/android/wrap/log_utils.h b/android/sdk/src/main/java/com/taobao/weex/utils/tools/Info.java
similarity index 53%
copy from weex_core/Source/android/wrap/log_utils.h
copy to android/sdk/src/main/java/com/taobao/weex/utils/tools/Info.java
index 5bdf164..a9dd401 100644
--- a/weex_core/Source/android/wrap/log_utils.h
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/tools/Info.java
@@ -16,21 +16,40 @@
* specific language governing permissions and limitations
* under the License.
*/
+package com.taobao.weex.utils.tools;
-#ifndef WEEX_PROJECT_LOG_UTILS_H
-#define WEEX_PROJECT_LOG_UTILS_H
+import com.alibaba.fastjson.annotation.JSONField;
-#include <jni.h>
-#include "base/log_defines.h"
-#include "core/bridge/log_bridge.h"
+public class Info{
-namespace WeexCore {
-class LogUtils : public LogBridge {
- public:
- static bool RegisterJNIUtils(JNIEnv* env);
- static void NativeLog(JNIEnv* env, const char* str_array);
- void log(LogLevel level, const char* tag, const char* file, unsigned long line, const char* log) override;
-};
-} // namespace WeexCore
+ public Info() {
+ taskInfo = new TaskInfo();
+ }
-#endif // WEEX_PROJECT_LOG_UTILS_H
+ @JSONField(name="instanceId")
+ public String instanceId;
+
+ @JSONField(name="taskName")
+ public String taskName;
+
+ @JSONField(name="taskInfo")
+ public TaskInfo taskInfo;
+
+ @JSONField(name="platform")
+ public String platform;
+
+ @JSONField(name="taskId")
+ public int taskId;
+
+ @Override
+ public String toString(){
+ return
+ "Info : {" +
+ "instanceId = '" + instanceId + '\'' +
+ ",taskName = '" + taskName + '\'' +
+ ",taskInfo = '" + taskInfo + '\'' +
+ ",platform = '" + platform + '\'' +
+ ",taskId = '" + taskId + '\'' +
+ "}";
+ }
+}
\ No newline at end of file
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/tools/LogDetail.java b/android/sdk/src/main/java/com/taobao/weex/utils/tools/LogDetail.java
new file mode 100644
index 0000000..d7b3211
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/tools/LogDetail.java
@@ -0,0 +1,85 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.taobao.weex.utils.tools;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.taobao.weex.WXEnvironment;
+
+public class LogDetail {
+ public static final String KeyWrod_Init = "Weex_Init";
+ public static final String KeyWords_Render = "Weex_Render";
+
+ public LogDetail() {
+ time = new Time();
+ info = new Info();
+ }
+
+ @JSONField(name = "time")
+ public Time time;
+
+ @JSONField(name = "Info")
+ public Info info;
+
+ @Override
+ public String toString() {
+ return
+ "taskName : " + info.taskName + " - LogDetail : {" +
+ "time = '" + time + '\'' +
+ ", info = '" + info + '\'' +
+ "}";
+ }
+
+
+ public String keyWords = KeyWords_Render;
+
+ public void println() {
+ if(WXEnvironment.isPerf())
+ Log.e(TimeCalculator.TIMELINE_TAG," timeline " + this.keyWords + " java LogDetail: " + this.toString());
+ }
+
+ public void name(String name) {
+ time.constructor();
+ info.taskName = name;
+ if(!TextUtils.isEmpty(name)) {
+ String s = name.toLowerCase();
+ if(s.contains("module")
+ || s.contains("component")
+ || s.contains("framework")) {
+ this.keyWords = KeyWrod_Init;
+ }
+ }
+ }
+
+ public void keyWorkds(String keyWords) {
+ this.keyWords = keyWords;
+ }
+
+ public void taskStart() {
+ time.taskStart();
+ }
+
+ public void taskEnd() {
+ time.taskEnd();
+ println();
+ }
+
+}
\ No newline at end of file
diff --git a/weex_core/Source/core/bridge/log_bridge.h b/android/sdk/src/main/java/com/taobao/weex/utils/tools/LogSwitch.java
similarity index 53%
copy from weex_core/Source/core/bridge/log_bridge.h
copy to android/sdk/src/main/java/com/taobao/weex/utils/tools/LogSwitch.java
index 91ad11e..8dc4c4a 100644
--- a/weex_core/Source/core/bridge/log_bridge.h
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/tools/LogSwitch.java
@@ -16,16 +16,39 @@
* specific language governing permissions and limitations
* under the License.
*/
+package com.taobao.weex.utils.tools;
-#pragma once
+public class LogSwitch {
+
+ private int low_level = 4;
+ private int medium_level = 2;
+ private int high_level = 1;
+ private int log_switch = 0;
+ private boolean showLowLevelLog = false;
+ private boolean showMediumLevelLog = false;
+ private boolean showHighLevelLog = true;
+
+
+ public void setLog_switch() {
+ // Todo
+ // read prop
+
+ if (showLowLevelLog)
+ log_switch |= low_level;
+
+ if (showMediumLevelLog) {
+ log_switch |= medium_level;
+ }
+
+ if (showHighLevelLog) {
+ log_switch |= high_level;
+ }
+ }
+
+
+ public int getLog_switch() {
+ return log_switch;
+ }
-namespace WeexCore {
- class LogBridge {
- public:
- LogBridge() {}
-
- virtual void log(LogLevel level, const char* tag, const char* file, unsigned long line, const char* log) {};
- };
-
}
diff --git a/weex_core/Source/core/bridge/log_bridge.h b/android/sdk/src/main/java/com/taobao/weex/utils/tools/TaskInfo.java
similarity index 68%
rename from weex_core/Source/core/bridge/log_bridge.h
rename to android/sdk/src/main/java/com/taobao/weex/utils/tools/TaskInfo.java
index 91ad11e..67bae84 100644
--- a/weex_core/Source/core/bridge/log_bridge.h
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/tools/TaskInfo.java
@@ -16,16 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
+package com.taobao.weex.utils.tools;
-#pragma once
+import com.alibaba.fastjson.annotation.JSONField;
-namespace WeexCore {
+public class TaskInfo{
- class LogBridge {
- public:
- LogBridge() {}
-
- virtual void log(LogLevel level, const char* tag, const char* file, unsigned long line, const char* log) {};
- };
-
-}
+ @JSONField(name="args")
+ public String args;
+
+ @JSONField(name="relateTaskId")
+ public int relateTaskId;
+
+ @Override
+ public String toString(){
+ return
+ "TaskInfo{" +
+ "args = '" + args + '\'' +
+ ",relateTaskId = '" + relateTaskId + '\'' +
+ "}";
+ }
+}
\ No newline at end of file
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/tools/Time.java b/android/sdk/src/main/java/com/taobao/weex/utils/tools/Time.java
new file mode 100644
index 0000000..edeab93
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/tools/Time.java
@@ -0,0 +1,83 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.taobao.weex.utils.tools;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+public class Time {
+
+ @JSONField(name = "taskStart")
+ public long taskStart;
+
+ @JSONField(name = "execTime")
+ public long execTime;
+
+ @JSONField(name = "constructor")
+ public long constructor;
+
+ @JSONField(name = "destructor")
+ public long destructor;
+
+ @JSONField(name = "taskEnd")
+ public long taskEnd;
+
+ @JSONField(name = "waitTime")
+ public long waitTime;
+
+ @Override
+ public String toString() {
+ return
+ "time : {" +
+ "constructor = '" + constructor + '\'' +
+ ",taskStart = '" + taskStart + '\'' +
+ ",execTime = '" + execTime + '\'' +
+ ",waitTime = '" + waitTime + '\'' +
+ ",destructor = '" + destructor + '\'' +
+ ",taskEnd = '" + taskEnd + '\'' +
+ "}";
+ }
+
+
+ protected void constructor() {
+ constructor = System.currentTimeMillis();
+ }
+
+ public void execTime() {
+ execTime = taskEnd - taskStart;
+ }
+
+ public void taskStart() {
+ taskStart = System.currentTimeMillis();
+ }
+
+ public void taskEnd() {
+ taskEnd = System.currentTimeMillis();
+ execTime();
+ destructor();
+ }
+
+ private void destructor() {
+ waitTime();
+ destructor = System.currentTimeMillis();
+ }
+
+ public void waitTime() {
+ waitTime = taskStart - constructor;
+ }
+}
\ No newline at end of file
diff --git a/android/sdk/src/main/java/com/taobao/weex/utils/tools/TimeCalculator.java b/android/sdk/src/main/java/com/taobao/weex/utils/tools/TimeCalculator.java
new file mode 100644
index 0000000..1e3eb2d
--- /dev/null
+++ b/android/sdk/src/main/java/com/taobao/weex/utils/tools/TimeCalculator.java
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.taobao.weex.utils.tools;
+
+import android.util.Log;
+
+import com.alibaba.fastjson.JSON;
+import com.taobao.weex.WXEnvironment;
+import com.taobao.weex.WXSDKInstance;
+
+import java.util.concurrent.CopyOnWriteArrayList;
+
+public class TimeCalculator {
+
+ public static final String TIMELINE_TAG = "timeline";
+
+ public static final String PLATFORM_ANDROID = "Android";
+
+ private CopyOnWriteArrayList<LogDetail> logRecorder;
+ public TimeCalculator(WXSDKInstance instance) {
+ logRecorder = new CopyOnWriteArrayList<LogDetail>();
+ }
+
+ public void addLog(LogDetail logDetail) {
+ if(!WXEnvironment.isPerf()) {
+ return;
+ }
+ logRecorder.add(logDetail);
+ }
+
+ public LogDetail createLogDetail(String name) {
+ LogDetail logDetail = new LogDetail();
+ logDetail.name(name);
+ addLog(logDetail);
+ return logDetail;
+ }
+
+ public void println() {
+ if(!WXEnvironment.isPerf()) {
+ return;
+ }
+
+ for (LogDetail l: logRecorder) {
+ Log.e(TIMELINE_TAG, JSON.toJSONString(l));
+ }
+
+ }
+
+
+ private String test = "{\"time\":{\"execTime\":0,\"constructor\":0,\"destructor\":0,\"taskStart\":0,\"taskEnd\":0,\"waitTime\":0},\"Info\":{\"taskInfo\":{\"relateTaskId\":0,\"args\":\"stringReplace\"},\"taskName\":\"stringReplace\",\"instanceId\":\"1\",\"platform\":\"stringReplace\",\"taskId\":0}}";
+}
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index ef98925..de22be0 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -570,6 +570,10 @@
BD9205F82236518700EDF93D /* WXDataRenderHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = BD9205F72236518700EDF93D /* WXDataRenderHandler.h */; settings = {ATTRIBUTES = (Public, ); }; };
BD9205FB223651D900EDF93D /* eagle_bridge.h in Headers */ = {isa = PBXBuildFile; fileRef = BD9205F9223651D800EDF93D /* eagle_bridge.h */; settings = {ATTRIBUTES = (Public, ); }; };
BD9205FC223651D900EDF93D /* eagle_bridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD9205FA223651D800EDF93D /* eagle_bridge.cpp */; };
+ BDEEADBA22F2902E0099F1D7 /* time_calculator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BDEEADB822F2902D0099F1D7 /* time_calculator.cpp */; };
+ BDEEADBB22F2902E0099F1D7 /* time_calculator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BDEEADB822F2902D0099F1D7 /* time_calculator.cpp */; };
+ BDEEADBC22F2902E0099F1D7 /* time_calculator.h in Headers */ = {isa = PBXBuildFile; fileRef = BDEEADB922F2902E0099F1D7 /* time_calculator.h */; };
+ BDEEADBD22F2902E0099F1D7 /* time_calculator.h in Headers */ = {isa = PBXBuildFile; fileRef = BDEEADB922F2902E0099F1D7 /* time_calculator.h */; };
C401945E1E344E8300D19C31 /* WXFloatCompareTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C401945D1E344E8300D19C31 /* WXFloatCompareTests.m */; };
C41E1A971DC1FD15009C7F90 /* WXDatePickerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C41E1A951DC1FD15009C7F90 /* WXDatePickerManager.h */; };
C41E1A981DC1FD15009C7F90 /* WXDatePickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C41E1A961DC1FD15009C7F90 /* WXDatePickerManager.m */; };
@@ -1306,6 +1310,8 @@
BD9205F72236518700EDF93D /* WXDataRenderHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXDataRenderHandler.h; sourceTree = "<group>"; };
BD9205F9223651D800EDF93D /* eagle_bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eagle_bridge.h; sourceTree = "<group>"; };
BD9205FA223651D800EDF93D /* eagle_bridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eagle_bridge.cpp; sourceTree = "<group>"; };
+ BDEEADB822F2902D0099F1D7 /* time_calculator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = time_calculator.cpp; sourceTree = "<group>"; };
+ BDEEADB922F2902E0099F1D7 /* time_calculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = time_calculator.h; sourceTree = "<group>"; };
C401945D1E344E8300D19C31 /* WXFloatCompareTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXFloatCompareTests.m; sourceTree = "<group>"; };
C41E1A951DC1FD15009C7F90 /* WXDatePickerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXDatePickerManager.h; sourceTree = "<group>"; };
C41E1A961DC1FD15009C7F90 /* WXDatePickerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXDatePickerManager.m; sourceTree = "<group>"; };
@@ -2340,6 +2346,8 @@
D735F1AA22D761F800B53CDF /* utils */,
77E349F6229FE67900B1CDAB /* log_defines.cpp */,
77CF6A5421E6E47D00BA8634 /* core_constants.h */,
+ BDEEADB822F2902D0099F1D7 /* time_calculator.cpp */,
+ BDEEADB922F2902E0099F1D7 /* time_calculator.h */,
77CF6A5521E6E47D00BA8634 /* log_defines.h */,
B8F3323B2141A4C500701BA0 /* string_util.h */,
B8D66B892125572F003960BD /* make_copyable.h */,
@@ -2523,6 +2531,7 @@
74CFDD451F459443007A1A66 /* WXRecycleListUpdateManager.h in Headers */,
74A4BA9A1CB3BAA100195969 /* WXThreadSafeMutableDictionary.h in Headers */,
741DFE021DDD7D18009B020F /* WXRoundedRect.h in Headers */,
+ BDEEADBC22F2902E0099F1D7 /* time_calculator.h in Headers */,
17C74F0F2072147B00AB4CAB /* WXAnalyzerProtocol.h in Headers */,
7423899B1C3174EB00D748CA /* WXWeakObjectWrapper.h in Headers */,
74BF19F81F5139BB00AEE3D7 /* WXJSASTParser.h in Headers */,
@@ -2769,6 +2778,7 @@
DCA445E31EFA59DA00D0CFA8 /* WXEmbedComponent.h in Headers */,
DCA445DF1EFA59BC00D0CFA8 /* WXLoadingComponent.h in Headers */,
B8D66C2E21255730003960BD /* render_manager.h in Headers */,
+ BDEEADBD22F2902E0099F1D7 /* time_calculator.h in Headers */,
C42E8FAD1F3C7C3F001EBE9D /* WXExtendCallNativeManager.h in Headers */,
DCA445CB1EFA590600D0CFA8 /* WXComponent+Layout.h in Headers */,
DCA4460F1EFA5A8100D0CFA8 /* WXDiffUtil.h in Headers */,
@@ -3308,6 +3318,7 @@
74D205211E091B8000128F44 /* WXCallJSMethod.m in Sources */,
BD88C14522F02120004467AA /* render_action_update_richtext_child_attr.cpp in Sources */,
C41E1A981DC1FD15009C7F90 /* WXDatePickerManager.m in Sources */,
+ BDEEADBA22F2902E0099F1D7 /* time_calculator.cpp in Sources */,
77D1614C1C02E3790010B15B /* WXConvert.m in Sources */,
749DC27C1D40827B009E1C91 /* WXMonitor.m in Sources */,
C4B834271DE69B09007AD27E /* WXPickerModule.m in Sources */,
@@ -3498,6 +3509,7 @@
DCA445951EFA55B300D0CFA8 /* WXRuleManager.m in Sources */,
BD88C14622F02120004467AA /* render_action_update_richtext_child_attr.cpp in Sources */,
DCA445961EFA55B300D0CFA8 /* WXMonitor.m in Sources */,
+ BDEEADBB22F2902E0099F1D7 /* time_calculator.cpp in Sources */,
DCA445971EFA55B300D0CFA8 /* WXComponent+Navigation.m in Sources */,
DCA445981EFA55B300D0CFA8 /* WXSDKInstance.m in Sources */,
DCA445991EFA55B300D0CFA8 /* WXJSExceptionInfo.m in Sources */,
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
index b7bddd1..c8d68d7 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
@@ -38,6 +38,7 @@
#import "WXRichText.h"
#include "base/core_constants.h"
#include "base/time_utils.h"
+#include "base/log_defines.h"
#include "core/manager/weex_core_manager.h"
#include "core/render/manager/render_manager.h"
#include "core/render/target/render_target.h"
@@ -1052,9 +1053,9 @@ break; \
#pragma mark - Log Bridge
- class LogBridgeIOS: public LogBridge {
+ class LogBridgeIOS: public weex::base::LogBase {
public:
- virtual void log(LogLevel level, const char* tag, const char* file, unsigned long line, const char* log) override {
+ virtual bool log(LogLevel level, const char* tag, const char* file, unsigned long line, const char* log) override {
#ifdef DEBUG
switch (level) {
case LogLevel::Error:
@@ -1091,6 +1092,7 @@ break; \
[WXLog devLog:wxLogLevel file:file line:line format:@"<%s> %s", tag, log];
#endif
+ return true;
}
};
}
@@ -1542,7 +1544,15 @@ static WeexCore::ScriptBridge* jsBridge = nullptr;
env->AddOption("screen_width_pixels", std::to_string(screenSize.width));
env->AddOption("screen_height_pixels", std::to_string(screenSize.height));
- WeexCore::WeexCoreManager::Instance()->set_log_bridge(new WeexCore::LogBridgeIOS());
+ weex::base::LogImplement::getLog()->setLogImplement(new WeexCore::LogBridgeIOS());
+
+#ifdef DEBUG
+ weex::base::LogImplement::getLog()->setDebugMode(true);
+#else
+ weex::base::LogImplement::getLog()->setDebugMode(false);
+#endif
+
+
platformBridge = new WeexCore::PlatformBridge();
platformBridge->set_platform_side(new WeexCore::IOSSide());
diff --git a/weex_core/Source/CMakeLists.txt b/weex_core/Source/CMakeLists.txt
index 5016d66..d1bb5fe 100755
--- a/weex_core/Source/CMakeLists.txt
+++ b/weex_core/Source/CMakeLists.txt
@@ -39,6 +39,7 @@ add_definitions(-DPERFORMANCE_LOG=0)
add_definitions(-DLAYOUT_LOG=0)
add_definitions(-DJSAPI_LOG=0)
add_definitions(-DDOM_PARSER_LOG=0)
+add_definitions(-DDEBUG=1)
message("ANDROID_PROJECT_DIR:"${ANDROID_PROJECT_DIR})
set(LOCAL_LIBRARIES_DIR ${ANDROID_PROJECT_DIR}/libs/${ANDROID_ABI})
diff --git a/weex_core/Source/WXBridge_jni.h b/weex_core/Source/WXBridge_jni.h
index c0ad73f..685f9f5 100644
--- a/weex_core/Source/WXBridge_jni.h
+++ b/weex_core/Source/WXBridge_jni.h
@@ -189,6 +189,9 @@ static void RemoveInstanceRenderType(JNIEnv* env, jobject jcaller,
static void UpdateGlobalConfig(JNIEnv* env, jobject jcaller,
jstring config);
+static void SetLogType(JNIEnv* env, jobject jcaller, jfloat logLevel,
+ jfloat isPerf);
+
// Step 2: method stubs.
static intptr_t g_WXBridge_onReceivedResult = 0;
diff --git a/weex_core/Source/android/bridge/script/script_side_in_multi_process.cpp b/weex_core/Source/android/bridge/script/script_side_in_multi_process.cpp
index af017e1..9958f21 100644
--- a/weex_core/Source/android/bridge/script/script_side_in_multi_process.cpp
+++ b/weex_core/Source/android/bridge/script/script_side_in_multi_process.cpp
@@ -461,7 +461,7 @@ int ScriptSideInMultiProcess::CreateInstance(
}
return result->get<jint>();
} catch (IPCException &e) {
- LOGE("%s", e.msg());
+ LOGE("%s %s","Create Instance is failed and Error msg is", e.msg());
// report crash here
WeexCoreManager::Instance()
->getPlatformBridge()
@@ -556,7 +556,6 @@ int ScriptSideInMultiProcess::UpdateGlobalConfig(const char *config) {
int ScriptSideInMultiProcess::UpdateInitFrameworkParams(const std::string &key,
const std::string &value,
const std::string &desc) {
-
try {
if(sender_ == nullptr) {
LOGE("UpdateGlobalConfig sender is null");
@@ -576,6 +575,24 @@ int ScriptSideInMultiProcess::UpdateInitFrameworkParams(const std::string &key,
}
+void ScriptSideInMultiProcess::SetLogType(const int logLevel, const bool isPerf) {
+ try {
+ if(sender_ == nullptr) {
+ LOGE("SetLogType sender is null");
+ return;
+ }
+ std::unique_ptr<IPCSerializer> serializer(createIPCSerializer());
+ serializer->setMsg(static_cast<uint32_t>(IPCJSMsg::SETLOGLEVEL));
+ serializer->add(logLevel);
+ serializer->add(isPerf ? 1 : 0);
+ std::unique_ptr<IPCBuffer> buffer = serializer->finish();
+ std::unique_ptr<IPCResult> result = sender_->send(buffer.get());
+ } catch (IPCException &e) {
+ LOGE("%s", e.msg());
+ }
+ return;
+}
+
} // namespace script
} // namespace bridge
} // namespace WeexCore
diff --git a/weex_core/Source/android/bridge/script/script_side_in_multi_process.h b/weex_core/Source/android/bridge/script/script_side_in_multi_process.h
index 341dac1..b4793be 100644
--- a/weex_core/Source/android/bridge/script/script_side_in_multi_process.h
+++ b/weex_core/Source/android/bridge/script/script_side_in_multi_process.h
@@ -72,6 +72,7 @@ class ScriptSideInMultiProcess : public ScriptBridge::ScriptSide {
int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc) override;
+ void SetLogType(const int logLevel, const bool isPerf) override;
ScriptSideInMultiProcess();
diff --git a/weex_core/Source/android/bridge/script/script_side_in_multi_so.cpp b/weex_core/Source/android/bridge/script/script_side_in_multi_so.cpp
index b84da7d..73c4e0c 100644
--- a/weex_core/Source/android/bridge/script/script_side_in_multi_so.cpp
+++ b/weex_core/Source/android/bridge/script/script_side_in_multi_so.cpp
@@ -184,6 +184,15 @@ int ScriptSideInMultiSo::UpdateInitFrameworkParams(const std::string &key, const
return script_side_functions_->funcUpdateInitFrameworkParams(key, value, desc);
}
+void ScriptSideInMultiSo::SetLogType(const int logLevel, const bool isPerf) {
+ if(script_side_functions_ == nullptr) {
+ LOGE("ScriptSideInMultiSo::UpdateInitFrameworkParams script_side_functions_ is null");
+ return;
+ }
+ return script_side_functions_->funcSetLogType(logLevel, isPerf);
+
+}
+
} // namespace script
} // namespace bridge
} // namespace WeexCore
diff --git a/weex_core/Source/android/bridge/script/script_side_in_multi_so.h b/weex_core/Source/android/bridge/script/script_side_in_multi_so.h
index e6fa9b0..bd7faa0 100644
--- a/weex_core/Source/android/bridge/script/script_side_in_multi_so.h
+++ b/weex_core/Source/android/bridge/script/script_side_in_multi_so.h
@@ -71,6 +71,7 @@ class ScriptSideInMultiSo : public ScriptBridge::ScriptSide {
int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc)override;
+ void SetLogType(const int logLevel, const bool isPerf)override ;
ScriptSideInMultiSo();
diff --git a/weex_core/Source/android/bridge/script_bridge_in_multi_process.cpp b/weex_core/Source/android/bridge/script_bridge_in_multi_process.cpp
index ece6adb..524a9e6 100644
--- a/weex_core/Source/android/bridge/script_bridge_in_multi_process.cpp
+++ b/weex_core/Source/android/bridge/script_bridge_in_multi_process.cpp
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+#include "base/log_defines.h"
#include "script_bridge_in_multi_process.h"
#include "android/utils/params_utils.h"
@@ -952,16 +953,6 @@ std::unique_ptr<IPCResult> UpdateComponentData(IPCArguments *arguments) {
}
-std::unique_ptr<IPCResult> Tlog(IPCArguments *arguments) {
- auto arg1 = std::unique_ptr<char[]>(getArumentAsCStr(arguments, 0));
- auto arg2 = std::unique_ptr<char[]>(getArumentAsCStr(arguments, 1));
- WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
- weex::base::MakeCopyable(
- [tag = std::move(arg1), log = std::move(arg2)]() {
- LOGE_TAG(tag.get(),"%s",log.get());
- }));
- return createInt32Result(static_cast<int32_t>(true));
-}
std::unique_ptr<IPCResult> HeartBeat(IPCArguments *arguments) {
@@ -980,6 +971,30 @@ std::unique_ptr<IPCResult> HeartBeat(IPCArguments *arguments) {
return createInt32Result(static_cast<int32_t>(true));
}
+std::unique_ptr<IPCResult> HandleLogDetail(IPCArguments *arguments) {
+ auto arg1 = std::unique_ptr<char[]>(getArumentAsCStr(arguments, 0));
+ auto arg2 = std::unique_ptr<char[]>(getArumentAsCStr(arguments, 1));
+ auto arg3 = std::unique_ptr<char[]>(getArumentAsCStr(arguments, 2));
+ auto arg4 = std::unique_ptr<char[]>(getArumentAsCStr(arguments, 3));
+ auto arg5 = std::unique_ptr<char[]>(getArumentAsCStr(arguments, 4));
+
+ WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
+ weex::base::MakeCopyable(
+ [level_str = std::move(arg1), tag_ptr = std::move(arg2),
+ file_ptr = std::move(arg3), line_ptr = std::move(arg4), log_ptr = std::move(arg5)]() {
+ int level = (level_str == nullptr || level_str.get() == nullptr)
+ ? ((int) (WeexCore::LogLevel::Debug)) : atoi(level_str.get());
+ long line =
+ (line_ptr == nullptr || line_ptr.get() == nullptr) ? 0 : atol(line_ptr.get());
+ weex::base::LogImplement::getLog()->log((WeexCore::LogLevel) level,
+ tag_ptr.get(),
+ file_ptr.get(),
+ line,
+ log_ptr.get());
+ }));
+ return createInt32Result(static_cast<int32_t>(true));
+}
+
ScriptBridgeInMultiProcess::ScriptBridgeInMultiProcess() {
set_script_side(new bridge::script::ScriptSideInMultiProcess);
set_core_side(new CoreSideInScript);
@@ -1073,10 +1088,10 @@ void ScriptBridgeInMultiProcess::RegisterIPCCallback(IPCHandler *handler) {
OnReceivedResult);
handler->registerHandler(static_cast<uint32_t>(IPCProxyMsg::UPDATECOMPONENTDATA),
UpdateComponentData);
- handler->registerHandler(static_cast<uint32_t>(IPCProxyMsg::TLOGMSG),
- Tlog);
handler->registerHandler(static_cast<uint32_t>(IPCProxyMsg::HEARTBEAT),
HeartBeat);
+ handler->registerHandler(static_cast<uint32_t>(IPCProxyMsg::POSTLOGDETAIL),
+ HandleLogDetail);
}
} // namespace WeexCore
diff --git a/weex_core/Source/android/bridge/script_bridge_in_multi_so.cpp b/weex_core/Source/android/bridge/script_bridge_in_multi_so.cpp
index 706686f..a41d725 100644
--- a/weex_core/Source/android/bridge/script_bridge_in_multi_so.cpp
+++ b/weex_core/Source/android/bridge/script_bridge_in_multi_so.cpp
@@ -20,6 +20,7 @@
#include "script_bridge_in_multi_so.h"
#include <dlfcn.h>
#include <malloc.h>
+#include "base/log_defines.h"
#include "android/bridge/multi_so_initializer.h"
#include "android/bridge/script/script_side_in_multi_so.h"
@@ -54,8 +55,8 @@ ScriptBridgeInMultiSo::ScriptBridgeInMultiSo() {
typedef FunctionsExposedByJS *(*ExchangeJSBridgeFunctions)(
FunctionsExposedByCore *);
auto exchange_script_bridge_functions =
- (ExchangeJSBridgeFunctions)dlsym(handle,
- "ExchangeJSBridgeFunctions");
+ (ExchangeJSBridgeFunctions) dlsym(handle,
+ "ExchangeJSBridgeFunctions");
if (!exchange_script_bridge_functions) {
return false;
}
@@ -87,8 +88,8 @@ static void CallNative(const char *page_id, const char *task,
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- task = std::string(task),
- callback = std::string(callback)] {
+ task = std::string(task),
+ callback = std::string(callback)] {
WeexCoreManager::Instance()->script_bridge()->core_side()->CallNative(
page_id.c_str(), task.c_str(), callback.c_str());
}));
@@ -109,23 +110,23 @@ static std::unique_ptr<ValueWithType> CallNativeModule(
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable(
[page_id = std::string(page_id), module = std::string(module),
- method = std::string(method),
- arguments =
- std::unique_ptr<char[]>(copyStr(arguments, arguments_length)),
- arguments_length = arguments_length,
- options = std::unique_ptr<char[]>(copyStr(options, options_length)),
- options_length = options_length, e = &event, ret = &ret] {
+ method = std::string(method),
+ arguments =
+ std::unique_ptr<char[]>(copyStr(arguments, arguments_length)),
+ arguments_length = arguments_length,
+ options = std::unique_ptr<char[]>(copyStr(options, options_length)),
+ options_length = options_length, e = &event, ret = &ret] {
*ret = WeexCoreManager::Instance()
- ->script_bridge()
- ->core_side()
- ->CallNativeModule(page_id.c_str(), module.c_str(),
- method.c_str(), arguments.get(),
- arguments_length, options.get(),
- options_length);
+ ->script_bridge()
+ ->core_side()
+ ->CallNativeModule(page_id.c_str(), module.c_str(),
+ method.c_str(), arguments.get(),
+ arguments_length, options.get(),
+ options_length);
e->Signal();
}));
event.Wait();
- return ret;
+ return ret;
}
static void CallNativeComponent(const char *page_id, const char *ref,
@@ -142,12 +143,12 @@ static void CallNativeComponent(const char *page_id, const char *ref,
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable(
[page_id = std::string(page_id), ref = std::string(ref),
- method = std::string(method),
- arguments =
- std::unique_ptr<char[]>(copyStr(arguments, arguments_length)),
- arguments_length = arguments_length,
- options = std::unique_ptr<char[]>(copyStr(options, options_length)),
- options_length = options_length] {
+ method = std::string(method),
+ arguments =
+ std::unique_ptr<char[]>(copyStr(arguments, arguments_length)),
+ arguments_length = arguments_length,
+ options = std::unique_ptr<char[]>(copyStr(options, options_length)),
+ options_length = options_length] {
WeexCoreManager::Instance()
->script_bridge()
->core_side()
@@ -165,11 +166,11 @@ static void AddElement(const char *page_id, const char *parent_ref,
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- parent_ref = std::string(parent_ref),
- dom_str = std::unique_ptr<char[]>(
- copyStr(dom_str, domLen)),
- dom_len = domLen,
- index_str = std::string(index_str)] {
+ parent_ref = std::string(parent_ref),
+ dom_str = std::unique_ptr<char[]>(
+ copyStr(dom_str, domLen)),
+ dom_len = domLen,
+ index_str = std::string(index_str)] {
WeexCoreManager::Instance()->script_bridge()->core_side()->AddElement(
page_id.c_str(), parent_ref.c_str(), dom_str.get(), dom_len,
index_str.c_str());
@@ -182,7 +183,7 @@ static void SetTimeout(const char *callback_id, const char *time) {
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([callback_id = std::string(callback_id),
- time = std::string(time)] {
+ time = std::string(time)] {
WeexCoreManager::Instance()->script_bridge()->core_side()->SetTimeout(
callback_id.c_str(), time.c_str());
}));
@@ -205,9 +206,9 @@ static void CreateBody(const char *page_id, const char *dom_str, int domLen) {
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- dom_str = std::unique_ptr<char[]>(
- copyStr(dom_str, domLen)),
- dom_len = domLen] {
+ dom_str = std::unique_ptr<char[]>(
+ copyStr(dom_str, domLen)),
+ dom_len = domLen] {
WeexCoreManager::Instance()->script_bridge()->core_side()->CreateBody(
page_id.c_str(), dom_str.get(), dom_len);
}));
@@ -225,15 +226,15 @@ static int UpdateFinish(const char *page_id, const char *task, int taskLen,
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable(
[page_id = std::string(page_id),
- task = std::unique_ptr<char[]>(copyStr(task, taskLen)),
- task_len = taskLen,
- callback = std::unique_ptr<char[]>(copyStr(callback, callbackLen)),
- callback_len = callbackLen, event = &event, result = &result] {
+ task = std::unique_ptr<char[]>(copyStr(task, taskLen)),
+ task_len = taskLen,
+ callback = std::unique_ptr<char[]>(copyStr(callback, callbackLen)),
+ callback_len = callbackLen, event = &event, result = &result] {
*result = WeexCoreManager::Instance()
- ->script_bridge()
- ->core_side()
- ->UpdateFinish(page_id.c_str(), task.get(), task_len,
- callback.get(), callback_len);
+ ->script_bridge()
+ ->core_side()
+ ->UpdateFinish(page_id.c_str(), task.get(), task_len,
+ callback.get(), callback_len);
event->Signal();
}));
event.Wait();
@@ -262,7 +263,7 @@ static int RefreshFinish(const char *page_id, const char *task,
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable(
[page_id = std::string(page_id), task = std::string(task),
- callback = std::string(callback), event = &event] {
+ callback = std::string(callback), event = &event] {
WeexCoreManager::Instance()
->script_bridge()
->core_side()
@@ -281,10 +282,10 @@ static void UpdateAttrs(const char *page_id, const char *ref, const char *data,
// page_id, ref, data, dataLen);
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- ref = std::string(ref),
- data = std::unique_ptr<char[]>(
- copyStr(data, dataLen)),
- data_len = dataLen] {
+ ref = std::string(ref),
+ data = std::unique_ptr<char[]>(
+ copyStr(data, dataLen)),
+ data_len = dataLen] {
WeexCoreManager::Instance()->script_bridge()->core_side()->UpdateAttrs(
page_id.c_str(), ref.c_str(), data.get(), data_len);
}));
@@ -296,10 +297,10 @@ static void UpdateStyle(const char *page_id, const char *ref, const char *data,
// page_id, ref, data, dataLen);
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- ref = std::string(ref),
- data = std::unique_ptr<char[]>(
- copyStr(data, dataLen)),
- data_len = dataLen] {
+ ref = std::string(ref),
+ data = std::unique_ptr<char[]>(
+ copyStr(data, dataLen)),
+ data_len = dataLen] {
WeexCoreManager::Instance()->script_bridge()->core_side()->UpdateStyle(
page_id.c_str(), ref.c_str(), data.get(), data_len);
}));
@@ -324,9 +325,9 @@ static void MoveElement(const char *page_id, const char *ref,
// page_id, ref, parent_ref, index);
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- ref = std::string(ref),
- parent_ref = std::string(parent_ref),
- index = index] {
+ ref = std::string(ref),
+ parent_ref = std::string(parent_ref),
+ index = index] {
WeexCoreManager::Instance()->script_bridge()->core_side()->MoveElement(
page_id.c_str(), ref.c_str(), parent_ref.c_str(), index);
}));
@@ -337,8 +338,8 @@ static void AddEvent(const char *page_id, const char *ref, const char *event) {
// page_id, ref, event);
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- ref = std::string(ref),
- event = std::string(event)] {
+ ref = std::string(ref),
+ event = std::string(event)] {
WeexCoreManager::Instance()->script_bridge()->core_side()->AddEvent(
page_id.c_str(), ref.c_str(), event.c_str());
}));
@@ -350,8 +351,8 @@ static void RemoveEvent(const char *page_id, const char *ref,
// page_id, ref, event);
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- ref = std::string(ref),
- event = std::string(event)] {
+ ref = std::string(ref),
+ event = std::string(event)] {
WeexCoreManager::Instance()->script_bridge()->core_side()->RemoveEvent(
page_id.c_str(), ref.c_str(), event.c_str());
}));
@@ -359,20 +360,20 @@ static void RemoveEvent(const char *page_id, const char *ref,
static const char *CallGCanvasLinkNative(const char *context_id, int type,
const char *arg) {
- weex::base::WaitableEvent event;
- char *ret = nullptr;
-
- WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
- weex::base::MakeCopyable([page_id = std::string(context_id),
- t = type,
- args = std::string(arg), e = &event, ret = &ret] {
- *ret = const_cast<char *>(WeexCoreManager::Instance()
- ->script_bridge()
- ->core_side()
- ->CallGCanvasLinkNative(page_id.c_str(), t, args.c_str()));
- e->Signal();
- }));
- event.Wait();
+ weex::base::WaitableEvent event;
+ char *ret = nullptr;
+
+ WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
+ weex::base::MakeCopyable([page_id = std::string(context_id),
+ t = type,
+ args = std::string(arg), e = &event, ret = &ret] {
+ *ret = const_cast<char *>(WeexCoreManager::Instance()
+ ->script_bridge()
+ ->core_side()
+ ->CallGCanvasLinkNative(page_id.c_str(), t, args.c_str()));
+ e->Signal();
+ }));
+ event.Wait();
return ret;
}
@@ -389,7 +390,7 @@ static void ClearInterval(const char *page_id, const char *callback_id) {
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- callback_id = std::string(callback_id)] {
+ callback_id = std::string(callback_id)] {
WeexCoreManager::Instance()
->script_bridge()
->core_side()
@@ -399,20 +400,20 @@ static void ClearInterval(const char *page_id, const char *callback_id) {
static const char *CallT3DLinkNative(int type, const char *arg) {
- weex::base::WaitableEvent event;
- char *ret = nullptr;
-
- WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
- weex::base::MakeCopyable([
- t = type,
- args = std::string(arg), e = &event, ret = &ret] {
- *ret = const_cast<char *>(WeexCoreManager::Instance()
- ->script_bridge()
- ->core_side()
- ->CallT3DLinkNative(t, args.c_str()));
- e->Signal();
- }));
- event.Wait();
+ weex::base::WaitableEvent event;
+ char *ret = nullptr;
+
+ WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
+ weex::base::MakeCopyable([
+ t = type,
+ args = std::string(arg), e = &event, ret = &ret] {
+ *ret = const_cast<char *>(WeexCoreManager::Instance()
+ ->script_bridge()
+ ->core_side()
+ ->CallT3DLinkNative(t, args.c_str()));
+ e->Signal();
+ }));
+ event.Wait();
return ret;
}
@@ -422,9 +423,9 @@ static void PostMessage(const char *vim_id, const char *data, int dataLength) {
// data);
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([vim_id = std::string(vim_id),
- data = std::string(data), length = dataLength] {
+ data = std::string(data), length = dataLength] {
WeexCoreManager::Instance()->script_bridge()->core_side()->PostMessage(
- vim_id.c_str(), data.c_str(),length);
+ vim_id.c_str(), data.c_str(), length);
}));
}
@@ -435,11 +436,11 @@ static void DispatchMessage(const char *client_id, const char *data, int dataLen
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable(
[client_id = std::string(client_id), data = std::string(data),
- callback = std::string(callback), vm_id = std::string(vm_id), length = dataLength] {
+ callback = std::string(callback), vm_id = std::string(vm_id), length = dataLength] {
WeexCoreManager::Instance()
->script_bridge()
->core_side()
- ->DispatchMessage(client_id.c_str(), data.c_str(),length,
+ ->DispatchMessage(client_id.c_str(), data.c_str(), length,
callback.c_str(), vm_id.c_str());
}));
}
@@ -452,14 +453,14 @@ static std::unique_ptr<WeexJSResult> DispatchMessageSync(const char *client_id,
std::unique_ptr<WeexJSResult> result;
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([client_id = std::string(client_id),
- data = std::string(data),
- vm_id = std::string(vm_id), length = dataLength,
- e = &event, r = &result]() {
+ data = std::string(data),
+ vm_id = std::string(vm_id), length = dataLength,
+ e = &event, r = &result]() {
*r = WeexCoreManager::Instance()
- ->script_bridge()
- ->core_side()
- ->DispatchMessageSync(client_id.c_str(), data.c_str(), length,
- vm_id.c_str());
+ ->script_bridge()
+ ->core_side()
+ ->DispatchMessageSync(client_id.c_str(), data.c_str(), length,
+ vm_id.c_str());
e->Signal();
}));
event.Wait();
@@ -479,12 +480,13 @@ static void OnReceivedResult(long callback_id,
}));
}
-static void UpdateComponentData(const char* page_id,
- const char* cid,
- const char* json_data) {
+static void UpdateComponentData(const char *page_id,
+ const char *cid,
+ const char *json_data) {
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable(
- [page_id = std::string(page_id), cid = std::string(cid), json_data = std::string(json_data)]() {
+ [page_id = std::string(page_id), cid = std::string(cid),
+ json_data = std::string(json_data)]() {
WeexCoreManager::Instance()
->script_bridge()
->core_side()
@@ -492,14 +494,32 @@ static void UpdateComponentData(const char* page_id,
}));
}
+static bool Log(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) {
+ WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
+ weex::base::MakeCopyable(
+ [l = level, t = std::string(tag), f = std::string(file), li = line,
+ log_str = std::string(log)]() {
+ weex::base::LogImplement::getLog()->log((LogLevel) l,
+ t.c_str(),
+ f.c_str(),
+ li,
+ log_str.c_str());
+ }));
+
+ return true;
+}
+
static void ReportException(const char *page_id, const char *func,
const char *exception_string) {
// WeexCoreManager::Instance()->script_bridge()->core_side()->ReportException(
// page_id, func, exception_string);
WeexCoreManager::Instance()->script_thread()->message_loop()->PostTask(
weex::base::MakeCopyable([page_id = std::string(page_id),
- func = std::string(func),
- exception = std::string(exception_string)] {
+ func = std::string(func),
+ exception = std::string(exception_string)] {
WeexCoreManager::Instance()
->script_bridge()
->core_side()
@@ -544,9 +564,10 @@ FunctionsExposedByCore *ScriptBridgeInMultiSo::GetExposedFunctions() {
DispatchMessage,
DispatchMessageSync,
OnReceivedResult,
- UpdateComponentData};
+ UpdateComponentData,
+ Log};
auto functions =
- (FunctionsExposedByCore *)malloc(sizeof(FunctionsExposedByCore));
+ (FunctionsExposedByCore *) malloc(sizeof(FunctionsExposedByCore));
memset(functions, 0, sizeof(FunctionsExposedByCore));
memcpy(functions, &temp, sizeof(FunctionsExposedByCore));
return functions;
diff --git a/weex_core/Source/android/jsengine/bridge/platform/platform_bridge_in_multi_so.cpp b/weex_core/Source/android/jsengine/bridge/platform/platform_bridge_in_multi_so.cpp
index 4f26bc6..a8c2f8d 100644
--- a/weex_core/Source/android/jsengine/bridge/platform/platform_bridge_in_multi_so.cpp
+++ b/weex_core/Source/android/jsengine/bridge/platform/platform_bridge_in_multi_so.cpp
@@ -302,5 +302,9 @@ int PlatformBridgeInMultiSo::UpdateInitFrameworkParams(const std::string& key, c
return Instance()->core_side()->UpdateInitFrameworkParams(key, value, desc);
}
+void PlatformBridgeInMultiSo::SetLogType(const int logLevel, const bool isPerf) {
+ return Instance()->core_side()->SetLogType(logLevel, isPerf);
+}
+
} // namespace weex
diff --git a/weex_core/Source/android/jsengine/bridge/platform/platform_bridge_in_multi_so.h b/weex_core/Source/android/jsengine/bridge/platform/platform_bridge_in_multi_so.h
index 72580dc..74c6f2d 100644
--- a/weex_core/Source/android/jsengine/bridge/platform/platform_bridge_in_multi_so.h
+++ b/weex_core/Source/android/jsengine/bridge/platform/platform_bridge_in_multi_so.h
@@ -107,8 +107,7 @@ class PlatformBridgeInMultiSo : public WeexCore::PlatformBridge {
static int DestroyInstance(const char *instanceId);
static int UpdateGlobalConfig(const char *config);
static int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc);
-
-
+ static void SetLogType(const int logLevel, const bool isPerf);
private:
PlatformBridgeInMultiSo();
diff --git a/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_process.cpp b/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_process.cpp
index 6c0f0d8..d339960 100644
--- a/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_process.cpp
+++ b/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_process.cpp
@@ -36,477 +36,489 @@
#include "third_party/IPC/IPCMessageJS.h"
namespace weex {
- namespace bridge {
- namespace js {
- CoreSideInMultiProcess::CoreSideInMultiProcess(WeexIPCClient *client)
- : client_(client) {}
-
- CoreSideInMultiProcess::CoreSideInMultiProcess() : client_(NULL) {}
-
- CoreSideInMultiProcess::~CoreSideInMultiProcess() {}
-
- void CoreSideInMultiProcess::CallNative(const char *page_id, const char *task,
- const char *callback) {
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLNATIVE);
- ipc_task->addParams(page_id);
- ipc_task->addParams(task);
- ipc_task->addParams(callback);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- std::unique_ptr<ValueWithType> CoreSideInMultiProcess::CallNativeModule(
- const char *page_id, const char *module, const char *method,
- const char *arguments, int arguments_length, const char *options,
- int options_length) {
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLNATIVEMODULE);
- ipc_task->addParams(page_id);
- ipc_task->addParams(module);
- ipc_task->addParams(method);
- ipc_task->addParams(arguments, arguments_length);
- ipc_task->addParams(options, options_length);
- auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
- new BackToWeexCoreQueue::Future());
- ipc_task->set_future(future.get());
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
-
- std::unique_ptr<IPCResult> ipc_result = future.get()->waitResult();
-
- std::unique_ptr<ValueWithType> ret(new ValueWithType);
-
- switch (ipc_result->getType()) {
- case IPCType::DOUBLE:
- ret->type = ParamsType::DOUBLE;
- ret->value.doubleValue = ipc_result->get<double>();
- break;
- case IPCType::STRING:
- ret->type = ParamsType::STRING;
- ret->value.string = genWeexStringSS(ipc_result->getStringContent(),
- ipc_result->getStringLength());
- break;
- case IPCType::JSONSTRING:
- ret->type = ParamsType::JSONSTRING;
- ret->value.string = genWeexStringSS(ipc_result->getStringContent(),
- ipc_result->getStringLength());
- break;
- case IPCType::BYTEARRAY: {
- ret->type = ParamsType::BYTEARRAY;
- ret->value.byteArray = genWeexByteArraySS(ipc_result->getByteArrayContent(),
- ipc_result->getByteArrayLength());
- }
- break;
- default:
- ret->type = ParamsType::JSUNDEFINED;
- }
- return ret;
- }
-
- void CoreSideInMultiProcess::CallNativeComponent(
- const char *page_id, const char *ref, const char *method,
- const char *arguments, int arguments_length, const char *options,
- int options_length) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLNATIVECOMPONENT);
- ipc_task->addParams(page_id);
- ipc_task->addParams(ref);
- ipc_task->addParams(method);
- ipc_task->addParams(arguments, arguments_length);
- ipc_task->addParams(options, options_length);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+namespace bridge {
+namespace js {
+CoreSideInMultiProcess::CoreSideInMultiProcess(WeexIPCClient *client)
+ : client_(client) {}
+
+CoreSideInMultiProcess::CoreSideInMultiProcess() : client_(NULL) {}
+
+CoreSideInMultiProcess::~CoreSideInMultiProcess() {}
+
+void CoreSideInMultiProcess::CallNative(const char *page_id, const char *task,
+ const char *callback) {
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLNATIVE);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(task);
+ ipc_task->addParams(callback);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+std::unique_ptr<ValueWithType> CoreSideInMultiProcess::CallNativeModule(
+ const char *page_id, const char *module, const char *method,
+ const char *arguments, int arguments_length, const char *options,
+ int options_length) {
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLNATIVEMODULE);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(module);
+ ipc_task->addParams(method);
+ ipc_task->addParams(arguments, arguments_length);
+ ipc_task->addParams(options, options_length);
+ auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
+ new BackToWeexCoreQueue::Future());
+ ipc_task->set_future(future.get());
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+
+ std::unique_ptr<IPCResult> ipc_result = future.get()->waitResult();
+
+ std::unique_ptr<ValueWithType> ret(new ValueWithType);
+
+ switch (ipc_result->getType()) {
+ case IPCType::DOUBLE:ret->type = ParamsType::DOUBLE;
+ ret->value.doubleValue = ipc_result->get<double>();
+ break;
+ case IPCType::STRING:ret->type = ParamsType::STRING;
+ ret->value.string = genWeexStringSS(ipc_result->getStringContent(),
+ ipc_result->getStringLength());
+ break;
+ case IPCType::JSONSTRING:ret->type = ParamsType::JSONSTRING;
+ ret->value.string = genWeexStringSS(ipc_result->getStringContent(),
+ ipc_result->getStringLength());
+ break;
+ case IPCType::BYTEARRAY: {
+ ret->type = ParamsType::BYTEARRAY;
+ ret->value.byteArray = genWeexByteArraySS(ipc_result->getByteArrayContent(),
+ ipc_result->getByteArrayLength());
+ }
+ break;
+ default:ret->type = ParamsType::JSUNDEFINED;
+ }
+ return ret;
+}
+
+void CoreSideInMultiProcess::CallNativeComponent(
+ const char *page_id, const char *ref, const char *method,
+ const char *arguments, int arguments_length, const char *options,
+ int options_length) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLNATIVECOMPONENT);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(ref);
+ ipc_task->addParams(method);
+ ipc_task->addParams(arguments, arguments_length);
+ ipc_task->addParams(options, options_length);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
// if (result->getType() != IPCType::INT32) {
// LOGE("functionCallNativeComponent: unexpected result: %d",
// result->getType());
// }
- }
-
- void CoreSideInMultiProcess::AddElement(const char *page_id,
- const char *parent_ref,
- const char *dom_str, int dom_str_length,
- const char *index_str) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLADDELEMENT);
- ipc_task->addParams(page_id);
- ipc_task->addParams(parent_ref);
- ipc_task->addParams(dom_str, dom_str_length);
- ipc_task->addParams(index_str);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::SetTimeout(const char *callback_id,
- const char *time) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::SETTIMEOUT);
- ipc_task->addParams(callback_id);
- ipc_task->addParams(time);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::NativeLog(const char *str_array) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::NATIVELOG);
- ipc_task->addParams(str_array);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::CreateBody(const char *page_id,
- const char *dom_str,
- int dom_str_length) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLCREATEBODY);
- ipc_task->addParams(page_id);
- ipc_task->addParams(dom_str, dom_str_length);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- int CoreSideInMultiProcess::UpdateFinish(const char *page_id, const char *task,
- int task_length, const char *callback,
- int callback_length) {
-
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLUPDATEFINISH);
- ipc_task->addParams(page_id);
- ipc_task->addParams(task, task_length);
- ipc_task->addParams(callback, callback_length);
- auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
- new BackToWeexCoreQueue::Future());
- ipc_task->set_future(future.get());
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
-
- std::unique_ptr<IPCResult> ipc_result = future.get()->waitResult();
-
- if (ipc_result->getType() != IPCType::INT32) {
- LOGE("functionCallUpdateFinish: unexpected result: %d", ipc_result->getType());
- return 0;
- }
- return ipc_result->get<int32_t>();
- }
-
- void CoreSideInMultiProcess::CreateFinish(const char *page_id) {
-
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLCREATEFINISH);
- ipc_task->addParams(page_id);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- int CoreSideInMultiProcess::RefreshFinish(const char *page_id, const char *task,
- const char *callback) {
-
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLREFRESHFINISH);
- ipc_task->addParams(page_id);
- ipc_task->addParams(task);
- ipc_task->addParams(callback);
- auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
- new BackToWeexCoreQueue::Future());
- ipc_task->set_future(future.get());
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
-
- std::unique_ptr<IPCResult> ipc_result = future.get()->waitResult();
-
- if (ipc_result->getType() != IPCType::INT32) {
- LOGE("functionCallRefreshFinish: unexpected result: %d", ipc_result->getType());
- return 0;
- }
- return ipc_result->get<int32_t>();
- }
-
- void CoreSideInMultiProcess::UpdateAttrs(const char *page_id, const char *ref,
- const char *data, int data_length) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLUPDATEATTRS);
- ipc_task->addParams(page_id);
- ipc_task->addParams(ref);
- ipc_task->addParams(data, data_length);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::UpdateStyle(const char *page_id, const char *ref,
- const char *data, int data_length) {
-
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLUPDATESTYLE);
- ipc_task->addParams(page_id);
- ipc_task->addParams(ref);
- ipc_task->addParams(data, data_length);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::RemoveElement(const char *page_id,
- const char *ref) {
-
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLREMOVEELEMENT);
- ipc_task->addParams(page_id);
- ipc_task->addParams(ref);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::MoveElement(const char *page_id, const char *ref,
- const char *parent_ref, int index) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLMOVEELEMENT);
- ipc_task->addParams(page_id);
- ipc_task->addParams(ref);
- ipc_task->addParams(parent_ref);
- auto temp = std::to_string(index);
- ipc_task->addParams(temp.c_str(), temp.length());
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::AddEvent(const char *page_id, const char *ref,
- const char *event) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLADDEVENT);
- ipc_task->addParams(page_id);
- ipc_task->addParams(ref);
- ipc_task->addParams(event);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::RemoveEvent(const char *page_id, const char *ref,
- const char *event) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLREMOVEEVENT);
- ipc_task->addParams(page_id);
- ipc_task->addParams(ref);
- ipc_task->addParams(event);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- const char *CoreSideInMultiProcess::CallGCanvasLinkNative(
- const char *context_id, int type, const char *arg) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLGCANVASLINK);
- ipc_task->addParams(context_id);
- auto temp = std::to_string(type);
- ipc_task->addParams(temp.c_str(), temp.length());
- ipc_task->addParams(arg);
- auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
- new BackToWeexCoreQueue::Future());
- ipc_task->set_future(future.get());
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
-
- std::unique_ptr<IPCResult> result = future.get()->waitResult();
-
-
- try {
- // LOGE("weexjsc functionGCanvasLinkNative");
- // if (result->getType() == IPCType::VOID) {
- // return JSValue::encode(ret);
- // } else if (result->getStringLength() > 0) {
- // WTF::String retWString = jString2String(result->getStringContent(),
- // result->getStringLength()); LOGE("weexjsc functionGCanvasLinkNative
- // result length > 1 retWString:%s", retWString.utf8().data()); ret =
- // String2JSValue(state, retWString);
-
- // }
- if (result->getType() != IPCType::VOID) {
- if (result->getStringLength() > 0) {
+}
+
+void CoreSideInMultiProcess::AddElement(const char *page_id,
+ const char *parent_ref,
+ const char *dom_str, int dom_str_length,
+ const char *index_str) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLADDELEMENT);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(parent_ref);
+ ipc_task->addParams(dom_str, dom_str_length);
+ ipc_task->addParams(index_str);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::SetTimeout(const char *callback_id,
+ const char *time) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::SETTIMEOUT);
+ ipc_task->addParams(callback_id);
+ ipc_task->addParams(time);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::NativeLog(const char *str_array) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::NATIVELOG);
+ ipc_task->addParams(str_array);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::CreateBody(const char *page_id,
+ const char *dom_str,
+ int dom_str_length) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLCREATEBODY);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(dom_str, dom_str_length);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+int CoreSideInMultiProcess::UpdateFinish(const char *page_id, const char *task,
+ int task_length, const char *callback,
+ int callback_length) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLUPDATEFINISH);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(task, task_length);
+ ipc_task->addParams(callback, callback_length);
+ auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
+ new BackToWeexCoreQueue::Future());
+ ipc_task->set_future(future.get());
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+
+ std::unique_ptr<IPCResult> ipc_result = future.get()->waitResult();
+
+ if (ipc_result->getType() != IPCType::INT32) {
+ LOGE("functionCallUpdateFinish: unexpected result: %d", ipc_result->getType());
+ return 0;
+ }
+ return ipc_result->get<int32_t>();
+}
+
+void CoreSideInMultiProcess::CreateFinish(const char *page_id) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLCREATEFINISH);
+ ipc_task->addParams(page_id);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+int CoreSideInMultiProcess::RefreshFinish(const char *page_id, const char *task,
+ const char *callback) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLREFRESHFINISH);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(task);
+ ipc_task->addParams(callback);
+ auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
+ new BackToWeexCoreQueue::Future());
+ ipc_task->set_future(future.get());
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+
+ std::unique_ptr<IPCResult> ipc_result = future.get()->waitResult();
+
+ if (ipc_result->getType() != IPCType::INT32) {
+ LOGE("functionCallRefreshFinish: unexpected result: %d", ipc_result->getType());
+ return 0;
+ }
+ return ipc_result->get<int32_t>();
+}
+
+void CoreSideInMultiProcess::UpdateAttrs(const char *page_id, const char *ref,
+ const char *data, int data_length) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLUPDATEATTRS);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(ref);
+ ipc_task->addParams(data, data_length);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::UpdateStyle(const char *page_id, const char *ref,
+ const char *data, int data_length) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLUPDATESTYLE);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(ref);
+ ipc_task->addParams(data, data_length);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::RemoveElement(const char *page_id,
+ const char *ref) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLREMOVEELEMENT);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(ref);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::MoveElement(const char *page_id, const char *ref,
+ const char *parent_ref, int index) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLMOVEELEMENT);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(ref);
+ ipc_task->addParams(parent_ref);
+ auto temp = std::to_string(index);
+ ipc_task->addParams(temp.c_str(), temp.length());
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::AddEvent(const char *page_id, const char *ref,
+ const char *event) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLADDEVENT);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(ref);
+ ipc_task->addParams(event);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::RemoveEvent(const char *page_id, const char *ref,
+ const char *event) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLREMOVEEVENT);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(ref);
+ ipc_task->addParams(event);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+const char *CoreSideInMultiProcess::CallGCanvasLinkNative(
+ const char *context_id, int type, const char *arg) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLGCANVASLINK);
+ ipc_task->addParams(context_id);
+ auto temp = std::to_string(type);
+ ipc_task->addParams(temp.c_str(), temp.length());
+ ipc_task->addParams(arg);
+ auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
+ new BackToWeexCoreQueue::Future());
+ ipc_task->set_future(future.get());
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+
+ std::unique_ptr<IPCResult> result = future.get()->waitResult();
+
+ try {
+ // LOGE("weexjsc functionGCanvasLinkNative");
+ // if (result->getType() == IPCType::VOID) {
+ // return JSValue::encode(ret);
+ // } else if (result->getStringLength() > 0) {
+ // WTF::String retWString = jString2String(result->getStringContent(),
+ // result->getStringLength()); LOGE("weexjsc functionGCanvasLinkNative
+ // result length > 1 retWString:%s", retWString.utf8().data()); ret =
+ // String2JSValue(state, retWString);
+
+ // }
+ if (result->getType() != IPCType::VOID) {
+ if (result->getStringLength() > 0) {
#ifdef USE_JS_RUNTIME
- return jString2String(result->getStringContent(),
- result->getStringLength()).c_str();
+ return jString2String(result->getStringContent(),
+ result->getStringLength()).c_str();
#else
- return jString2String(result->getStringContent(),
- result->getStringLength())
- .utf8()
- .data();
+ return jString2String(result->getStringContent(),
+ result->getStringLength())
+ .utf8()
+ .data();
#endif
- }
- }
- } catch (IPCException &e) {
- LOGE("functionGCanvasLinkNative exception: %s", e.msg());
- _exit(1);
- }
- return NULL;
- }
-
- int CoreSideInMultiProcess::SetInterval(const char *page_id,
- const char *callback_id,
- const char *time) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::SETINTERVAL);
- ipc_task->addParams(page_id);
- ipc_task->addParams(callback_id);
- ipc_task->addParams(time);
- auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
- new BackToWeexCoreQueue::Future());
- ipc_task->set_future(future.get());
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
-
- std::unique_ptr<IPCResult> result = future.get()->waitResult();
- if (result->getType() != IPCType::INT32) {
- LOGE("functionSetIntervalWeex: unexpected result: %d", result->getType());
- return 0;
- }
- return result->get<int32_t>();
- }
-
- void CoreSideInMultiProcess::ClearInterval(const char *page_id,
- const char *callback_id) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CLEARINTERVAL);
- ipc_task->addParams(page_id);
- ipc_task->addParams(callback_id);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- const char *CoreSideInMultiProcess::CallT3DLinkNative(int type,
- const char *arg) {
-
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::CALLT3DLINK);
- auto temp = std::to_string(type);
- ipc_task->addParams(temp.c_str(), temp.length());
- ipc_task->addParams(arg);
- auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
- new BackToWeexCoreQueue::Future());
- ipc_task->set_future(future.get());
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
-
- std::unique_ptr<IPCResult> result = future.get()->waitResult();
- // LOGE("weexjsc functionT3DLinkNative");
- // if (result->getType() == IPCType::VOID) {
- // return JSValue::encode(ret);
- // } else if (result->getStringLength() > 0) {
- // WTF::String retWString = jString2String(result->getStringContent(),
- // result->getStringLength()); LOGE("weexjsc functionT3DLinkNative
- // result length > 1 retWString:%s", retWString.utf8().data()); ret =
- // String2JSValue(state, retWString);
-
- // }
- if (result->getType() != IPCType::VOID) {
- if (result->getStringLength() > 0) {
+ }
+ }
+ } catch (IPCException &e) {
+ LOGE("functionGCanvasLinkNative exception: %s", e.msg());
+ _exit(1);
+ }
+ return NULL;
+}
+
+int CoreSideInMultiProcess::SetInterval(const char *page_id,
+ const char *callback_id,
+ const char *time) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::SETINTERVAL);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(callback_id);
+ ipc_task->addParams(time);
+ auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
+ new BackToWeexCoreQueue::Future());
+ ipc_task->set_future(future.get());
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+
+ std::unique_ptr<IPCResult> result = future.get()->waitResult();
+ if (result->getType() != IPCType::INT32) {
+ LOGE("functionSetIntervalWeex: unexpected result: %d", result->getType());
+ return 0;
+ }
+ return result->get<int32_t>();
+}
+
+void CoreSideInMultiProcess::ClearInterval(const char *page_id,
+ const char *callback_id) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CLEARINTERVAL);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(callback_id);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+const char *CoreSideInMultiProcess::CallT3DLinkNative(int type,
+ const char *arg) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::CALLT3DLINK);
+ auto temp = std::to_string(type);
+ ipc_task->addParams(temp.c_str(), temp.length());
+ ipc_task->addParams(arg);
+ auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
+ new BackToWeexCoreQueue::Future());
+ ipc_task->set_future(future.get());
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+
+ std::unique_ptr<IPCResult> result = future.get()->waitResult();
+ // LOGE("weexjsc functionT3DLinkNative");
+ // if (result->getType() == IPCType::VOID) {
+ // return JSValue::encode(ret);
+ // } else if (result->getStringLength() > 0) {
+ // WTF::String retWString = jString2String(result->getStringContent(),
+ // result->getStringLength()); LOGE("weexjsc functionT3DLinkNative
+ // result length > 1 retWString:%s", retWString.utf8().data()); ret =
+ // String2JSValue(state, retWString);
+
+ // }
+ if (result->getType() != IPCType::VOID) {
+ if (result->getStringLength() > 0) {
#ifdef USE_JS_RUNTIME
- return jString2String(result->getStringContent(),
- result->getStringLength()).c_str();
+ return jString2String(result->getStringContent(),
+ result->getStringLength()).c_str();
#else
- return jString2String(result->getStringContent(),
- result->getStringLength())
- .utf8()
- .data();
+ return jString2String(result->getStringContent(),
+ result->getStringLength())
+ .utf8()
+ .data();
#endif
- }
- }
- return nullptr;
- }
-
- void CoreSideInMultiProcess::PostMessage(const char *vim_id, const char *data,
- int dataLength) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::POSTMESSAGE);
- ipc_task->addParams(data, dataLength);
- ipc_task->addParams(vim_id);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::DispatchMessage(const char *client_id,
- const char *data,
- int dataLength,
- const char *callback,
- const char *vm_id) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::DISPATCHMESSAGE);
- ipc_task->addParams(client_id);
- ipc_task->addParams(data, dataLength);
- ipc_task->addParams(callback);
- ipc_task->addParams(vm_id);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- std::unique_ptr<WeexJSResult>
- CoreSideInMultiProcess::DispatchMessageSync(const char *client_id,
- const char *data,
- int dataLength,
- const char *vm_id) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::DISPATCHMESSAGESYNC);
- ipc_task->addParams(client_id);
- ipc_task->addParams(data, dataLength);
- ipc_task->addParams(vm_id);
- auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
- new BackToWeexCoreQueue::Future());
- ipc_task->set_future(future.get());
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
-
- std::unique_ptr<IPCResult> result = future.get()->waitResult();
- char *copy = nullptr;
- int length = 0;
- if (result->getType() == IPCType::BYTEARRAY) {
- length = result->getByteArrayLength();
- copy = new char[length];
- strcpy(copy, result->getByteArrayContent());
- }
- return std::unique_ptr<WeexJSResult>(
- new WeexJSResult(std::unique_ptr<char[]>(copy), length));
- }
-
- void CoreSideInMultiProcess::ReportException(const char *page_id,
- const char *func,
- const char *exception_string) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::REPORTEXCEPTION);
- ipc_task->addParams(page_id);
- ipc_task->addParams(func);
- ipc_task->addParams(exception_string);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::SetJSVersion(const char *js_version) {
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::SETJSFVERSION);
- ipc_task->addParams(js_version);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::OnReceivedResult(long callback_id,
- std::unique_ptr<WeexJSResult> &result) {
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::ONRECEIVEDRESULT);
-
- auto temp = std::to_string(callback_id);
- ipc_task->addParams(temp.c_str(), temp.length());
- if (result != nullptr) {
- ipc_task->addParams(result->data.get(), result->length);
- }
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
-
- void CoreSideInMultiProcess::UpdateComponentData(const char *page_id, const char *cid,
- const char *json_data) {
-
-
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::UPDATECOMPONENTDATA);
- ipc_task->addParams(page_id);
- ipc_task->addParams(cid);
- ipc_task->addParams(json_data);
- WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
- }
- } // namespace js
- } // namespace bridge
+ }
+ }
+ return nullptr;
+}
+
+void CoreSideInMultiProcess::PostMessage(const char *vim_id, const char *data,
+ int dataLength) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::POSTMESSAGE);
+ ipc_task->addParams(data, dataLength);
+ ipc_task->addParams(vim_id);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::DispatchMessage(const char *client_id,
+ const char *data,
+ int dataLength,
+ const char *callback,
+ const char *vm_id) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::DISPATCHMESSAGE);
+ ipc_task->addParams(client_id);
+ ipc_task->addParams(data, dataLength);
+ ipc_task->addParams(callback);
+ ipc_task->addParams(vm_id);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+std::unique_ptr<WeexJSResult>
+CoreSideInMultiProcess::DispatchMessageSync(const char *client_id,
+ const char *data,
+ int dataLength,
+ const char *vm_id) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::DISPATCHMESSAGESYNC);
+ ipc_task->addParams(client_id);
+ ipc_task->addParams(data, dataLength);
+ ipc_task->addParams(vm_id);
+ auto future = std::unique_ptr<BackToWeexCoreQueue::Future>(
+ new BackToWeexCoreQueue::Future());
+ ipc_task->set_future(future.get());
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+
+ std::unique_ptr<IPCResult> result = future.get()->waitResult();
+ char *copy = nullptr;
+ int length = 0;
+ if (result->getType() == IPCType::BYTEARRAY) {
+ length = result->getByteArrayLength();
+ copy = new char[length];
+ strcpy(copy, result->getByteArrayContent());
+ }
+ return std::unique_ptr<WeexJSResult>(
+ new WeexJSResult(std::unique_ptr<char[]>(copy), length));
+}
+
+void CoreSideInMultiProcess::ReportException(const char *page_id,
+ const char *func,
+ const char *exception_string) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::REPORTEXCEPTION);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(func);
+ ipc_task->addParams(exception_string);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::SetJSVersion(const char *js_version) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::SETJSFVERSION);
+ ipc_task->addParams(js_version);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::OnReceivedResult(long callback_id,
+ std::unique_ptr<WeexJSResult> &result) {
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::ONRECEIVEDRESULT);
+
+ auto temp = std::to_string(callback_id);
+ ipc_task->addParams(temp.c_str(), temp.length());
+ if (result != nullptr) {
+ ipc_task->addParams(result->data.get(), result->length);
+ }
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+void CoreSideInMultiProcess::UpdateComponentData(const char *page_id, const char *cid,
+ const char *json_data) {
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::UPDATECOMPONENTDATA);
+ ipc_task->addParams(page_id);
+ ipc_task->addParams(cid);
+ ipc_task->addParams(json_data);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread.get()->addTask(ipc_task);
+}
+
+bool CoreSideInMultiProcess::Log(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) {
+
+ if (WeexEnv::getEnv()->m_back_to_weex_core_thread == nullptr
+ || WeexEnv::getEnv()->m_back_to_weex_core_thread->isInitOk == 0) {
+ return false;
+ }
+
+ BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
+ IPCProxyMsg::POSTLOGDETAIL);
+ auto level_str = std::to_string(level);
+ ipc_task->addParams(level_str.c_str(), level_str.length());
+ ipc_task->addParams(tag);
+ ipc_task->addParams(file);
+ auto line_str = std::to_string(line);
+ ipc_task->addParams(line_str.c_str(), line_str.length());
+ ipc_task->addParams(log);
+ WeexEnv::getEnv()->m_back_to_weex_core_thread->addTask(ipc_task);
+ return true;
+}
+
+} // namespace js
+} // namespace bridge
} // namespace weex
diff --git a/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_process.h b/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_process.h
index 6cab646..ac0a150 100644
--- a/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_process.h
+++ b/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_process.h
@@ -23,105 +23,110 @@
#ifndef WEEXV8_MULTI_PROCESS_CORE_SIDE_H
#define WEEXV8_MULTI_PROCESS_CORE_SIDE_H
- #include <memory>
+#include <memory>
#include "android/jsengine/weex_ipc_client.h"
#include "core/bridge/script_bridge.h"
class WeexJSServer;
namespace weex {
- namespace bridge {
- namespace js {
- class CoreSideInMultiProcess : public WeexCore::ScriptBridge::CoreSide {
- public:
- explicit CoreSideInMultiProcess(WeexIPCClient *client);
- explicit CoreSideInMultiProcess();
+namespace bridge {
+namespace js {
+class CoreSideInMultiProcess : public WeexCore::ScriptBridge::CoreSide {
+ public:
+ explicit CoreSideInMultiProcess(WeexIPCClient *client);
+ explicit CoreSideInMultiProcess();
- ~CoreSideInMultiProcess() override;
+ ~CoreSideInMultiProcess() override;
- inline void set_ipc_client(WeexIPCClient *client) { client_ = client; };
+ inline void set_ipc_client(WeexIPCClient *client) { client_ = client; };
- void CallNative(const char *page_id, const char *task,
- const char *callback) override;
+ void CallNative(const char *page_id, const char *task,
+ const char *callback) override;
- std::unique_ptr<ValueWithType> CallNativeModule(
- const char *page_id, const char *module, const char *method,
- const char *arguments, int arguments_length, const char *options,
- int options_length) override;
+ std::unique_ptr<ValueWithType> CallNativeModule(
+ const char *page_id, const char *module, const char *method,
+ const char *arguments, int arguments_length, const char *options,
+ int options_length) override;
- void CallNativeComponent(const char *page_id, const char *ref,
- const char *method, const char *arguments,
- int arguments_length, const char *options,
- int options_length) override;
+ void CallNativeComponent(const char *page_id, const char *ref,
+ const char *method, const char *arguments,
+ int arguments_length, const char *options,
+ int options_length) override;
- void AddElement(const char *page_id, const char *parent_ref,
- const char *dom_str, int dom_str_length,
- const char *index_str) override;
+ void AddElement(const char *page_id, const char *parent_ref,
+ const char *dom_str, int dom_str_length,
+ const char *index_str) override;
- void SetTimeout(const char *callback_id, const char *time) override;
+ void SetTimeout(const char *callback_id, const char *time) override;
- void NativeLog(const char *str_array) override;
+ void NativeLog(const char *str_array) override;
- void CreateBody(const char *page_id, const char *dom_str,
- int dom_str_length) override;
+ void CreateBody(const char *page_id, const char *dom_str,
+ int dom_str_length) override;
- int UpdateFinish(const char *page_id, const char *task, int task_length,
- const char *callback, int callback_length) override;
+ int UpdateFinish(const char *page_id, const char *task, int task_length,
+ const char *callback, int callback_length) override;
- void CreateFinish(const char *page_id) override;
+ void CreateFinish(const char *page_id) override;
- int RefreshFinish(const char *page_id, const char *task,
- const char *callback) override;
+ int RefreshFinish(const char *page_id, const char *task,
+ const char *callback) override;
- void UpdateAttrs(const char *page_id, const char *ref, const char *data,
- int data_length) override;
+ void UpdateAttrs(const char *page_id, const char *ref, const char *data,
+ int data_length) override;
- void UpdateStyle(const char *page_id, const char *ref, const char *data,
- int data_length) override;
+ void UpdateStyle(const char *page_id, const char *ref, const char *data,
+ int data_length) override;
- void RemoveElement(const char *page_id, const char *ref) override;
+ void RemoveElement(const char *page_id, const char *ref) override;
- void MoveElement(const char *page_id, const char *ref, const char *parent_ref,
- int index) override;
+ void MoveElement(const char *page_id, const char *ref, const char *parent_ref,
+ int index) override;
- void AddEvent(const char *page_id, const char *ref,
- const char *event) override;
+ void AddEvent(const char *page_id, const char *ref,
+ const char *event) override;
- void RemoveEvent(const char *page_id, const char *ref,
- const char *event) override;
+ void RemoveEvent(const char *page_id, const char *ref,
+ const char *event) override;
- const char *CallGCanvasLinkNative(const char *context_id, int type,
- const char *arg) override;
+ const char *CallGCanvasLinkNative(const char *context_id, int type,
+ const char *arg) override;
- int SetInterval(const char *page_id, const char *callback_id,
- const char *time) override;
+ int SetInterval(const char *page_id, const char *callback_id,
+ const char *time) override;
- void ClearInterval(const char *page_id, const char *callback_id) override;
+ void ClearInterval(const char *page_id, const char *callback_id) override;
- const char *CallT3DLinkNative(int type, const char *arg) override;
+ const char *CallT3DLinkNative(int type, const char *arg) override;
- void PostMessage(const char *vim_id, const char *data, int dataLength) override;
+ void PostMessage(const char *vim_id, const char *data, int dataLength) override;
- void DispatchMessage(const char *client_id, const char *data, int dataLength,
- const char *callback, const char *vm_id) override;
+ void DispatchMessage(const char *client_id, const char *data, int dataLength,
+ const char *callback, const char *vm_id) override;
- std::unique_ptr<WeexJSResult> DispatchMessageSync(
- const char *client_id, const char *data, int dataLength,
- const char *vm_id) override;
+ std::unique_ptr<WeexJSResult> DispatchMessageSync(
+ const char *client_id, const char *data, int dataLength,
+ const char *vm_id) override;
- void ReportException(const char *page_id, const char *func,
- const char *exception_string) override;
+ void ReportException(const char *page_id, const char *func,
+ const char *exception_string) override;
- void SetJSVersion(const char *js_version) override;
+ void SetJSVersion(const char *js_version) override;
- void OnReceivedResult(long callback_id, std::unique_ptr<WeexJSResult>& result);
- void UpdateComponentData(const char* page_id, const char* cid, const char* json_data);
+ void OnReceivedResult(long callback_id, std::unique_ptr<WeexJSResult> &result) override;;
+ void UpdateComponentData(const char *page_id, const char *cid, const char *json_data) override;;
- private:
- WeexIPCClient *client_;
- DISALLOW_COPY_AND_ASSIGN(CoreSideInMultiProcess);
- };
- } // namespace js
- } // namespace bridge
+ bool Log(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) override;
+
+ private:
+ WeexIPCClient *client_;
+ DISALLOW_COPY_AND_ASSIGN(CoreSideInMultiProcess);
+};
+} // namespace js
+} // namespace bridge
} // namespace weex
#endif // WEEXV8_MULTI_PROCESS_CORE_SIDE_H
diff --git a/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_so.cpp b/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_so.cpp
index b18270a..019d2d0 100644
--- a/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_so.cpp
+++ b/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_so.cpp
@@ -152,7 +152,7 @@ void CoreSideInMultiSo::PostMessage(const char *vim_id, const char *data, int da
void CoreSideInMultiSo::DispatchMessage(const char *client_id, const char *data, int dataLength,
const char *callback,
const char *vm_id) {
- functions_exposed_by_core_->funcCallDIspatchMessage(client_id, data,dataLength, callback,
+ functions_exposed_by_core_->funcCallDIspatchMessage(client_id, data, dataLength, callback,
vm_id);
}
@@ -160,7 +160,7 @@ std::unique_ptr<WeexJSResult> CoreSideInMultiSo::DispatchMessageSync(
const char *client_id, const char *data, int dataLength,
const char *vm_id) {
return functions_exposed_by_core_->funcCallDispatchMessageSync(client_id, data,
- dataLength, vm_id);
+ dataLength, vm_id);
}
void CoreSideInMultiSo::ReportException(const char *page_id, const char *func,
@@ -173,13 +173,23 @@ void CoreSideInMultiSo::SetJSVersion(const char *js_version) {
functions_exposed_by_core_->funcSetJSVersion(js_version);
}
-void CoreSideInMultiSo::OnReceivedResult(long callback_id, std::unique_ptr<WeexJSResult>& result) {
+void CoreSideInMultiSo::OnReceivedResult(long callback_id, std::unique_ptr<WeexJSResult> &result) {
functions_exposed_by_core_->funcOnReceivedResult(callback_id, result);
}
-void CoreSideInMultiSo::UpdateComponentData(const char* page_id, const char* cid, const char* json_data) {
+void CoreSideInMultiSo::UpdateComponentData(const char *page_id,
+ const char *cid,
+ const char *json_data) {
functions_exposed_by_core_->funcUpdateComponentData(page_id, cid, json_data);
}
+
+bool CoreSideInMultiSo::Log(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) {
+ return functions_exposed_by_core_->funcLog(level, tag, file, line, log);
+}
+
} // namespace js
} // namespace bridge
} // namespace weex
diff --git a/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_so.h b/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_so.h
index 625a975..2f0821f 100644
--- a/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_so.h
+++ b/weex_core/Source/android/jsengine/bridge/script/core_side_in_multi_so.h
@@ -91,6 +91,11 @@ class CoreSideInMultiSo : public WeexCore::ScriptBridge::CoreSide {
void OnReceivedResult(long callback_id, std::unique_ptr<WeexJSResult>& result);
void UpdateComponentData(const char* page_id, const char* cid, const char* json_data);
+ bool Log(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log)override;
+
private:
FunctionsExposedByCore *functions_exposed_by_core_;
DISALLOW_COPY_AND_ASSIGN(CoreSideInMultiSo);
diff --git a/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_process.cpp b/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_process.cpp
index c1615fe..fa4cb02 100644
--- a/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_process.cpp
+++ b/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_process.cpp
@@ -220,6 +220,9 @@ namespace weex {
UpdateGlobalConfig);
handler->registerHandler(static_cast<uint32_t>(IPCJSMsg::UpdateInitFrameworkParams),
UpdateInitFrameworkParams);
+
+ handler->registerHandler(static_cast<uint32_t>(IPCJSMsg::SETLOGLEVEL),
+ setLogType);
}
std::unique_ptr<IPCResult> ScriptBridgeInMultiProcess::InitFramework(
@@ -424,8 +427,6 @@ namespace weex {
std::unique_ptr<IPCResult> ScriptBridgeInMultiProcess::CreateInstance(
IPCArguments *arguments) {
- LOGD("ScriptBridgeInMultiProcess::CreateInstance");
-
const char *instanceID = GetUTF8StringFromIPCArg(arguments, 0);
const char *func = GetUTF8StringFromIPCArg(arguments, 1);
const char *script = GetUTF8StringFromIPCArg(arguments, 2);
@@ -454,6 +455,7 @@ namespace weex {
init_framework_params->value = IPCByteArrayToWeexByteArray(ba);
params.push_back(init_framework_params);
}
+ LOG_TLOG("jsEngine","ScriptBridgeInMultiProcess::CreateInstance and Id is : %s", instanceID);
auto result = createInt32Result(Instance()->script_side()->CreateInstance(
instanceID, func, script, opts, initData, extendsApi,params));
freeInitFrameworkParams(params);
@@ -504,6 +506,17 @@ namespace weex {
return createVoidResult();
}
+ std::unique_ptr<IPCResult> ScriptBridgeInMultiProcess::setLogType(
+ IPCArguments *arguments) {
+ LOGD("ScriptBridgeInMultiProcess::setLogType");
+ int type = arguments->get<int32_t>(0);
+ int perf = arguments->get<int32_t>(1);
+ Instance()->script_side()->SetLogType(type, perf == 1);
+
+ return createVoidResult();
+ }
+
+
std::unique_ptr<IPCResult> ScriptBridgeInMultiProcess::TakeHeapSnapshot(
IPCArguments *arguments) {
return createVoidResult();
diff --git a/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_process.h b/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_process.h
index fcf17fc..c0163c8 100644
--- a/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_process.h
+++ b/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_process.h
@@ -66,6 +66,7 @@ class ScriptBridgeInMultiProcess : public WeexCore::ScriptBridge {
IPC_METHOD(ExecJSOnInstance)
IPC_METHOD(UpdateGlobalConfig)
IPC_METHOD(UpdateInitFrameworkParams)
+ IPC_METHOD(setLogType)
private:
static ScriptBridgeInMultiProcess* g_instance;
diff --git a/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_so.cpp b/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_so.cpp
index 1b52af7..972cd16 100644
--- a/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_so.cpp
+++ b/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_so.cpp
@@ -60,7 +60,7 @@ FunctionsExposedByJS *ScriptBridgeInMultiSo::GetExposedFunctions() {
ExecJSOnAppWithResult, CallJSOnAppContext, DestroyAppContext,
ExecJSService, ExecTimeCallback, ExecJS,
ExecJSWithResult, ExecJSWithCallback, CreateInstance, ExecJSOnInstance,
- DestroyInstance, UpdateGlobalConfig, UpdateInitFrameworkParams};
+ DestroyInstance, UpdateGlobalConfig, UpdateInitFrameworkParams, SetLogType};
auto functions = (FunctionsExposedByJS *)malloc(sizeof(FunctionsExposedByJS));
memset(functions, 0, sizeof(FunctionsExposedByJS));
memcpy(functions, &temp, sizeof(FunctionsExposedByJS));
@@ -157,6 +157,10 @@ int ScriptBridgeInMultiSo::UpdateInitFrameworkParams(const std::string& key, con
return Instance()->script_side()->UpdateInitFrameworkParams(key, value, desc);
}
+void ScriptBridgeInMultiSo::SetLogType(const int logLevel, const bool isPerf) {
+ return Instance()->script_side()->SetLogType(logLevel, isPerf);
+}
+
} // namespace js
} // namespace bridge
diff --git a/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_so.h b/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_so.h
index 6e2d272..1700fee 100644
--- a/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_so.h
+++ b/weex_core/Source/android/jsengine/bridge/script/script_bridge_in_multi_so.h
@@ -77,6 +77,7 @@ class ScriptBridgeInMultiSo : public WeexCore::ScriptBridge {
static int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc);
+ static void SetLogType(const int logLevel, const bool isPerf);
private:
static ScriptBridgeInMultiSo *g_instance;
diff --git a/weex_core/Source/android/jsengine/bridge/script/script_side_in_queue.cpp b/weex_core/Source/android/jsengine/bridge/script/script_side_in_queue.cpp
index 4383fc9..ea0f6ac 100644
--- a/weex_core/Source/android/jsengine/bridge/script/script_side_in_queue.cpp
+++ b/weex_core/Source/android/jsengine/bridge/script/script_side_in_queue.cpp
@@ -21,7 +21,6 @@
//
#include <object/weex_env.h>
-#include <object/tlog.h>
#include "script_side_in_queue.h"
#include "android/jsengine/task/impl/init_framework_task.h"
@@ -245,7 +244,7 @@ int ScriptSideInQueue::CreateInstance(const char *instanceId,
auto string = String::fromUTF8(script);
if (string.isEmpty()) {
- Weex::TLog::tlog("%s id CreateInstance's script is null", instanceId);
+ LOG_TLOG("jsEngine","%s id CreateInstance's script is null", instanceId);
return 0;
}
CreateInstanceTask *task = new CreateInstanceTask(String::fromUTF8(instanceId),
@@ -263,6 +262,12 @@ int ScriptSideInQueue::CreateInstance(const char *instanceId,
return 1;
}
+void ScriptSideInQueue::SetLogType(const int logLevel, const bool isPerf) {
+ LOGE("jsEngine setLog Level %d in Performance mode %s", logLevel, isPerf ? "true" :"false");
+ weex::base::LogImplement::getLog()->setPrintLevel((WeexCore::LogLevel)logLevel);
+ weex::base::LogImplement::getLog()->setPerfMode(isPerf);
+};
+
std::unique_ptr<WeexJSResult> ScriptSideInQueue::ExecJSOnInstance(const char *instanceId,
const char *script,int type) {
LOGD("ScriptSideInQueue::ExecJSOnInstance type:%d",type);
@@ -358,12 +363,12 @@ WeexTaskQueue *ScriptSideInQueue::taskQueue(const char *id, bool log) {
WeexEnv::getEnv()->m_task_cache_.clear();
}
if (log) {
- LOGE("dyyLog instance %s use back up thread time is %lld", id, microTime());
+ LOGE("instance %s use back up thread time is %lld", id, microTime());
}
return weexTaskQueue_bk_;
}
if (log && id != nullptr) {
- LOGE("dyyLog instance %s use main thread time is %lld", id, microTime());
+ LOGE("instance %s use main thread time is %lld", id, microTime());
}
return weexTaskQueue_;
}
diff --git a/weex_core/Source/android/jsengine/bridge/script/script_side_in_queue.h b/weex_core/Source/android/jsengine/bridge/script/script_side_in_queue.h
index d71ca76..2b7ecd1 100644
--- a/weex_core/Source/android/jsengine/bridge/script/script_side_in_queue.h
+++ b/weex_core/Source/android/jsengine/bridge/script/script_side_in_queue.h
@@ -98,7 +98,7 @@ namespace weex {
int UpdateGlobalConfig(const char *config) override;
int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc) override;
-
+ void SetLogType(const int logLevel, const bool isPerf) override;
private:
std::vector<std::string> usingBackThreadId;
diff --git a/weex_core/Source/android/jsengine/bridge/script/script_side_in_simple.cpp b/weex_core/Source/android/jsengine/bridge/script/script_side_in_simple.cpp
index 41a7784..aba1f51 100644
--- a/weex_core/Source/android/jsengine/bridge/script/script_side_in_simple.cpp
+++ b/weex_core/Source/android/jsengine/bridge/script/script_side_in_simple.cpp
@@ -143,6 +143,10 @@ int ScriptSideInSimple::UpdateInitFrameworkParams(const std::string& key, const
return runtime_->UpdateInitFrameworkParams(key ,value, desc);
}
+void ScriptSideInSimple::SetLogType(const int logLevel, const bool isPerf) {
+ //do nothing
+}
+
} // namespace js
diff --git a/weex_core/Source/android/jsengine/bridge/script/script_side_in_simple.h b/weex_core/Source/android/jsengine/bridge/script/script_side_in_simple.h
index af6d2ac..ebea353 100644
--- a/weex_core/Source/android/jsengine/bridge/script/script_side_in_simple.h
+++ b/weex_core/Source/android/jsengine/bridge/script/script_side_in_simple.h
@@ -75,7 +75,7 @@ class ScriptSideInSimple : public WeexCore::ScriptBridge::ScriptSide {
int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc) override;
-
+ void SetLogType(const int logLevel, const bool isPerf) override;
inline void set_runtime(WeexRuntime *runtime) { runtime_ = runtime; }
diff --git a/weex_core/Source/android/wrap/log_utils.h b/weex_core/Source/android/jsengine/object/log_utils_jss.h
similarity index 54%
copy from weex_core/Source/android/wrap/log_utils.h
copy to weex_core/Source/android/jsengine/object/log_utils_jss.h
index 5bdf164..5cfbb13 100644
--- a/weex_core/Source/android/wrap/log_utils.h
+++ b/weex_core/Source/android/jsengine/object/log_utils_jss.h
@@ -16,21 +16,31 @@
* specific language governing permissions and limitations
* under the License.
*/
+//
+// Created by Darin on 2019-06-24.
+//
-#ifndef WEEX_PROJECT_LOG_UTILS_H
-#define WEEX_PROJECT_LOG_UTILS_H
+#ifndef WEEX_PROJECT_LOG_UTILS_JSS_H
+#define WEEX_PROJECT_LOG_UTILS_JSS_H
-#include <jni.h>
#include "base/log_defines.h"
-#include "core/bridge/log_bridge.h"
-
-namespace WeexCore {
-class LogUtils : public LogBridge {
+#include "weex_env.h"
+class LogUtilsJSS : public weex::base::LogBase {
public:
- static bool RegisterJNIUtils(JNIEnv* env);
- static void NativeLog(JNIEnv* env, const char* str_array);
- void log(LogLevel level, const char* tag, const char* file, unsigned long line, const char* log) override;
-};
-} // namespace WeexCore
+ bool log(WeexCore::LogLevel level,
+ const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) override {
-#endif // WEEX_PROJECT_LOG_UTILS_H
+ //Please do not add Any LOGE in this function.
+
+ // for performance, only send TLog & performance Log to main process
+ if (level == WeexCore::LogLevel::Performance
+ || level == WeexCore::LogLevel::Tlog) {
+ return WeexEnv::getEnv()->sendLog((int) level, tag, file, line, log);
+ }
+ return false;
+ }
+};
+#endif //WEEX_PROJECT_LOG_UTILS_JSS_H
diff --git a/weex_core/Source/android/jsengine/object/tlog.h b/weex_core/Source/android/jsengine/object/tlog.h
deleted file mode 100644
index 62c9f1e..0000000
--- a/weex_core/Source/android/jsengine/object/tlog.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-//
-// Created by Darin on 2019-07-01.
-//
-
-#ifndef WEEX_PROJECT_TLOG_H
-#define WEEX_PROJECT_TLOG_H
-
-#include "weex_env.h"
-
-namespace Weex {
- class TLog {
- public: static void tlog(const char* fmt, ...) {
- va_list arg_list;
- int size;
- va_start(arg_list, fmt);
- size = vsnprintf(nullptr, 0, fmt, arg_list);
- int byte_count = size + 1;
- char * buffer = (char*)malloc(byte_count);
- memset(buffer, 0, byte_count);
- va_end(arg_list);
- if (size > 0) {
- va_start(arg_list, fmt);
- vsnprintf(const_cast<char*>(buffer), byte_count, fmt, arg_list);
- va_end(arg_list);
- }
- WeexEnv::getEnv()->sendTLog("JSEngine", buffer);
-
- free(buffer);
- }
- };
-
-
-}
-
-#endif //WEEX_PROJECT_TLOG_H
diff --git a/weex_core/Source/android/jsengine/object/weex_console_object.cpp b/weex_core/Source/android/jsengine/object/weex_console_object.cpp
index 010593b..8614a8a 100644
--- a/weex_core/Source/android/jsengine/object/weex_console_object.cpp
+++ b/weex_core/Source/android/jsengine/object/weex_console_object.cpp
@@ -126,8 +126,7 @@ static void printConsoleLog(ExecState *exec, MessageLevel level) {
JSValue val = exec->argument(0);
if (val.isString()) {
String s = val.toWTFString(exec);
- Weex::LogUtil::ConsoleLogPrint((int) level, "jsLog", s.utf8().data());
- LOGE("consoleLogWithLevel level: %d log:%s", level, s.utf8().data());
+ Weex::LogUtil::ConsoleLogPrint((int) level, "jsLog timeline", s.utf8().data());
return;
} else if (val.isObject()) {
VM &vm_catch = exec->vm();
@@ -139,13 +138,11 @@ static void printConsoleLog(ExecState *exec, MessageLevel level) {
return;
}
Weex::LogUtil::ConsoleLogPrint((int)level, "jsLog", str.utf8().data());
- LOGE("consoleLogWithLevel level: %d log:%s", level, str.utf8().data());
}
Weex::LogUtil::ConsoleLogPrint((int) level, "jsLog", "[object]");
}
static EncodedJSValue consoleLogWithLevel(ExecState *exec, MessageLevel level) {
- LOGE("consoleLogWithLevel");
printConsoleLog(exec, level);
// ConsoleClient *client = exec->lexicalGlobalObject()->consoleClient();
// if (!client)
diff --git a/weex_core/Source/android/jsengine/object/weex_env.cpp b/weex_core/Source/android/jsengine/object/weex_env.cpp
index 89b7688..b229e8f 100644
--- a/weex_core/Source/android/jsengine/object/weex_env.cpp
+++ b/weex_core/Source/android/jsengine/object/weex_env.cpp
@@ -21,8 +21,11 @@
//
#include "weex_env.h"
-#include "tlog.h"
+#include "core/bridge/script_bridge.h"
+namespace WeexCore {
+class ScriptBridge;
+}
WeexEnv *WeexEnv::env_ = nullptr;
WeexCore::ScriptBridge *WeexEnv::scriptBridge() { return scriptBridge_; }
@@ -31,39 +34,44 @@ bool WeexEnv::useWson() { return isUsingWson; }
void WeexEnv::setUseWson(bool useWson) { isUsingWson = useWson; }
-void WeexEnv::setScriptBridge(WeexCore::ScriptBridge *scriptBridge) { scriptBridge_ = scriptBridge; }
+void WeexEnv::setScriptBridge(WeexCore::ScriptBridge *scriptBridge) {
+ scriptBridge_ = scriptBridge;
+}
void WeexEnv::initIPC() {
- // init IpcClient in io Thread
- isMultiProcess = true;
- m_ipc_client_.reset(new WeexIPCClient(ipcClientFd_));
+ // init IpcClient in io Thread
+ isMultiProcess = true;
+ m_ipc_client_.reset(new WeexIPCClient(ipcClientFd_));
}
WeexEnv::WeexEnv() {
- this->enableBackupThread__ = false;
- this->isUsingWson = true;
- this->isJscInitOk_ = false;
- this->m_cache_task_ = true;
+ this->enableBackupThread__ = false;
+ this->isUsingWson = true;
+ this->isJscInitOk_ = false;
+ this->m_cache_task_ = true;
}
void WeexEnv::initJSC(bool isMultiProgress) {
- static std::once_flag initJSCFlag;
- std::call_once(initJSCFlag, [isMultiProgress]{
- if (!WEEXICU::initICUEnv(isMultiProgress)) {
- LOGE("failed to init ICUEnv single process");
- // return false;
- }
+ weex::base::TimeCalculator
+ timeCalculator(weex::base::TaskPlatform::JSS_ENGINE, "initJSC", "initJSC");
+ static std::once_flag initJSCFlag;
+ std::call_once(initJSCFlag, [isMultiProgress] {
+ if (!WEEXICU::initICUEnv(isMultiProgress)) {
+ LOGE("failed to init ICUEnv single process");
+ // return false;
+ }
#ifndef USE_JS_RUNTIME
- Options::enableRestrictedOptions(true);
+ Options::enableRestrictedOptions(true);
// Initialize JSC before getting VM.
- WTF::initializeMainThread();
- initHeapTimer();
- JSC::initializeThreading();
+ WTF::initializeMainThread();
+ initHeapTimer();
+ JSC::initializeThreading();
#if ENABLE(WEBASSEMBLY)
- JSC::Wasm::enableFastMemory();
+ JSC::Wasm::enableFastMemory();
#endif
#endif
- });
+ });
+ timeCalculator.taskEnd();
}
void WeexEnv::init_crash_handler(std::string crashFileName) {
// initialize signal handler
@@ -72,13 +80,13 @@ void WeexEnv::init_crash_handler(std::string crashFileName) {
crashHandler->initializeCrashHandler();
}
bool WeexEnv::is_app_crashed() {
- if(!isMultiProcess)
+ if (!isMultiProcess)
return false;
- bool crashed = crashHandler->is_crashed();
- if(crashed) {
- Weex::TLog::tlog("%s", "AppCrashed");
- }
- return crashed;
+ bool crashed = crashHandler->is_crashed();
+ if (crashed) {
+ LOG_TLOG("jsEngine", "%s", "AppCrashed");
+ }
+ return crashed;
}
volatile bool WeexEnv::can_m_cache_task_() const {
return m_cache_task_;
@@ -92,12 +100,14 @@ WeexEnv::~WeexEnv() {
#endif
}
-void WeexEnv::sendTLog(const char *tag, const char *log) {
- if(m_back_to_weex_core_thread.get()) {
- BackToWeexCoreQueue::IPCTask *ipc_task = new BackToWeexCoreQueue::IPCTask(
- IPCProxyMsg::TLOGMSG);
- ipc_task->addParams(tag);
- ipc_task->addParams(log);
- m_back_to_weex_core_thread->addTask(ipc_task);
- }
+bool WeexEnv::sendLog(int level,
+ const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) {
+
+ if (scriptBridge_ == nullptr) {
+ return false;
+ }
+ return scriptBridge_->core_side()->Log(level, tag, file, line, log);
}
diff --git a/weex_core/Source/android/jsengine/object/weex_env.h b/weex_core/Source/android/jsengine/object/weex_env.h
index 2f1e376..4793735 100644
--- a/weex_core/Source/android/jsengine/object/weex_env.h
+++ b/weex_core/Source/android/jsengine/object/weex_env.h
@@ -24,15 +24,14 @@
#define WEEXV8_WEEXENV_H
#include <mutex>
-
#ifdef USE_JS_RUNTIME
#include "js_runtime/weex/task/weex_task.h"
#include "js_runtime/weex/task/back_to_weex_core_queue.h"
#include "js_runtime/weex/task/timer_queue.h"
#include "base/crash/crash_handler.h"
-
#else
#include <task/weex_task.h>
+#include <android/jsengine/task/weex_task.h>
#include "android/jsengine/task/back_to_weex_core_queue.h"
#include "android/jsengine/task/timer_queue.h"
#endif
@@ -108,10 +107,12 @@ public:
void init_crash_handler(std::string crashFileName);
bool is_app_crashed();
+ bool sendLog(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log);
- void sendTLog(const char *tag, const char *log);
-
-public:
+ public:
std::unique_ptr<BackToWeexCoreQueue> m_back_to_weex_core_thread;
volatile bool isMultiProcess = false;
std::unique_ptr<WeexIPCClient> m_ipc_client_;
diff --git a/weex_core/Source/android/jsengine/object/weex_global_object.cpp b/weex_core/Source/android/jsengine/object/weex_global_object.cpp
index 4f3bbbd..68cd2bb 100644
--- a/weex_core/Source/android/jsengine/object/weex_global_object.cpp
+++ b/weex_core/Source/android/jsengine/object/weex_global_object.cpp
@@ -186,12 +186,16 @@ void WeexGlobalObject::initWxEnvironment(std::vector<INIT_FRAMEWORK_PARAMS *> &p
}
isGlobalConfigStartUpSet = true;
}
-
// --------------------------------------------------------
// add for debug mode
- if (String("debugMode") == type && String("true") == value) {
- WeexCore::DebugMode = true;
- LOGE("jss use %s"," jsc");
+ static bool hasSet = false;
+ if(!hasSet) {
+ if (String("debugMode") == type && String("true") == value) {
+ __android_log_print(ANDROID_LOG_ERROR,"WeexCore","setDebugMode 1 ");
+ weex::base::LogImplement::getLog()->setDebugMode(true);
+ hasSet = true;
+ LOGE("jss use %s"," jsc");
+ }
}
// --------------------------------------------------------
@@ -418,14 +422,6 @@ JSFUNCTION functionCallNativeModule(ExecState *state) {
getStringArgsFromState(state, 2, methodChar);
getWsonOrJsonArgsFromState(state, 3, arguments);
getWsonOrJsonArgsFromState(state, 4, options);
-
-// String a;
-// a.append("functionCallNativeModule:");
-// a.append(moduleChar.getValue());
-// a.append(":");
-// a.append(methodChar.getValue());
-// weex::base::TimeCalculator timeCalculator(weex::base::TaskPlatform::JSS_ENGINE, a.utf8().data(), instanceId.getValue());
-// timeCalculator.taskStart();
auto result = globalObject->js_bridge()->core_side()->CallNativeModule(instanceId.getValue(),
moduleChar.getValue(),
methodChar.getValue(),
@@ -433,7 +429,6 @@ JSFUNCTION functionCallNativeModule(ExecState *state) {
arguments.getLength(),
options.getValue(),
options.getLength());
-// timeCalculator.taskEnd();
JSValue ret;
switch (result->type) {
case ParamsType::DOUBLE:
diff --git a/weex_core/Source/android/jsengine/weex_ipc_server.cpp b/weex_core/Source/android/jsengine/weex_ipc_server.cpp
index 8e09a6f..7db52e0 100644
--- a/weex_core/Source/android/jsengine/weex_ipc_server.cpp
+++ b/weex_core/Source/android/jsengine/weex_ipc_server.cpp
@@ -17,13 +17,14 @@
* under the License.
*/
#include "android/jsengine/weex_ipc_server.h"
-
#include "android/jsengine/bridge/platform/platform_side_multi_process.h"
#include "android/jsengine/bridge/platform/platform_bridge_in_multi_process.h"
#include "android/jsengine/object/weex_env.h"
#include "android/jsengine/weex_runtime.h"
#include "core/manager/weex_core_manager.h"
#include "android/jsengine/weex_jsc_utils.h"
+#include "base/log_defines.h"
+#include "android/jsengine/object/log_utils_jss.h"
#ifdef USE_JS_RUNTIME
#include "base/crash/crash_handler.h"
#include <unistd.h>
@@ -49,7 +50,6 @@ WeexJSServer::WeexJSServerImpl::WeexJSServerImpl(int serverFd, int clientFd, boo
WeexEnv::getEnv()->setIpcServerFd(serverFd);
WeexEnv::getEnv()->setIpcClientFd(clientFd);
WeexEnv::getEnv()->setEnableTrace(enableTrace);
-
int _fd = serverFd;
void *base = mmap(nullptr, IPCFutexPageQueue::ipc_size, PROT_READ | PROT_WRITE, MAP_SHARED, _fd, 0);
if (base == MAP_FAILED) {
@@ -63,7 +63,7 @@ WeexJSServer::WeexJSServerImpl::WeexJSServerImpl(int serverFd, int clientFd, boo
sender = std::move(createIPCSender(futexPageQueue.get(), handler.get()));
listener = std::move(createIPCListener(futexPageQueue.get(), handler.get()));
serializer = std::move(createIPCSerializer());
-
+ weex::base::LogImplement::getLog()->setLogImplement(new LogUtilsJSS());
WeexEnv::getEnv()->init_crash_handler(crashFileName);
WeexEnv::getEnv()->m_back_to_weex_core_thread.reset(new BackToWeexCoreQueue());
diff --git a/weex_core/Source/android/jsengine/weex_runtime.cpp b/weex_core/Source/android/jsengine/weex_runtime.cpp
index 14d2a61..eb1b3dd 100644
--- a/weex_core/Source/android/jsengine/weex_runtime.cpp
+++ b/weex_core/Source/android/jsengine/weex_runtime.cpp
@@ -20,7 +20,6 @@
// Created by Darin on 28/04/2018.
//
-#include <object/tlog.h>
#include "android/jsengine/weex_runtime.h"
#include "android/jsengine/bridge/script/script_bridge_in_multi_so.h"
@@ -319,7 +318,7 @@ int WeexRuntime::exeCTimeCallback(const String &source) {
int WeexRuntime::exeJS(const String &instanceId, const String &nameSpace, const String &func,
std::vector<VALUE_WITH_TYPE *> ¶ms) {
-// LOGE("dyyLog EXECJS func:%s and params size is %d", func.utf8().data(), params.size());
+// LOGE("EXECJS func:%s and params size is %d", func.utf8().data(), params.size());
String runFunc = func;
JSGlobalObject *globalObject;
@@ -607,8 +606,7 @@ int WeexRuntime::createInstance(const String &instanceId, const String &func, co
const String &initData,
const String &extendsApi,
std::vector<INIT_FRAMEWORK_PARAMS*>& params) {
- LOGE("test-> : start createInstance");
- Weex::TLog::tlog("id --> %s CreateInstance start", instanceId.utf8().data());
+ LOG_TLOG("jsEngine","id --> %s CreateInstance start", instanceId.utf8().data());
JSGlobalObject *impl_globalObject = weexObjectHolder->m_globalObject.get();
JSGlobalObject *globalObject;
@@ -680,13 +678,13 @@ int WeexRuntime::createInstance(const String &instanceId, const String &func, co
for (size_t i = 0; i < keyCount; ++i) {
auto propertyName_ = JSPropertyNameArrayGetNameAtIndex(pArray, i);
if(propertyName_ == nullptr) {
- Weex::TLog::tlog("id --> %s CreateInstance's propertyName_ is null", instanceId.utf8().data());
+ LOG_TLOG("jsEngine","id --> %s CreateInstance's propertyName_ is null", instanceId.utf8().data());
continue;
}
auto propertyValue_ = JSObjectGetProperty(globalContextRef, ref, propertyName_, NULL);
if(propertyValue_ == nullptr) {
- Weex::TLog::tlog("id --> %s CreateInstance's propertyValue_ is null", instanceId.utf8().data());
+ LOG_TLOG("jsEngine","id --> %s CreateInstance's propertyValue_ is null", instanceId.utf8().data());
continue;
}
@@ -728,25 +726,24 @@ int WeexRuntime::createInstance(const String &instanceId, const String &func, co
VM &vm = globalObject->vm();
JSLockHolder locker(&vm);
-
- // if extend api is not null should exec befor createInstanceContext, such as rax-api
+ weex::base::TimeCalculator timeCalculator(weex::base::TaskPlatform::JSS_ENGINE, "weex run raxApi", instanceId.utf8().data());
+ timeCalculator.taskStart();
+ // if extend api is not null should exec before createInstanceContext, such as rax-api
if (!extendsApi.isEmpty() && extendsApi.length() > 0) {
if (!ExecuteJavaScript(globalObject, extendsApi, ("weex run raxApi"), true,
"runRaxApi", instanceId.utf8().data())) {
- Weex::TLog::tlog("id --> %s CreateInstance's weex run raxApi failed", instanceId.utf8().data());
+ LOG_TLOG("jsEngine","id --> %s CreateInstance's weex run raxApi failed", instanceId.utf8().data());
return static_cast<int32_t>(false);
}
}
-
- LOGE("test-> : after run extendsApi");
+ timeCalculator.taskEnd();
if (!ExecuteJavaScript(globalObject, script, ("weex createInstanceContext"), true,
"createInstanceContext", instanceId.utf8().data())) {
LOGE("createInstanceContext and ExecuteJavaScript Error");
- Weex::TLog::tlog("id --> %s CreateInstance's createInstanceContext failed", instanceId.utf8().data());
+ LOG_TLOG("jsEngine","id --> %s CreateInstance's createInstanceContext failed", instanceId.utf8().data());
return static_cast<int32_t>(false);
}
- LOGE("test-> : after ExecuteJavaScript");
return static_cast<int32_t>(true);
}
@@ -766,9 +763,10 @@ int WeexRuntime::_initFramework(const String &source) {
void WeexRuntime::_getArgListFromJSParams(MarkedArgumentBuffer *obj, ExecState *state,
std::vector<VALUE_WITH_TYPE *> ¶ms) {
-
- //dyyLog delete
-// String msg = "exejs Args ";
+ //delete
+ String msg = "exejs Args ";
+ weex::base::TimeCalculator timeCalculator(weex::base::TaskPlatform::JSS_ENGINE, "exejs Args", "exec js");
+ timeCalculator.taskStart();
for (unsigned int i = 0; i < params.size(); i++) {
VALUE_WITH_TYPE *paramsObject = params[i];
@@ -783,8 +781,8 @@ void WeexRuntime::_getArgListFromJSParams(MarkedArgumentBuffer *obj, ExecState *
const String &string2String = weexString2String(ipcstr);
obj->append(jString2JSValue(state, ipcstr->content, ipcstr->length));
-// msg.append(":");
-// msg.append(string2String.utf8().data());
+ msg.append(":");
+ msg.append(string2String.utf8().data());
}
break;
case ParamsType::JSONSTRING: {
@@ -794,8 +792,8 @@ void WeexRuntime::_getArgListFromJSParams(MarkedArgumentBuffer *obj, ExecState *
JSValue o = parseToObject(state, str);
obj->append(o);
-// msg.append(":");
-// msg.append(str.utf8().data());
+ msg.append(":");
+ msg.append(str.utf8().data());
}
break;
case ParamsType::BYTEARRAY: {
@@ -804,8 +802,8 @@ void WeexRuntime::_getArgListFromJSParams(MarkedArgumentBuffer *obj, ExecState *
obj->append(o);
-// msg.append(":");
-// msg.append(JSONStringify(state, o, 0).utf8().data());
+ msg.append(":");
+ msg.append(JSONStringify(state, o, 0).utf8().data());
}
break;
default:
@@ -813,8 +811,8 @@ void WeexRuntime::_getArgListFromJSParams(MarkedArgumentBuffer *obj, ExecState *
break;
}
}
-
-// LOGE("dyyLog exejs Args is %s", msg.utf8().data());
+ timeCalculator.taskEnd();
+ timeCalculator.setArgs(msg.utf8().data());
}
WeexObjectHolder *WeexRuntime::getLightAppObjectHolder(const String &instanceId) {
diff --git a/weex_core/Source/android/utils/jni_load.cc b/weex_core/Source/android/utils/jni_load.cc
index 58129c3..624a1ae 100644
--- a/weex_core/Source/android/utils/jni_load.cc
+++ b/weex_core/Source/android/utils/jni_load.cc
@@ -56,6 +56,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
}
PlatformBridge* bridge = new AndroidBridgeInSimple;
WeexCoreManager::Instance()->set_platform_bridge(bridge);
+ weex::base::LogImplement::getLog()->setLogImplement(new LogUtilsWeexCore());
return result ? JNI_VERSION_1_4 : JNI_FALSE;
}
diff --git a/weex_core/Source/android/utils/params_utils.cpp b/weex_core/Source/android/utils/params_utils.cpp
index b4226a4..e79ed1a 100644
--- a/weex_core/Source/android/utils/params_utils.cpp
+++ b/weex_core/Source/android/utils/params_utils.cpp
@@ -127,7 +127,7 @@ std::vector<INIT_FRAMEWORK_PARAMS*> initFromParam(
JNIEnv* env, jobject params,
const std::function<void(const char*, const char*)>&
ReportNativeInitStatus) {
- LOGE("initFromParam is running ");
+ LOGD("initFromParam is running ");
std::vector<INIT_FRAMEWORK_PARAMS*> initFrameworkParams;
#define ADDSTRING(name) \
@@ -472,8 +472,13 @@ std::vector<INIT_FRAMEWORK_PARAMS*> initFromParam(
genInitFrameworkParams(c_key_chars, c_value_chars));
const std::string& key = jString2Str(env, jkey);
if (key != "") {
+ const std::string &value = jString2Str(env, jvalue);
WXCoreEnvironment::getInstance()->AddOption(key,
- jString2Str(env, jvalue));
+ value);
+ if(key == "debugMode" && value == "true"){
+ __android_log_print(ANDROID_LOG_ERROR,"WeexCore","setDebugMode 2 ");
+ weex::base::LogImplement::getLog()->setDebugMode(true);
+ }
}
}
}
diff --git a/weex_core/Source/android/wrap/log_utils.cpp b/weex_core/Source/android/wrap/log_utils.cpp
index da6b7c0..1942259 100644
--- a/weex_core/Source/android/wrap/log_utils.cpp
+++ b/weex_core/Source/android/wrap/log_utils.cpp
@@ -18,18 +18,20 @@
*/
#include <sstream>
+#include <android/log.h>
#include "android/wrap/log_utils.h"
#include "android/base/string/string_utils.h"
#include "base/android/jni/android_jni.h"
+#include "log_utils.h"
namespace WeexCore {
const char kWXLogUtilsClassPath[] = "com/taobao/weex/utils/WXLogUtils";
-jclass g_WXLogUtils_clazz = nullptr;
+static jclass g_WXLogUtils_clazz = nullptr;
static intptr_t g_WXLogUtils_d = 0;
-static void Java_WXLogUtils_d(JNIEnv* env, jstring tag, jbyteArray msg) {
+static void Java_WXLogUtils_d(JNIEnv *env, jstring tag, jbyteArray msg) {
jmethodID method_id = base::android::GetMethod(
env, g_WXLogUtils_clazz, base::android::STATIC_METHOD, "d",
"(Ljava/lang/String;[B)V", &g_WXLogUtils_d);
@@ -39,7 +41,7 @@ static void Java_WXLogUtils_d(JNIEnv* env, jstring tag, jbyteArray msg) {
}
static intptr_t g_WXLogUtils_i = 0;
-static void Java_WXLogUtils_i(JNIEnv* env, jstring tag, jbyteArray msg) {
+static void Java_WXLogUtils_i(JNIEnv *env, jstring tag, jbyteArray msg) {
jmethodID method_id = base::android::GetMethod(
env, g_WXLogUtils_clazz, base::android::STATIC_METHOD, "i",
"(Ljava/lang/String;[B)V", &g_WXLogUtils_i);
@@ -49,7 +51,7 @@ static void Java_WXLogUtils_i(JNIEnv* env, jstring tag, jbyteArray msg) {
}
static intptr_t g_WXLogUtils_w = 0;
-static void Java_WXLogUtils_w(JNIEnv* env, jstring tag, jbyteArray msg) {
+static void Java_WXLogUtils_w(JNIEnv *env, jstring tag, jbyteArray msg) {
jmethodID method_id = base::android::GetMethod(
env, g_WXLogUtils_clazz, base::android::STATIC_METHOD, "w",
"(Ljava/lang/String;[B)V", &g_WXLogUtils_w);
@@ -59,7 +61,7 @@ static void Java_WXLogUtils_w(JNIEnv* env, jstring tag, jbyteArray msg) {
}
static intptr_t g_WXLogUtils_e = 0;
-static void Java_WXLogUtils_e(JNIEnv* env, jstring tag, jbyteArray msg) {
+static void Java_WXLogUtils_e(JNIEnv *env, jstring tag, jbyteArray msg) {
jmethodID method_id = base::android::GetMethod(
env, g_WXLogUtils_clazz, base::android::STATIC_METHOD, "e",
"(Ljava/lang/String;[B)V", &g_WXLogUtils_e);
@@ -68,13 +70,23 @@ static void Java_WXLogUtils_e(JNIEnv* env, jstring tag, jbyteArray msg) {
base::android::CheckException(env);
}
-bool LogUtils::RegisterJNIUtils(JNIEnv* env) {
+static intptr_t g_WXLogUtils_Msg = 0;
+static void Java_WXLogUtils_Performance(JNIEnv *env, jstring tag, jbyteArray msg) {
+ jmethodID method_id = base::android::GetMethod(
+ env, g_WXLogUtils_clazz, base::android::STATIC_METHOD, "performance",
+ "(Ljava/lang/String;[B)V", &g_WXLogUtils_Msg);
+
+ env->CallStaticVoidMethod(g_WXLogUtils_clazz, method_id, tag, msg);
+ base::android::CheckException(env);
+}
+
+bool LogUtils::RegisterJNIUtils(JNIEnv *env) {
g_WXLogUtils_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
base::android::GetClass(env, kWXLogUtilsClassPath).Get()));
return true;
}
-void LogUtils::NativeLog(JNIEnv* env, const char* str_array) {
+void LogUtils::NativeLog(JNIEnv *env, const char *str_array) {
auto tag = base::android::ScopedLocalJavaRef<jstring>(
env, env->NewStringUTF("jsLog"));
auto msg = base::android::ScopedLocalJavaRef<jbyteArray>(
@@ -82,33 +94,59 @@ void LogUtils::NativeLog(JNIEnv* env, const char* str_array) {
Java_WXLogUtils_d(env, tag.Get(), msg.Get());
}
-void LogUtils::log(LogLevel level, const char* tag, const char* file, unsigned long line, const char* log){
+bool LogUtilsWeexCore::log(WeexCore::LogLevel level,
+ const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) {
JNIEnv *env = base::android::AttachCurrentThread();
if (env == nullptr) {
- return;
+ return false;
}
- else {
- std::stringstream ss;
- ss << file << ":" << line << "," << log;
-
- auto tag_jstring = base::android::ScopedLocalJavaRef<jstring>(
- env, env->NewStringUTF(tag));
- auto msg_jbyteArray = base::android::ScopedLocalJavaRef<jbyteArray>(
- env, newJByteArray(env, ss.str().c_str()));
- switch (level) {
- case LogLevel::Debug:
- Java_WXLogUtils_d(env, tag_jstring.Get(), msg_jbyteArray.Get());
- break;
- case LogLevel::Info:
- Java_WXLogUtils_i(env, tag_jstring.Get(), msg_jbyteArray.Get());
- break;
- case LogLevel::Warn:
- Java_WXLogUtils_w(env, tag_jstring.Get(), msg_jbyteArray.Get());
- break;
- case LogLevel::Error:
- Java_WXLogUtils_e(env, tag_jstring.Get(), msg_jbyteArray.Get());
- break;
+
+ if(!weex::base::LogImplement::getLog()->debugMode()) {
+ if(level < WeexCore::LogLevel::Error) {
+ return true;
}
}
+
+ std::stringstream ss;
+ ss << file << ":" << line << "," << log;
+ auto tag_jstring = base::android::ScopedLocalJavaRef<jstring>(
+ env, env->NewStringUTF(tag));
+ auto msg_jbyteArray = base::android::ScopedLocalJavaRef<jbyteArray>(
+ env, WeexCore::newJByteArray(env, ss.str().c_str()));
+ switch (level) {
+ case WeexCore::LogLevel::Info:
+ WeexCore::Java_WXLogUtils_i(env,
+ tag_jstring.Get(),
+ msg_jbyteArray.Get());
+ break;
+ case WeexCore::LogLevel::Warn:
+ WeexCore::Java_WXLogUtils_w(env,
+ tag_jstring.Get(),
+ msg_jbyteArray.Get());
+ break;
+ case WeexCore::LogLevel::Error:
+ case WeexCore::LogLevel::Tlog:
+ case WeexCore::LogLevel::Wtf:
+ WeexCore::Java_WXLogUtils_e(env,
+ tag_jstring.Get(),
+ msg_jbyteArray.Get());
+ break;
+ case WeexCore::LogLevel::Performance :
+ WeexCore::Java_WXLogUtils_Performance(env,
+ tag_jstring.Get(),
+ msg_jbyteArray.Get());
+ break;
+ default:
+ WeexCore::Java_WXLogUtils_d(env,
+ tag_jstring.Get(),
+ msg_jbyteArray.Get());
+ break;
+ }
+ return true;
}
+
} // namespace WeexCore
+
diff --git a/weex_core/Source/android/wrap/log_utils.h b/weex_core/Source/android/wrap/log_utils.h
index 5bdf164..9b8f0f3 100644
--- a/weex_core/Source/android/wrap/log_utils.h
+++ b/weex_core/Source/android/wrap/log_utils.h
@@ -22,15 +22,25 @@
#include <jni.h>
#include "base/log_defines.h"
-#include "core/bridge/log_bridge.h"
+#include "base/log_defines.h"
namespace WeexCore {
-class LogUtils : public LogBridge {
+class LogUtils {
+ public:
+ static bool RegisterJNIUtils(JNIEnv *env);
+ static void NativeLog(JNIEnv *env, const char *str_array);
+};
+
+class LogUtilsWeexCore : public weex::base::LogBase {
public:
- static bool RegisterJNIUtils(JNIEnv* env);
- static void NativeLog(JNIEnv* env, const char* str_array);
- void log(LogLevel level, const char* tag, const char* file, unsigned long line, const char* log) override;
+ bool log(WeexCore::LogLevel level,
+ const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) override;
};
+
} // namespace WeexCore
+
#endif // WEEX_PROJECT_LOG_UTILS_H
diff --git a/weex_core/Source/android/wrap/wx_bridge.cpp b/weex_core/Source/android/wrap/wx_bridge.cpp
index 9cf5ee3..e73bc12 100755
--- a/weex_core/Source/android/wrap/wx_bridge.cpp
+++ b/weex_core/Source/android/wrap/wx_bridge.cpp
@@ -19,7 +19,9 @@
#include "android/wrap/wx_bridge.h"
#include <fstream>
-#include <core/render/manager/render_manager.h>
+#include "core/render/manager/render_manager.h"
+#include "base/time_calculator.h"
+#include "base/log_defines.h"
#include "android/wrap/log_utils.h"
#include "android/base/string/string_utils.h"
@@ -270,6 +272,19 @@ static void RemoveInstanceRenderType(JNIEnv* env, jobject jcaller,
->RemovePageRenderType(jString2StrFast(env, instanceId));
}
+static void SetLogType(JNIEnv* env, jobject jcaller, jfloat logLevel,
+ jfloat isPerf){
+ int32_t l = (int32_t)logLevel;
+ weex::base::LogImplement::getLog()->setPrintLevel((WeexCore::LogLevel)l);
+ bool flag = isPerf == 1;
+ weex::base::LogImplement::getLog()->setPerfMode(flag);
+ LOGE("WeexCore setLog Level %d in Performance mode %s debug %d", l, flag ? "true" : "false", (int)WeexCore::LogLevel::Debug);
+ WeexCoreManager::Instance()
+ ->getPlatformBridge()
+ ->core_side()
+ ->SetLogType(l, flag);
+}
+
static void SetPageArgument(JNIEnv* env, jobject jcaller,
jstring instanceId,
jstring key,
@@ -377,8 +392,6 @@ static jint InitFramework(JNIEnv* env, jobject object, jstring script,
auto result =
bridge->core_side()->InitFramework(c_script.getChars(), params_vector);
freeParams(params_vector);
-
- WeexCoreManager::Instance()->set_log_bridge(new LogUtils());
return result;
}
diff --git a/weex_core/Source/base/CMakeLists.txt b/weex_core/Source/base/CMakeLists.txt
index fceea55..27e60bc 100644
--- a/weex_core/Source/base/CMakeLists.txt
+++ b/weex_core/Source/base/CMakeLists.txt
@@ -27,6 +27,7 @@ set(${BASE_LIBRARY_NAME}_SOURCES
closure.h
make_copyable.h
time_calculator.h
+ time_calculator.cpp
time_point.h
time_point.cc
time_unit.h
diff --git a/weex_core/Source/base/android/jni/scoped_java_ref.cpp b/weex_core/Source/base/android/jni/scoped_java_ref.cpp
index 0b1c208..2bad700 100644
--- a/weex_core/Source/base/android/jni/scoped_java_ref.cpp
+++ b/weex_core/Source/base/android/jni/scoped_java_ref.cpp
@@ -18,6 +18,7 @@
*/
// Copyright 2017 The Weex Authors. All rights reserved.
+#include <base/log_defines.h>
#include "base/android/jni/scoped_java_ref.h"
#include "base/android/jni/android_jni.h"
@@ -27,7 +28,8 @@ namespace android {
JavaRef::JavaRef() : obj_(nullptr) {}
-JavaRef::JavaRef(JNIEnv *env, jobject obj) : obj_(obj) {}
+JavaRef::JavaRef(JNIEnv *env, jobject obj) : obj_(obj) {
+}
void JavaRef::ResetNewLocalRef(JNIEnv *env, jobject obj) {
if (!env) {
@@ -44,6 +46,7 @@ void JavaRef::ResetNewLocalRef(JNIEnv *env, jobject obj) {
if (obj_)
env->DeleteLocalRef(obj_);
obj_ = obj;
+
}
void JavaRef::ReleaseLocalRef(JNIEnv *env) {
diff --git a/weex_core/Source/base/android/jni/scoped_java_ref.h b/weex_core/Source/base/android/jni/scoped_java_ref.h
index 408452e..d900cbe 100644
--- a/weex_core/Source/base/android/jni/scoped_java_ref.h
+++ b/weex_core/Source/base/android/jni/scoped_java_ref.h
@@ -21,6 +21,7 @@
#define WeexCore_BASE_ANDROID_SCOPED_JAVA_REF_H_
#include <jni.h>
+#include <log_defines.h>
namespace base {
namespace android {
diff --git a/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h b/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h
index f8e04ce..c059a6f 100755
--- a/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h
+++ b/weex_core/Source/base/android/jniprebuild/jniheader/WXBridge_jni.h
@@ -39,1348 +39,1366 @@ jclass g_WXBridge_clazz = NULL;
} // namespace
-static jint InitFrameworkEnv(JNIEnv* env, jobject jcaller,
- jstring framework,
- jobject params,
- jstring cacheDir,
- jboolean pieSupport);
-
-static jint InitFramework(JNIEnv* env, jobject jcaller,
- jstring framework,
- jobject params);
-
-static void RefreshInstance(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring _namespace,
- jstring function,
- jobjectArray args);
-
-static jint ExecJS(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring name,
- jstring function,
- jobjectArray args);
-
-static jint ExecJSService(JNIEnv* env, jobject jcaller,
- jstring javascript);
-
-static void ExecJSWithCallback(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring _namespace,
- jstring _function,
- jobjectArray args,
- jlong callbackId);
-
-static jint CreateInstanceContext(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring name,
- jstring function,
- jobjectArray args);
-
-static jint DestoryInstance(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring name,
- jstring function,
- jobjectArray args);
-
-static jstring ExecJSOnInstance(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring script,
- jint type);
-
-static void onInteractionTimeUpdate(JNIEnv* env, jobject jcaller, jstring instanceId);
-
-static void FireEventOnDataRenderNode(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring ref,
- jstring type,
- jstring data,
- jstring domChanges);
-
-static void InvokeCallbackOnDataRender(JNIEnv* env, jobject jcaller,
+static jint InitFrameworkEnv(JNIEnv *env, jobject jcaller,
+ jstring framework,
+ jobject params,
+ jstring cacheDir,
+ jboolean pieSupport);
+
+static jint InitFramework(JNIEnv *env, jobject jcaller,
+ jstring framework,
+ jobject params);
+
+static void RefreshInstance(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring _namespace,
+ jstring function,
+ jobjectArray args);
+
+static jint ExecJS(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring name,
+ jstring function,
+ jobjectArray args);
+
+static jint ExecJSService(JNIEnv *env, jobject jcaller,
+ jstring javascript);
+
+static void ExecJSWithCallback(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring _namespace,
+ jstring _function,
+ jobjectArray args,
+ jlong callbackId);
+
+static jint CreateInstanceContext(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring name,
+ jstring function,
+ jobjectArray args);
+
+static jint DestoryInstance(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring name,
+ jstring function,
+ jobjectArray args);
+
+static jstring ExecJSOnInstance(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring script,
+ jint type);
+
+static void onInteractionTimeUpdate(JNIEnv *env, jobject jcaller, jstring instanceId);
+
+static void FireEventOnDataRenderNode(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring ref,
+ jstring type,
+ jstring data,
+ jstring domChanges);
+
+static void InvokeCallbackOnDataRender(JNIEnv *env, jobject jcaller,
jstring instanceId,
jstring callbackId,
jstring data,
jboolean keepAlive);
-static void RegisterModuleOnDataRenderNode(JNIEnv* env, jobject jcaller,
- jstring data);
+static void RegisterModuleOnDataRenderNode(JNIEnv *env, jobject jcaller,
+ jstring data);
-static void RegisterComponentOnDataRenderNode(JNIEnv* env, jobject jcaller,
+static void RegisterComponentOnDataRenderNode(JNIEnv *env, jobject jcaller,
jstring data);
-static void TakeHeapSnapshot(JNIEnv* env, jobject jcaller,
- jstring filename);
-
-static void BindMeasurementToRenderObject(JNIEnv* env, jobject jcaller,
- jlong ptr);
-
-static void SetRenderContainerWrapContent(JNIEnv* env, jobject jcaller,
- jboolean wrap,
- jstring instanceId);
-
-static jlongArray GetFirstScreenRenderTime(JNIEnv* env, jobject jcaller,
- jstring instanceId);
-
-static jlongArray GetRenderFinishTime(JNIEnv* env, jobject jcaller,
- jstring instanceId);
-
-static void SetDefaultHeightAndWidthIntoRootDom(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jfloat defaultWidth,
- jfloat defaultHeight,
- jboolean isWidthWrapContent,
- jboolean isHeightWrapContent);
-
-static void OnInstanceClose(JNIEnv* env, jobject jcaller,
- jstring instanceId);
-
-static void ForceLayout(JNIEnv* env, jobject jcaller,
- jstring instanceId);
-
-static jboolean NotifyLayout(JNIEnv* env, jobject jcaller,
- jstring instanceId);
-
-static void SetStyleWidth(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring ref,
- jfloat value);
-
-static void SetStyleHeight(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring ref,
- jfloat value);
-
-static void SetMargin(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring ref,
- jint edge,
- jfloat value);
-
-static void SetPadding(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring ref,
- jint edge,
- jfloat value);
-
-static void SetPosition(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring ref,
- jint edge,
- jfloat value);
-
-static void MarkDirty(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jstring ref,
- jboolean dirty);
-
-static void SetDeviceDisplay(JNIEnv* env, jobject jcaller,
- jstring instanceId, jfloat width, jfloat height, jfloat scale);
-
-static void RegisterCoreEnv(JNIEnv* env, jobject jcaller,
- jstring key,
- jstring value);
-
-static void ResetWXBridge(JNIEnv* env, jobject jcaller,
- jobject bridge,
- jstring className);
-
-static void UpdateInitFrameworkParams(JNIEnv* env, jobject jcaller,
+static void TakeHeapSnapshot(JNIEnv *env, jobject jcaller,
+ jstring filename);
+
+static void BindMeasurementToRenderObject(JNIEnv *env, jobject jcaller,
+ jlong ptr);
+
+static void SetRenderContainerWrapContent(JNIEnv *env, jobject jcaller,
+ jboolean wrap,
+ jstring instanceId);
+
+static jlongArray GetFirstScreenRenderTime(JNIEnv *env, jobject jcaller,
+ jstring instanceId);
+
+static jlongArray GetRenderFinishTime(JNIEnv *env, jobject jcaller,
+ jstring instanceId);
+
+static void SetDefaultHeightAndWidthIntoRootDom(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jfloat defaultWidth,
+ jfloat defaultHeight,
+ jboolean isWidthWrapContent,
+ jboolean isHeightWrapContent);
+
+static void OnInstanceClose(JNIEnv *env, jobject jcaller,
+ jstring instanceId);
+
+static void ForceLayout(JNIEnv *env, jobject jcaller,
+ jstring instanceId);
+
+static jboolean NotifyLayout(JNIEnv *env, jobject jcaller,
+ jstring instanceId);
+
+static void SetStyleWidth(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring ref,
+ jfloat value);
+
+static void SetStyleHeight(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring ref,
+ jfloat value);
+
+static void SetMargin(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring ref,
+ jint edge,
+ jfloat value);
+
+static void SetPadding(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring ref,
+ jint edge,
+ jfloat value);
+
+static void SetPosition(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring ref,
+ jint edge,
+ jfloat value);
+
+static void MarkDirty(JNIEnv *env, jobject jcaller,
+ jstring instanceId,
+ jstring ref,
+ jboolean dirty);
+
+static void SetDeviceDisplay(JNIEnv *env, jobject jcaller,
+ jstring instanceId, jfloat width, jfloat height, jfloat scale);
+
+static void RegisterCoreEnv(JNIEnv *env, jobject jcaller,
+ jstring key,
+ jstring value);
+
+static void ResetWXBridge(JNIEnv *env, jobject jcaller,
+ jobject bridge,
+ jstring className);
+
+static void UpdateInitFrameworkParams(JNIEnv *env, jobject jcaller,
jstring key,
jstring value,
jstring desc);
-static void UpdateGlobalConfig(JNIEnv* env, jobject jcaller,
- jstring config);
+static void UpdateGlobalConfig(JNIEnv *env, jobject jcaller,
+ jstring config);
-
-static void SetInstanceRenderType(JNIEnv* env, jobject jcaller,
+static void SetInstanceRenderType(JNIEnv *env, jobject jcaller,
jstring instanceId,
jstring renderType);
-static void RemoveInstanceRenderType(JNIEnv* env, jobject jcaller,
+static void RemoveInstanceRenderType(JNIEnv *env, jobject jcaller,
jstring instanceId);
-static void SetViewPortWidth(JNIEnv* env, jobject jcaller,
- jstring instanceId,jfloat viewPortWidth);
+static void SetViewPortWidth(JNIEnv *env, jobject jcaller,
+ jstring instanceId, jfloat viewPortWidth);
-static void SetPageArgument(JNIEnv* env, jobject jcaller,
+static void SetPageArgument(JNIEnv *env, jobject jcaller,
jstring instanceId,
jstring key,
jstring value);
+static void SetLogType(JNIEnv* env, jobject jcaller, jfloat type,
+ jfloat isPerf);
+
// Step 2: method stubs.
static intptr_t g_WXBridge_onReceivedResult = 0;
-static void Java_WXBridge_onReceivedResult(JNIEnv* env, jobject obj, jlong
- callbackId,
- jbyteArray result) {
+static void Java_WXBridge_onReceivedResult(JNIEnv *env, jobject obj, jlong
+callbackId,
+ jbyteArray result) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env));
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "onReceivedResult",
-
-"("
-"J"
-"[B"
-")"
-"V",
- &g_WXBridge_onReceivedResult);
-
- env->CallVoidMethod(obj,
- method_id, callbackId, result);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "onReceivedResult",
+
+ "("
+ "J"
+ "[B"
+ ")"
+ "V",
+ &g_WXBridge_onReceivedResult);
+
+ env->CallVoidMethod(obj,
+ method_id, callbackId, result);
base::android::CheckException(env);
}
static intptr_t g_WXBridge_callNative = 0;
-static jint Java_WXBridge_callNative(JNIEnv* env, jobject obj, jstring
- instanceId,
- jbyteArray tasks,
- jstring callback) {
+static jint Java_WXBridge_callNative(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jbyteArray tasks,
+ jstring callback) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callNative",
-
-"("
-"Ljava/lang/String;"
-"[B"
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callNative);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callNative",
+
+ "("
+ "Ljava/lang/String;"
+ "[B"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callNative);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, tasks, callback);
+ method_id, instanceId, tasks, callback);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_reportJSException = 0;
-static void Java_WXBridge_reportJSException(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring func,
- jstring exception) {
+static void Java_WXBridge_reportJSException(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring func,
+ jstring exception) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env));
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "reportJSException",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"V",
- &g_WXBridge_reportJSException);
-
- env->CallVoidMethod(obj,
- method_id, instanceId, func, exception);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "reportJSException",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V",
+ &g_WXBridge_reportJSException);
+
+ env->CallVoidMethod(obj,
+ method_id, instanceId, func, exception);
base::android::CheckException(env);
}
static intptr_t g_WXBridge_callNativeModule = 0;
static base::android::ScopedLocalJavaRef<jobject>
- Java_WXBridge_callNativeModule(JNIEnv* env, jobject obj, jstring instanceId,
- jstring module,
- jstring method,
- jbyteArray arguments,
- jbyteArray options) {
+Java_WXBridge_callNativeModule(JNIEnv *env, jobject obj, jstring instanceId,
+ jstring module,
+ jstring method,
+ jbyteArray arguments,
+ jbyteArray options) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), NULL);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callNativeModule",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"[B"
-"[B"
-")"
-"Ljava/lang/Object;",
- &g_WXBridge_callNativeModule);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callNativeModule",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "[B"
+ "[B"
+ ")"
+ "Ljava/lang/Object;",
+ &g_WXBridge_callNativeModule);
jobject ret =
env->CallObjectMethod(obj,
- method_id, instanceId, module, method, arguments, options);
+ method_id, instanceId, module, method, arguments, options);
base::android::CheckException(env);
return base::android::ScopedLocalJavaRef<jobject>(env, ret);
}
static intptr_t g_WXBridge_callNativeComponent = 0;
-static void Java_WXBridge_callNativeComponent(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring ref,
- jstring method,
- jbyteArray arguments,
- jbyteArray optionsData) {
+static void Java_WXBridge_callNativeComponent(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring ref,
+ jstring method,
+ jbyteArray arguments,
+ jbyteArray optionsData) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env));
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callNativeComponent",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"[B"
-"[B"
-")"
-"V",
- &g_WXBridge_callNativeComponent);
-
- env->CallVoidMethod(obj,
- method_id, instanceId, ref, method, arguments, optionsData);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callNativeComponent",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "[B"
+ "[B"
+ ")"
+ "V",
+ &g_WXBridge_callNativeComponent);
+
+ env->CallVoidMethod(obj,
+ method_id, instanceId, ref, method, arguments, optionsData);
base::android::CheckException(env);
}
static intptr_t g_WXBridge_setTimeoutNative = 0;
-static void Java_WXBridge_setTimeoutNative(JNIEnv* env, jobject obj, jstring
- callbackId,
- jstring time) {
+static void Java_WXBridge_setTimeoutNative(JNIEnv *env, jobject obj, jstring
+callbackId,
+ jstring time) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env));
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "setTimeoutNative",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"V",
- &g_WXBridge_setTimeoutNative);
-
- env->CallVoidMethod(obj,
- method_id, callbackId, time);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "setTimeoutNative",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V",
+ &g_WXBridge_setTimeoutNative);
+
+ env->CallVoidMethod(obj,
+ method_id, callbackId, time);
base::android::CheckException(env);
}
static intptr_t g_WXBridge_setJSFrmVersion = 0;
-static void Java_WXBridge_setJSFrmVersion(JNIEnv* env, jobject obj, jstring
- version) {
+static void Java_WXBridge_setJSFrmVersion(JNIEnv *env, jobject obj, jstring
+version) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env));
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "setJSFrmVersion",
-
-"("
-"Ljava/lang/String;"
-")"
-"V",
- &g_WXBridge_setJSFrmVersion);
-
- env->CallVoidMethod(obj,
- method_id, version);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "setJSFrmVersion",
+
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V",
+ &g_WXBridge_setJSFrmVersion);
+
+ env->CallVoidMethod(obj,
+ method_id, version);
base::android::CheckException(env);
}
static intptr_t g_WXBridge_callUpdateFinish = 0;
-static jint Java_WXBridge_callUpdateFinish(JNIEnv* env, jobject obj, jstring
- instanceId,
- jbyteArray tasks,
- jstring callback) {
+static jint Java_WXBridge_callUpdateFinish(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jbyteArray tasks,
+ jstring callback) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callUpdateFinish",
-
-"("
-"Ljava/lang/String;"
-"[B"
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callUpdateFinish);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callUpdateFinish",
+
+ "("
+ "Ljava/lang/String;"
+ "[B"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callUpdateFinish);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, tasks, callback);
+ method_id, instanceId, tasks, callback);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callRefreshFinish = 0;
-static jint Java_WXBridge_callRefreshFinish(JNIEnv* env, jobject obj, jstring
- instanceId,
- jbyteArray tasks,
- jstring callback) {
+static jint Java_WXBridge_callRefreshFinish(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jbyteArray tasks,
+ jstring callback) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callRefreshFinish",
-
-"("
-"Ljava/lang/String;"
-"[B"
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callRefreshFinish);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callRefreshFinish",
+
+ "("
+ "Ljava/lang/String;"
+ "[B"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callRefreshFinish);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, tasks, callback);
+ method_id, instanceId, tasks, callback);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_reportServerCrash = 0;
-static void Java_WXBridge_reportServerCrash(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring crashFile) {
+static void Java_WXBridge_reportServerCrash(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring crashFile) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env));
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "reportServerCrash",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"V",
- &g_WXBridge_reportServerCrash);
-
- env->CallVoidMethod(obj,
- method_id, instanceId, crashFile);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "reportServerCrash",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V",
+ &g_WXBridge_reportServerCrash);
+
+ env->CallVoidMethod(obj,
+ method_id, instanceId, crashFile);
base::android::CheckException(env);
}
static intptr_t g_WXBridge_callCreateBody = 0;
-static jint Java_WXBridge_callCreateBody(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring componentType,
- jstring ref,
- jobject styles,
- jobject attributes,
- jobject events,
- jfloatArray margins,
- jfloatArray paddings,
- jfloatArray borders) {
+static jint Java_WXBridge_callCreateBody(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring componentType,
+ jstring ref,
+ jobject styles,
+ jobject attributes,
+ jobject events,
+ jfloatArray margins,
+ jfloatArray paddings,
+ jfloatArray borders) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callCreateBody",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/util/HashMap;"
-"Ljava/util/HashMap;"
-"Ljava/util/HashSet;"
-"[F"
-"[F"
-"[F"
-")"
-"I",
- &g_WXBridge_callCreateBody);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callCreateBody",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/util/HashMap;"
+ "Ljava/util/HashMap;"
+ "Ljava/util/HashSet;"
+ "[F"
+ "[F"
+ "[F"
+ ")"
+ "I",
+ &g_WXBridge_callCreateBody);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, componentType, ref, styles, attributes, events,
- margins, paddings, borders);
+ method_id, instanceId, componentType, ref, styles, attributes, events,
+ margins, paddings, borders);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callAddElement = 0;
-static jint Java_WXBridge_callAddElement(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring componentType,
- jstring ref,
- int index,
- jstring parentRef,
- jobject styles,
- jobject attributes,
- jobject events,
- jfloatArray margins,
- jfloatArray paddings,
- jfloatArray borders,
- jboolean willLayout) {
+static jint Java_WXBridge_callAddElement(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring componentType,
+ jstring ref,
+ int index,
+ jstring parentRef,
+ jobject styles,
+ jobject attributes,
+ jobject events,
+ jfloatArray margins,
+ jfloatArray paddings,
+ jfloatArray borders,
+ jboolean willLayout) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callAddElement",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"I"
-"Ljava/lang/String;"
-"Ljava/util/HashMap;"
-"Ljava/util/HashMap;"
-"Ljava/util/HashSet;"
-"[F"
-"[F"
-"[F"
-"Z"
-")"
-"I",
- &g_WXBridge_callAddElement);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callAddElement",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "I"
+ "Ljava/lang/String;"
+ "Ljava/util/HashMap;"
+ "Ljava/util/HashMap;"
+ "Ljava/util/HashSet;"
+ "[F"
+ "[F"
+ "[F"
+ "Z"
+ ")"
+ "I",
+ &g_WXBridge_callAddElement);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, componentType, ref, int(index), parentRef,
- styles, attributes, events, margins, paddings, borders,
- willLayout);
+ method_id, instanceId, componentType, ref, int(index), parentRef,
+ styles, attributes, events, margins, paddings, borders,
+ willLayout);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callRemoveElement = 0;
-static jint Java_WXBridge_callRemoveElement(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring ref) {
+static jint Java_WXBridge_callRemoveElement(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring ref) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callRemoveElement",
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callRemoveElement",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callRemoveElement);
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callRemoveElement);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref);
+ method_id, instanceId, ref);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callMoveElement = 0;
-static jint Java_WXBridge_callMoveElement(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring ref,
- jstring parentref,
- int index) {
+static jint Java_WXBridge_callMoveElement(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring ref,
+ jstring parentref,
+ int index) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callMoveElement",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"I"
-")"
-"I",
- &g_WXBridge_callMoveElement);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callMoveElement",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "I"
+ ")"
+ "I",
+ &g_WXBridge_callMoveElement);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref, parentref, int(index));
+ method_id, instanceId, ref, parentref, int(index));
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callAddEvent = 0;
-static jint Java_WXBridge_callAddEvent(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring ref,
- jstring event) {
+static jint Java_WXBridge_callAddEvent(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring ref,
+ jstring event) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callAddEvent",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callAddEvent);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callAddEvent",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callAddEvent);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref, event);
+ method_id, instanceId, ref, event);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callRemoveEvent = 0;
-static jint Java_WXBridge_callRemoveEvent(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring ref,
- jstring event) {
+static jint Java_WXBridge_callRemoveEvent(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring ref,
+ jstring event) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callRemoveEvent",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callRemoveEvent);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callRemoveEvent",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callRemoveEvent);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref, event);
+ method_id, instanceId, ref, event);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callUpdateStyle = 0;
-static jint Java_WXBridge_callUpdateStyle(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring ref,
- jobject styles,
- jobject paddings,
- jobject margins,
- jobject borders) {
+static jint Java_WXBridge_callUpdateStyle(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring ref,
+ jobject styles,
+ jobject paddings,
+ jobject margins,
+ jobject borders) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callUpdateStyle",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/util/HashMap;"
-"Ljava/util/HashMap;"
-"Ljava/util/HashMap;"
-"Ljava/util/HashMap;"
-")"
-"I",
- &g_WXBridge_callUpdateStyle);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callUpdateStyle",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/util/HashMap;"
+ "Ljava/util/HashMap;"
+ "Ljava/util/HashMap;"
+ "Ljava/util/HashMap;"
+ ")"
+ "I",
+ &g_WXBridge_callUpdateStyle);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref, styles, paddings, margins, borders);
+ method_id, instanceId, ref, styles, paddings, margins, borders);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callUpdateAttrs = 0;
-static jint Java_WXBridge_callUpdateAttrs(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring ref,
- jobject attrs) {
+static jint Java_WXBridge_callUpdateAttrs(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring ref,
+ jobject attrs) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callUpdateAttrs",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/util/HashMap;"
-")"
-"I",
- &g_WXBridge_callUpdateAttrs);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callUpdateAttrs",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/util/HashMap;"
+ ")"
+ "I",
+ &g_WXBridge_callUpdateAttrs);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref, attrs);
+ method_id, instanceId, ref, attrs);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callAddChildToRichtext = 0;
-static jint Java_WXBridge_callAddChildToRichtext(JNIEnv* env, jobject obj, jstring instanceId, jstring nodeType,
- jstring ref,
- jstring parentRef,
- jstring richtextRef,
- jobject styles,
- jobject attrs) {
- /* Must call RegisterNativesImpl() */
- //CHECK_CLAZZ(env, obj,
- // WXBridge_clazz(env), 0);
- jmethodID method_id =
- base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callAddChildToRichtext",
-
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/util/HashMap;"
- "Ljava/util/HashMap;"
- ")"
- "I",
- &g_WXBridge_callAddChildToRichtext);
-
- jint ret =
- env->CallIntMethod(obj,
- method_id, instanceId, nodeType, ref, parentRef, richtextRef, styles, attrs);
- base::android::CheckException(env);
- return ret;
-}
-
-static intptr_t g_WXBridge_callRemoveChildFromRichtext = 0;
-static jint Java_WXBridge_callRemoveChildFromRichtext(JNIEnv* env, jobject obj, jstring instanceId,
+static jint Java_WXBridge_callAddChildToRichtext(JNIEnv *env,
+ jobject obj,
+ jstring instanceId,
+ jstring nodeType,
jstring ref,
jstring parentRef,
- jstring richtextRef) {
- /* Must call RegisterNativesImpl() */
- //CHECK_CLAZZ(env, obj,
- // WXBridge_clazz(env), 0);
- jmethodID method_id =
- base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callRemoveChildFromRichtext",
-
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- ")"
- "I",
- &g_WXBridge_callRemoveChildFromRichtext);
-
- jint ret =
- env->CallIntMethod(obj,
- method_id, instanceId, ref, parentRef, richtextRef);
- base::android::CheckException(env);
- return ret;
+ jstring richtextRef,
+ jobject styles,
+ jobject attrs) {
+ /* Must call RegisterNativesImpl() */
+ //CHECK_CLAZZ(env, obj,
+ // WXBridge_clazz(env), 0);
+ jmethodID method_id =
+ base::android::GetMethod(
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callAddChildToRichtext",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/util/HashMap;"
+ "Ljava/util/HashMap;"
+ ")"
+ "I",
+ &g_WXBridge_callAddChildToRichtext);
+
+ jint ret =
+ env->CallIntMethod(obj,
+ method_id,
+ instanceId,
+ nodeType,
+ ref,
+ parentRef,
+ richtextRef,
+ styles,
+ attrs);
+ base::android::CheckException(env);
+ return ret;
}
-static intptr_t g_WXBridge_callUpdateRichtextStyle = 0;
-static jint Java_WXBridge_callUpdateRichtextStyle(JNIEnv* env, jobject obj, jstring instanceId,
- jstring ref,
- jobject styles,
- jstring parentRef,
- jstring richtextRef) {
- /* Must call RegisterNativesImpl() */
- //CHECK_CLAZZ(env, obj,
- // WXBridge_clazz(env), 0);
- jmethodID method_id =
- base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callUpdateRichtextStyle",
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/util/HashMap;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- ")"
- "I",
- &g_WXBridge_callUpdateRichtextStyle);
-
- jint ret =
- env->CallIntMethod(obj,
- method_id, instanceId, ref, styles, parentRef, richtextRef);
- base::android::CheckException(env);
- return ret;
+static intptr_t g_WXBridge_callRemoveChildFromRichtext = 0;
+static jint Java_WXBridge_callRemoveChildFromRichtext(JNIEnv *env, jobject obj, jstring instanceId,
+ jstring ref,
+ jstring parentRef,
+ jstring richtextRef) {
+ /* Must call RegisterNativesImpl() */
+ //CHECK_CLAZZ(env, obj,
+ // WXBridge_clazz(env), 0);
+ jmethodID method_id =
+ base::android::GetMethod(
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callRemoveChildFromRichtext",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callRemoveChildFromRichtext);
+
+ jint ret =
+ env->CallIntMethod(obj,
+ method_id, instanceId, ref, parentRef, richtextRef);
+ base::android::CheckException(env);
+ return ret;
}
-static intptr_t g_WXBridge_callUpdateRichtextChildAttr = 0;
-static jint Java_WXBridge_callUpdateRichtextChildAttr(JNIEnv* env, jobject obj, jstring instanceId,
+static intptr_t g_WXBridge_callUpdateRichtextStyle = 0;
+static jint Java_WXBridge_callUpdateRichtextStyle(JNIEnv *env, jobject obj, jstring instanceId,
jstring ref,
- jobject attrs,
+ jobject styles,
jstring parentRef,
jstring richtextRef) {
- /* Must call RegisterNativesImpl() */
- //CHECK_CLAZZ(env, obj,
- // WXBridge_clazz(env), 0);
- jmethodID method_id =
- base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callUpdateRichtextChildAttr",
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/util/HashMap;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- ")"
- "I",
- &g_WXBridge_callUpdateRichtextChildAttr);
-
- jint ret =
- env->CallIntMethod(obj,
- method_id, instanceId, ref, attrs, parentRef, richtextRef);
- base::android::CheckException(env);
- return ret;
+ /* Must call RegisterNativesImpl() */
+ //CHECK_CLAZZ(env, obj,
+ // WXBridge_clazz(env), 0);
+ jmethodID method_id =
+ base::android::GetMethod(
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callUpdateRichtextStyle",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/util/HashMap;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callUpdateRichtextStyle);
+
+ jint ret =
+ env->CallIntMethod(obj,
+ method_id, instanceId, ref, styles, parentRef, richtextRef);
+ base::android::CheckException(env);
+ return ret;
+}
+
+static intptr_t g_WXBridge_callUpdateRichtextChildAttr = 0;
+static jint Java_WXBridge_callUpdateRichtextChildAttr(JNIEnv *env, jobject obj, jstring instanceId,
+ jstring ref,
+ jobject attrs,
+ jstring parentRef,
+ jstring richtextRef) {
+ /* Must call RegisterNativesImpl() */
+ //CHECK_CLAZZ(env, obj,
+ // WXBridge_clazz(env), 0);
+ jmethodID method_id =
+ base::android::GetMethod(
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callUpdateRichtextChildAttr",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/util/HashMap;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callUpdateRichtextChildAttr);
+
+ jint ret =
+ env->CallIntMethod(obj,
+ method_id, instanceId, ref, attrs, parentRef, richtextRef);
+ base::android::CheckException(env);
+ return ret;
}
static intptr_t g_WXBridge_callLayout = 0;
-static jint Java_WXBridge_callLayout(JNIEnv* env, jobject obj, jstring
- instanceId,
- jstring ref,
- int top,
- int bottom,
- int left,
- int right,
- int height,
- int width,
- bool isRTL,
- int index) {
+static jint Java_WXBridge_callLayout(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jstring ref,
+ int top,
+ int bottom,
+ int left,
+ int right,
+ int height,
+ int width,
+ bool isRTL,
+ int index) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callLayout",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"I"
-"I"
-"I"
-"I"
-"I"
-"I"
-"Z"
-"I"
-")"
-"I",
- &g_WXBridge_callLayout);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callLayout",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "I"
+ "I"
+ "I"
+ "I"
+ "I"
+ "I"
+ "Z"
+ "I"
+ ")"
+ "I",
+ &g_WXBridge_callLayout);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref, int(top), int(bottom), int(left),
- int(right), int(height), int(width), isRTL, int(index));
+ method_id, instanceId, ref, int(top), int(bottom), int(left),
+ int(right), int(height), int(width), isRTL, int(index));
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callCreateFinish = 0;
-static jint Java_WXBridge_callCreateFinish(JNIEnv* env, jobject obj, jstring
- instanceId) {
+static jint Java_WXBridge_callCreateFinish(JNIEnv *env, jobject obj, jstring
+instanceId) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callCreateFinish",
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callCreateFinish",
-"("
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callCreateFinish);
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callCreateFinish);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId);
+ method_id, instanceId);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callRenderSuccess = 0;
-static jint Java_WXBridge_callRenderSuccess(JNIEnv* env, jobject obj, jstring
- instanceId) {
+static jint Java_WXBridge_callRenderSuccess(JNIEnv *env, jobject obj, jstring
+instanceId) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callRenderSuccess",
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callRenderSuccess",
-"("
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callRenderSuccess);
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callRenderSuccess);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId);
+ method_id, instanceId);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callAppendTreeCreateFinish = 0;
-static jint Java_WXBridge_callAppendTreeCreateFinish(JNIEnv* env, jobject obj,
- jstring instanceId,
- jstring ref) {
+static jint Java_WXBridge_callAppendTreeCreateFinish(JNIEnv *env, jobject obj,
+ jstring instanceId,
+ jstring ref) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callAppendTreeCreateFinish",
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callAppendTreeCreateFinish",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"I",
- &g_WXBridge_callAppendTreeCreateFinish);
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "I",
+ &g_WXBridge_callAppendTreeCreateFinish);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref);
+ method_id, instanceId, ref);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_callHasTransitionPros = 0;
-static jint Java_WXBridge_callHasTransitionPros(JNIEnv* env, jobject obj,
- jstring instanceId,
- jstring ref,
- jobject styles) {
+static jint Java_WXBridge_callHasTransitionPros(JNIEnv *env, jobject obj,
+ jstring instanceId,
+ jstring ref,
+ jobject styles) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), 0);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "callHasTransitionPros",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/util/HashMap;"
-")"
-"I",
- &g_WXBridge_callHasTransitionPros);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "callHasTransitionPros",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/util/HashMap;"
+ ")"
+ "I",
+ &g_WXBridge_callHasTransitionPros);
jint ret =
env->CallIntMethod(obj,
- method_id, instanceId, ref, styles);
+ method_id, instanceId, ref, styles);
base::android::CheckException(env);
return ret;
}
static intptr_t g_WXBridge_getMeasurementFunc = 0;
static base::android::ScopedLocalJavaRef<jobject>
- Java_WXBridge_getMeasurementFunc(JNIEnv* env, jobject obj, jstring
- instanceId,
- jlong renderObjectPtr) {
+Java_WXBridge_getMeasurementFunc(JNIEnv *env, jobject obj, jstring
+instanceId,
+ jlong renderObjectPtr) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env), NULL);
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "getMeasurementFunc",
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "getMeasurementFunc",
-"("
-"Ljava/lang/String;"
-"J"
-")"
-"Lcom/taobao/weex/layout/ContentBoxMeasurement;",
- &g_WXBridge_getMeasurementFunc);
+ "("
+ "Ljava/lang/String;"
+ "J"
+ ")"
+ "Lcom/taobao/weex/layout/ContentBoxMeasurement;",
+ &g_WXBridge_getMeasurementFunc);
jobject ret =
env->CallObjectMethod(obj,
- method_id, instanceId, renderObjectPtr);
+ method_id, instanceId, renderObjectPtr);
base::android::CheckException(env);
return base::android::ScopedLocalJavaRef<jobject>(env, ret);
}
static intptr_t g_WXBridge_reportNativeInitStatus = 0;
-static void Java_WXBridge_reportNativeInitStatus(JNIEnv* env, jobject obj,
- jstring statusCode,
- jstring errorMsg) {
+static void Java_WXBridge_reportNativeInitStatus(JNIEnv *env, jobject obj,
+ jstring statusCode,
+ jstring errorMsg) {
/* Must call RegisterNativesImpl() */
//CHECK_CLAZZ(env, obj,
// WXBridge_clazz(env));
jmethodID method_id =
base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "reportNativeInitStatus",
-
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"V",
- &g_WXBridge_reportNativeInitStatus);
-
- env->CallVoidMethod(obj,
- method_id, statusCode, errorMsg);
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "reportNativeInitStatus",
+
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V",
+ &g_WXBridge_reportNativeInitStatus);
+
+ env->CallVoidMethod(obj,
+ method_id, statusCode, errorMsg);
base::android::CheckException(env);
}
static intptr_t g_WXBridge_onNativePerformanceDataUpdate = 0;
-static void Java_WXBridge_onNativePerformanceDataUpdate(JNIEnv* env, jobject obj,
+static void Java_WXBridge_onNativePerformanceDataUpdate(JNIEnv *env, jobject obj,
jstring id,
jobject data) {
- /* Must call RegisterNativesImpl() */
- //CHECK_CLAZZ(env, obj,
- // WXBridge_clazz(env));
- jmethodID method_id =
- base::android::GetMethod(
- env, WXBridge_clazz(env),
- base::android::INSTANCE_METHOD,
- "onNativePerformanceDataUpdate",
- "("
- "Ljava/lang/String;"
- "Ljava/util/Map;"
- ")"
- "V",
- &g_WXBridge_onNativePerformanceDataUpdate);
-
- env->CallVoidMethod(obj,
- method_id, id, data);
- base::android::CheckException(env);
+ /* Must call RegisterNativesImpl() */
+ //CHECK_CLAZZ(env, obj,
+ // WXBridge_clazz(env));
+ jmethodID method_id =
+ base::android::GetMethod(
+ env, WXBridge_clazz(env),
+ base::android::INSTANCE_METHOD,
+ "onNativePerformanceDataUpdate",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/util/Map;"
+ ")"
+ "V",
+ &g_WXBridge_onNativePerformanceDataUpdate);
+
+ env->CallVoidMethod(obj,
+ method_id, id, data);
+ base::android::CheckException(env);
}
// Step 3: RegisterNatives.
static const JNINativeMethod kMethodsWXBridge[] = {
- { "nativeInitFrameworkEnv",
-"("
-"Ljava/lang/String;"
-"Lcom/taobao/weex/bridge/WXParams;"
-"Ljava/lang/String;"
-"Z"
-")"
-"I", reinterpret_cast<void*>(InitFrameworkEnv) },
- { "nativeInitFramework",
-"("
-"Ljava/lang/String;"
-"Lcom/taobao/weex/bridge/WXParams;"
-")"
-"I", reinterpret_cast<void*>(InitFramework) },
- { "nativeRefreshInstance",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"[Lcom/taobao/weex/bridge/WXJSObject;"
-")"
-"V", reinterpret_cast<void*>(RefreshInstance) },
- { "nativeExecJS",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"[Lcom/taobao/weex/bridge/WXJSObject;"
-")"
-"I", reinterpret_cast<void*>(ExecJS) },
- { "nativeExecJSService",
-"("
-"Ljava/lang/String;"
-")"
-"I", reinterpret_cast<void*>(ExecJSService) },
- { "nativeExecJSWithCallback",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"[Lcom/taobao/weex/bridge/WXJSObject;"
-"J"
-")"
-"V", reinterpret_cast<void*>(ExecJSWithCallback) },
- { "nativeCreateInstanceContext",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"[Lcom/taobao/weex/bridge/WXJSObject;"
-")"
-"I", reinterpret_cast<void*>(CreateInstanceContext) },
- { "nativeDestoryInstance",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"[Lcom/taobao/weex/bridge/WXJSObject;"
-")"
-"I", reinterpret_cast<void*>(DestoryInstance) },
- { "nativeExecJSOnInstance",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"I"
-")"
-"Ljava/lang/String;", reinterpret_cast<void*>(ExecJSOnInstance) },
- { "nativeOnInteractionTimeUpdate",
-"("
-"Ljava/lang/String;"
-")"
-"V", reinterpret_cast<void*>(onInteractionTimeUpdate) },
-{ "nativeFireEventOnDataRenderNode",
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- ")"
- "V", reinterpret_cast<void*>(FireEventOnDataRenderNode) },
-{ "nativeInvokeCallbackOnDataRender",
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Z"
- ")"
- "V", reinterpret_cast<void*>(InvokeCallbackOnDataRender) },
-{ "nativeRegisterModuleOnDataRenderNode",
- "("
- "Ljava/lang/String;"
- ")"
- "V", reinterpret_cast<void*>(RegisterModuleOnDataRenderNode) },
-{ "nativeRegisterComponentOnDataRenderNode",
- "("
- "Ljava/lang/String;"
- ")"
- "V", reinterpret_cast<void*>(RegisterComponentOnDataRenderNode) },
- { "nativeTakeHeapSnapshot",
-"("
-"Ljava/lang/String;"
-")"
-"V", reinterpret_cast<void*>(TakeHeapSnapshot) },
- { "nativeBindMeasurementToRenderObject",
-"("
-"J"
-")"
-"V", reinterpret_cast<void*>(BindMeasurementToRenderObject) },
- { "nativeSetRenderContainerWrapContent",
-"("
-"Z"
-"Ljava/lang/String;"
-")"
-"V", reinterpret_cast<void*>(SetRenderContainerWrapContent) },
- { "nativeGetFirstScreenRenderTime",
-"("
-"Ljava/lang/String;"
-")"
-"[J", reinterpret_cast<void*>(GetFirstScreenRenderTime) },
- { "nativeGetRenderFinishTime",
-"("
-"Ljava/lang/String;"
-")"
-"[J", reinterpret_cast<void*>(GetRenderFinishTime) },
- { "nativeSetDefaultHeightAndWidthIntoRootDom",
-"("
-"Ljava/lang/String;"
-"F"
-"F"
-"Z"
-"Z"
-")"
-"V", reinterpret_cast<void*>(SetDefaultHeightAndWidthIntoRootDom) },
- { "nativeOnInstanceClose",
-"("
-"Ljava/lang/String;"
-")"
-"V", reinterpret_cast<void*>(OnInstanceClose) },
- { "nativeForceLayout",
-"("
-"Ljava/lang/String;"
-")"
-"V", reinterpret_cast<void*>(ForceLayout) },
- { "nativeNotifyLayout",
-"("
-"Ljava/lang/String;"
-")"
-"Z", reinterpret_cast<void*>(NotifyLayout) },
- { "nativeSetStyleWidth",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"F"
-")"
-"V", reinterpret_cast<void*>(SetStyleWidth) },
- { "nativeSetStyleHeight",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"F"
-")"
-"V", reinterpret_cast<void*>(SetStyleHeight) },
- { "nativeSetMargin",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"I"
-"F"
-")"
-"V", reinterpret_cast<void*>(SetMargin) },
- { "nativeSetPadding",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"I"
-"F"
-")"
-"V", reinterpret_cast<void*>(SetPadding) },
- { "nativeSetPosition",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"I"
-"F"
-")"
-"V", reinterpret_cast<void*>(SetPosition) },
- { "nativeMarkDirty",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Z"
-")"
-"V", reinterpret_cast<void*>(MarkDirty) },
- { "nativeSetDeviceDisplay",
- "("
- "Ljava/lang/String;"
- "F"
- "F"
- "F"
- ")"
- "V", reinterpret_cast<void*>(SetDeviceDisplay) },
- { "nativeRegisterCoreEnv",
-"("
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"V", reinterpret_cast<void*>(RegisterCoreEnv) },
- { "nativeResetWXBridge",
-"("
-"Ljava/lang/Object;"
-"Ljava/lang/String;"
-")"
-"V", reinterpret_cast<void*>(ResetWXBridge) },
-{ "nativeSetPageArgument",
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- ")"
- "V", reinterpret_cast<void*>(SetPageArgument) },
- { "nativeUpdateInitFrameworkParams",
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- ")"
- "V", reinterpret_cast<void*>(UpdateInitFrameworkParams) },
- { "nativeUpdateGlobalConfig",
-"("
-"Ljava/lang/String;"
-")"
-"V", reinterpret_cast<void*>(UpdateGlobalConfig) },
- { "nativeSetInstanceRenderType",
- "("
- "Ljava/lang/String;"
- "Ljava/lang/String;"
- ")"
- "V", reinterpret_cast<void*>(SetInstanceRenderType) },
- { "nativeRemoveInstanceRenderType",
- "("
- "Ljava/lang/String;"
- ")"
- "V", reinterpret_cast<void*>(RemoveInstanceRenderType) },
- { "nativeSetViewPortWidth",
- "("
- "Ljava/lang/String;"
- "F"
- ")"
- "V", reinterpret_cast<void*>(SetViewPortWidth)},
+ {"nativeInitFrameworkEnv",
+ "("
+ "Ljava/lang/String;"
+ "Lcom/taobao/weex/bridge/WXParams;"
+ "Ljava/lang/String;"
+ "Z"
+ ")"
+ "I", reinterpret_cast<void *>(InitFrameworkEnv)},
+ {"nativeInitFramework",
+ "("
+ "Ljava/lang/String;"
+ "Lcom/taobao/weex/bridge/WXParams;"
+ ")"
+ "I", reinterpret_cast<void *>(InitFramework)},
+ {"nativeRefreshInstance",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "[Lcom/taobao/weex/bridge/WXJSObject;"
+ ")"
+ "V", reinterpret_cast<void *>(RefreshInstance)},
+ {"nativeExecJS",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "[Lcom/taobao/weex/bridge/WXJSObject;"
+ ")"
+ "I", reinterpret_cast<void *>(ExecJS)},
+ {"nativeExecJSService",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "I", reinterpret_cast<void *>(ExecJSService)},
+ {"nativeExecJSWithCallback",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "[Lcom/taobao/weex/bridge/WXJSObject;"
+ "J"
+ ")"
+ "V", reinterpret_cast<void *>(ExecJSWithCallback)},
+ {"nativeCreateInstanceContext",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "[Lcom/taobao/weex/bridge/WXJSObject;"
+ ")"
+ "I", reinterpret_cast<void *>(CreateInstanceContext)},
+ {"nativeDestoryInstance",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "[Lcom/taobao/weex/bridge/WXJSObject;"
+ ")"
+ "I", reinterpret_cast<void *>(DestoryInstance)},
+ {"nativeExecJSOnInstance",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "I"
+ ")"
+ "Ljava/lang/String;", reinterpret_cast<void *>(ExecJSOnInstance)},
+ {"nativeOnInteractionTimeUpdate",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(onInteractionTimeUpdate)},
+ {"nativeFireEventOnDataRenderNode",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(FireEventOnDataRenderNode)},
+ {"nativeInvokeCallbackOnDataRender",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Z"
+ ")"
+ "V", reinterpret_cast<void *>(InvokeCallbackOnDataRender)},
+ {"nativeRegisterModuleOnDataRenderNode",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(RegisterModuleOnDataRenderNode)},
+ {"nativeRegisterComponentOnDataRenderNode",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(RegisterComponentOnDataRenderNode)},
+ {"nativeTakeHeapSnapshot",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(TakeHeapSnapshot)},
+ {"nativeBindMeasurementToRenderObject",
+ "("
+ "J"
+ ")"
+ "V", reinterpret_cast<void *>(BindMeasurementToRenderObject)},
+ {"nativeSetRenderContainerWrapContent",
+ "("
+ "Z"
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(SetRenderContainerWrapContent)},
+ {"nativeGetFirstScreenRenderTime",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "[J", reinterpret_cast<void *>(GetFirstScreenRenderTime)},
+ {"nativeGetRenderFinishTime",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "[J", reinterpret_cast<void *>(GetRenderFinishTime)},
+ {"nativeSetDefaultHeightAndWidthIntoRootDom",
+ "("
+ "Ljava/lang/String;"
+ "F"
+ "F"
+ "Z"
+ "Z"
+ ")"
+ "V", reinterpret_cast<void *>(SetDefaultHeightAndWidthIntoRootDom)},
+ {"nativeOnInstanceClose",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(OnInstanceClose)},
+ {"nativeForceLayout",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(ForceLayout)},
+ {"nativeNotifyLayout",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "Z", reinterpret_cast<void *>(NotifyLayout)},
+ {"nativeSetStyleWidth",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "F"
+ ")"
+ "V", reinterpret_cast<void *>(SetStyleWidth)},
+ {"nativeSetStyleHeight",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "F"
+ ")"
+ "V", reinterpret_cast<void *>(SetStyleHeight)},
+ {"nativeSetMargin",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "I"
+ "F"
+ ")"
+ "V", reinterpret_cast<void *>(SetMargin)},
+ {"nativeSetPadding",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "I"
+ "F"
+ ")"
+ "V", reinterpret_cast<void *>(SetPadding)},
+ {"nativeSetPosition",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "I"
+ "F"
+ ")"
+ "V", reinterpret_cast<void *>(SetPosition)},
+ {"nativeMarkDirty",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Z"
+ ")"
+ "V", reinterpret_cast<void *>(MarkDirty)},
+ {"nativeSetDeviceDisplay",
+ "("
+ "Ljava/lang/String;"
+ "F"
+ "F"
+ "F"
+ ")"
+ "V", reinterpret_cast<void *>(SetDeviceDisplay)},
+ {"nativeRegisterCoreEnv",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(RegisterCoreEnv)},
+ {"nativeResetWXBridge",
+ "("
+ "Ljava/lang/Object;"
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(ResetWXBridge)},
+ {"nativeSetPageArgument",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(SetPageArgument)},
+ {"nativeUpdateInitFrameworkParams",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(UpdateInitFrameworkParams)},
+ {"nativeUpdateGlobalConfig",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(UpdateGlobalConfig)},
+ {"nativeSetInstanceRenderType",
+ "("
+ "Ljava/lang/String;"
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(SetInstanceRenderType)},
+ {"nativeRemoveInstanceRenderType",
+ "("
+ "Ljava/lang/String;"
+ ")"
+ "V", reinterpret_cast<void *>(RemoveInstanceRenderType)},
+ {"nativeSetViewPortWidth",
+ "("
+ "Ljava/lang/String;"
+ "F"
+ ")"
+ "V", reinterpret_cast<void *>(SetViewPortWidth)},
+ {"nativeSetLogType",
+ "("
+ "F"
+ "F"
+ ")"
+ "V", reinterpret_cast<void *>(SetLogType)},
};
-static bool RegisterNativesImpl(JNIEnv* env) {
+static bool RegisterNativesImpl(JNIEnv *env) {
g_WXBridge_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
base::android::GetClass(env, kWXBridgeClassPath).Get()));
const int kMethodsWXBridgeSize =
- sizeof(kMethodsWXBridge)/sizeof(kMethodsWXBridge[0]);
+ sizeof(kMethodsWXBridge) / sizeof(kMethodsWXBridge[0]);
if (env->RegisterNatives(WXBridge_clazz(env),
kMethodsWXBridge,
@@ -1393,35 +1411,35 @@ static bool RegisterNativesImpl(JNIEnv* env) {
return true;
}
-static void Java_WXBridge_reset_clazz(JNIEnv* env, const char* className) {
- LOGE("Java_WXBridge_reset_clazz class Name is %s", className);
- g_WXBridge_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
- base::android::GetClass(env, className).Get()));
- g_WXBridge_callNative = 0;
- g_WXBridge_reportJSException = 0;
- g_WXBridge_callNativeModule = 0;
- g_WXBridge_callNativeComponent = 0;
- g_WXBridge_setTimeoutNative = 0;
- g_WXBridge_setJSFrmVersion = 0;
- g_WXBridge_callUpdateFinish = 0;
- g_WXBridge_callRefreshFinish = 0;
- g_WXBridge_reportServerCrash = 0;
- g_WXBridge_callCreateBody = 0;
- g_WXBridge_callAddElement = 0;
- g_WXBridge_callRemoveElement = 0;
- g_WXBridge_callMoveElement = 0;
- g_WXBridge_callAddEvent = 0;
- g_WXBridge_callRemoveEvent = 0;
- g_WXBridge_callUpdateStyle = 0;
- g_WXBridge_callUpdateAttrs = 0;
- g_WXBridge_callLayout = 0;
- g_WXBridge_callCreateFinish = 0;
- g_WXBridge_callRenderSuccess = 0;
- g_WXBridge_callAppendTreeCreateFinish = 0;
- g_WXBridge_callHasTransitionPros = 0;
- g_WXBridge_getMeasurementFunc = 0;
- g_WXBridge_reportNativeInitStatus = 0;
- g_WXBridge_onNativePerformanceDataUpdate = 0;
+static void Java_WXBridge_reset_clazz(JNIEnv *env, const char *className) {
+ LOGE("Java_WXBridge_reset_clazz class Name is %s", className);
+ g_WXBridge_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetClass(env, className).Get()));
+ g_WXBridge_callNative = 0;
+ g_WXBridge_reportJSException = 0;
+ g_WXBridge_callNativeModule = 0;
+ g_WXBridge_callNativeComponent = 0;
+ g_WXBridge_setTimeoutNative = 0;
+ g_WXBridge_setJSFrmVersion = 0;
+ g_WXBridge_callUpdateFinish = 0;
+ g_WXBridge_callRefreshFinish = 0;
+ g_WXBridge_reportServerCrash = 0;
+ g_WXBridge_callCreateBody = 0;
+ g_WXBridge_callAddElement = 0;
+ g_WXBridge_callRemoveElement = 0;
+ g_WXBridge_callMoveElement = 0;
+ g_WXBridge_callAddEvent = 0;
+ g_WXBridge_callRemoveEvent = 0;
+ g_WXBridge_callUpdateStyle = 0;
+ g_WXBridge_callUpdateAttrs = 0;
+ g_WXBridge_callLayout = 0;
+ g_WXBridge_callCreateFinish = 0;
+ g_WXBridge_callRenderSuccess = 0;
+ g_WXBridge_callAppendTreeCreateFinish = 0;
+ g_WXBridge_callHasTransitionPros = 0;
+ g_WXBridge_getMeasurementFunc = 0;
+ g_WXBridge_reportNativeInitStatus = 0;
+ g_WXBridge_onNativePerformanceDataUpdate = 0;
}
#endif // com_taobao_weex_bridge_WXBridge_JNI
diff --git a/weex_core/Source/base/log_defines.cpp b/weex_core/Source/base/log_defines.cpp
index 6391736..289c768 100644
--- a/weex_core/Source/base/log_defines.cpp
+++ b/weex_core/Source/base/log_defines.cpp
@@ -23,126 +23,130 @@
#ifdef __ANDROID__
#include <android/log.h>
+#include "base/log_defines.h"
#endif
#include "core/manager/weex_core_manager.h"
namespace WeexCore {
- bool DebugMode = false;
+struct LogFlattenHelper {
+ LogFlattenHelper() : mLargeBuf() {}
+ LogFlattenHelper(const char *fmt, va_list args) : LogFlattenHelper() {
+ set(fmt, args);
+ }
+ ~LogFlattenHelper() {
+ if (mLargeBuf)
+ free(mLargeBuf);
+ }
- struct LogFlattenHelper {
- LogFlattenHelper() : mLargeBuf() {}
- LogFlattenHelper(const char *fmt, va_list args) : LogFlattenHelper() {
- set(fmt, args);
- }
- ~LogFlattenHelper() {
- if (mLargeBuf)
- free(mLargeBuf);
+ const char *str() const { return mLargeBuf ? mLargeBuf : mSmallBuf.data(); }
+ LogFlattenHelper &set(const char *fmt, va_list args);
+
+ private:
+ LogFlattenHelper(const LogFlattenHelper &) = delete;
+ void operator=(const LogFlattenHelper &) = delete;
+
+ std::array<char, 4096> mSmallBuf;
+ char *mLargeBuf;
+};
+
+LogFlattenHelper &LogFlattenHelper::set(const char *fmt, va_list args) {
+ va_list argsCopy;
+ va_copy(argsCopy, args);
+ int len = 1 + vsnprintf(nullptr, 0, fmt, argsCopy);
+ va_end(argsCopy);
+ if (len <= 1) {
+ mSmallBuf[0] = 0;
+ return *this;
+ }
+ if (len > (int) mSmallBuf.size())
+ mLargeBuf = static_cast<char *>(malloc(len));
+ int rv;
+ if (mLargeBuf) {
+ rv = vsnprintf(mLargeBuf, len, fmt, args);
+ } else {
+ rv = vsnprintf(mSmallBuf.data(), mSmallBuf.size(), fmt, args);
+ }
+ (void) rv;
+ return *this;
+}
+
+void PrintLog(LogLevel level,
+ const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *fmt,
+ ...) {
+ va_list args;
+ va_start(args, fmt);
+ LogFlattenHelper log(fmt, args);
+ va_end(args);
+
+ bool succeed = weex::base::LogImplement::getLog()->log(level, tag, file, line, log.str());
+ if (!succeed) {
+ // Log to console by default
+#ifdef __ANDROID__
+ bool debugMode = weex::base::LogImplement::getLog()->debugMode();
+ switch (level) {
+ case LogLevel::Error:
+ __android_log_print(ANDROID_LOG_ERROR,
+ tag,
+ "%s:%lu, %s",
+ file,
+ line,
+ log.str());
+ break;
+ case LogLevel::Warn:
+ if (debugMode) {
+ __android_log_print(ANDROID_LOG_WARN,
+ tag,
+ "%s:%lu, %s",
+ file,
+ line,
+ log.str());
}
-
- const char *str() const { return mLargeBuf ? mLargeBuf : mSmallBuf.data(); }
- LogFlattenHelper &set(const char *fmt, va_list args);
-
- private:
- LogFlattenHelper(const LogFlattenHelper &) = delete;
- void operator=(const LogFlattenHelper &) = delete;
-
- std::array<char, 4096> mSmallBuf;
- char *mLargeBuf;
- };
-
- LogFlattenHelper &LogFlattenHelper::set(const char *fmt, va_list args) {
- va_list argsCopy;
- va_copy(argsCopy, args);
- int len = 1 + vsnprintf(nullptr, 0, fmt, argsCopy);
- va_end(argsCopy);
- if (len <= 1) {
- mSmallBuf[0] = 0;
- return *this;
+ break;
+ case LogLevel::Info:
+ if (debugMode) {
+ __android_log_print(ANDROID_LOG_INFO,
+ tag,
+ "%s:%lu, %s",
+ file,
+ line,
+ log.str());
}
- if (len > (int)mSmallBuf.size())
- mLargeBuf = static_cast<char *>(malloc(len));
- int rv;
- if (mLargeBuf) {
- rv = vsnprintf(mLargeBuf, len, fmt, args);
- } else {
- rv = vsnprintf(mSmallBuf.data(), mSmallBuf.size(), fmt, args);
+ break;
+ case LogLevel::Debug:
+ if (debugMode) {
+ __android_log_print(ANDROID_LOG_DEBUG,
+ tag,
+ "%s:%lu, %s",
+ file,
+ line,
+ log.str());
}
- (void)rv;
- return *this;
+ break;
+ default:break;
}
-
- void PrintLog(LogLevel level, const char* tag, const char* file, unsigned long line, const char* fmt, ...) {
- va_list args;
- va_start(args, fmt);
- LogFlattenHelper log(fmt, args);
- va_end(args);
-
- LogBridge* logBridge = WeexCore::WeexCoreManager::Instance()->get_log_bridge();
- if (logBridge) {
- // Log to bridge
- logBridge->log(level, tag, file, line, log.str());
- }
- else {
- // Log to console by default
-#ifdef __ANDROID__
- if(DebugMode) {
- switch (level) {
- case LogLevel::Error:
- __android_log_print(ANDROID_LOG_ERROR,
- tag,
- "%s:%lu, %s",
- file,
- line,
- log.str());
- break;
- case LogLevel::Warn:
- __android_log_print(ANDROID_LOG_WARN,
- tag,
- "%s:%lu, %s",
- file,
- line,
- log.str());
- break;
- case LogLevel::Info:
- __android_log_print(ANDROID_LOG_INFO,
- tag,
- "%s:%lu, %s",
- file,
- line,
- log.str());
- break;
- case LogLevel::Debug:
- __android_log_print(ANDROID_LOG_DEBUG,
- tag,
- "%s:%lu, %s",
- file,
- line,
- log.str());
- break;
- default:
- break;
- }
- }
#elif __APPLE__
- switch (level) {
- case LogLevel::Error:
- printf("<%s:Error|%s:%lu> %s\n", tag, file, line, log.str());
- break;
- case LogLevel::Warn:
- printf("<%s:Warn|%s:%lu> %s\n", tag, file, line, log.str());
- break;
- case LogLevel::Info:
- printf("<%s:Info|%s:%lu> %s\n", tag, file, line, log.str());
- break;
- case LogLevel::Debug:
- printf("<%s:Debug|%s:%lu> %s\n", tag, file, line, log.str());
- break;
- default:
- break;
- }
-#endif
- }
+ switch (level) {
+ case LogLevel::Error:
+ printf("<%s:Error|%s:%lu> %s\n", tag, file, line, log.str());
+ break;
+ case LogLevel::Warn:
+ printf("<%s:Warn|%s:%lu> %s\n", tag, file, line, log.str());
+ break;
+ case LogLevel::Info:
+ printf("<%s:Info|%s:%lu> %s\n", tag, file, line, log.str());
+ break;
+ case LogLevel::Debug:
+ printf("<%s:Debug|%s:%lu> %s\n", tag, file, line, log.str());
+ break;
+ default:
+ break;
}
-
+#endif
+ }
+}
+
}
diff --git a/weex_core/Source/base/log_defines.h b/weex_core/Source/base/log_defines.h
index 0776494..0bf840c 100644
--- a/weex_core/Source/base/log_defines.h
+++ b/weex_core/Source/base/log_defines.h
@@ -20,19 +20,156 @@
#ifndef LogDefines_h
#define LogDefines_h
#include <cstring>
+#include <string>
+#ifdef __ANDROID__
+#include <android/log.h>
+#endif
+#include <mutex>
namespace WeexCore {
-
- enum class LogLevel : int {
- Debug,
- Info,
- Warn,
- Error
- };
-
- void PrintLog(LogLevel level, const char* tag, const char* file, unsigned long line, const char* format, ...);
-
- extern bool DebugMode;
+
+enum class LogLevel : int {
+ All = 0,
+ Verbose,
+ Debug,
+ Info,
+ Warn,
+ Error,
+ Tlog,
+ Wtf,
+ Off,
+ Performance,
+};
+
+void PrintLog(LogLevel level,
+ const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *format,
+ ...);
+}
+
+namespace weex {
+namespace base {
+class LogBase {
+ public:
+ virtual bool log(WeexCore::LogLevel level,
+ const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) = 0;
+
+ LogBase() : printLevel(WeexCore::LogLevel::Error), m_debugMode(false), m_perfMode(false) {};
+
+ inline void setDebugMode(bool isDebug) {
+ if (isDebug) {
+ printLevel = WeexCore::LogLevel::Debug;
+ } else {
+ printLevel = WeexCore::LogLevel::Error;
+ }
+ m_debugMode = isDebug;
+ }
+
+ inline bool is_debug_mode() { return m_debugMode; }
+
+ inline void setPerfMode(bool isPerf) {
+ m_perfMode = isPerf;
+ }
+
+ inline bool is_perf_mode() { return m_perfMode; }
+
+ inline void setPrintLevel(WeexCore::LogLevel l) {
+ printLevel = l;
+ }
+
+ inline WeexCore::LogLevel print_level() { return printLevel; }
+
+ inline bool shouldPrint(WeexCore::LogLevel l) {
+ if (m_perfMode && l == WeexCore::LogLevel::Performance) {
+ return true;
+ }
+
+ return l != WeexCore::LogLevel::Performance && l >= printLevel;
+ }
+
+ private:
+ WeexCore::LogLevel printLevel = WeexCore::LogLevel::Error;
+ bool m_perfMode = false;
+ bool m_debugMode = false;
+};
+
+class LogImplement {
+ public:
+ static LogImplement *getLog() {
+ static weex::base::LogImplement *mySelf;
+ static std::once_flag once_flag;
+ std::call_once(once_flag, []() { mySelf = new LogImplement(); });
+ return mySelf;
+ }
+
+ void setLogImplement(weex::base::LogBase *logVirtual) {
+ m_log = logVirtual;
+ }
+
+ inline void setPrintLevel(WeexCore::LogLevel level) {
+ if (m_log) {
+ m_log->setPrintLevel(level);
+ }
+ }
+
+ inline void setDebugMode(bool debugFlag) {
+ if (m_log) {
+ m_log->setDebugMode(debugFlag);
+ }
+ }
+
+ inline bool debugMode() {
+ if (m_log)
+ return m_log->is_debug_mode();
+
+ return false;
+ }
+
+ inline bool perfMode() {
+ if (m_log)
+ return m_log->is_perf_mode();
+
+ return false;
+ }
+
+ inline void setPerfMode(bool perfFlag) {
+ if (m_log)
+ m_log->setPerfMode(perfFlag);
+ }
+
+ inline bool can_print_log(WeexCore::LogLevel l) {
+ if (m_log)
+ return m_log->shouldPrint(l);
+
+ return false;
+ }
+
+ bool log(WeexCore::LogLevel level,
+ const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) {
+ if (m_log == nullptr) {
+ return false;
+ }
+
+ if (!m_log->shouldPrint(level)) {
+ return true;
+ }
+
+ return m_log->log(level, tag, file, line, log);
+ }
+
+ private:
+ weex::base::LogBase *m_log;
+ LogImplement() : m_log(nullptr) {}
+};
+}
}
#if defined(LOGE)
@@ -57,26 +194,39 @@ namespace WeexCore {
#define WEEX_CORE_LOG_TAG "WeexCore"
#define WEEX_CORE_FILENAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
-#define WEEX_CORE_LOG(level, TAG, format, ...) WeexCore::PrintLog((level), TAG, WEEX_CORE_FILENAME, __LINE__, (format), ##__VA_ARGS__)
+#define WEEX_CORE_LOG(level, TAG, format, ...) \
+ do{ \
+ if(weex::base::LogImplement::getLog()->can_print_log((level))) \
+ WeexCore::PrintLog((level), TAG, WEEX_CORE_FILENAME, __LINE__, (format), ##__VA_ARGS__);\
+ }while(0);\
#define LOGE_TAG(TAG, format, ...) WEEX_CORE_LOG(WeexCore::LogLevel::Error, TAG, format, ##__VA_ARGS__)
#define LOGE(format, ...) LOGE_TAG(WEEX_CORE_LOG_TAG, format, ##__VA_ARGS__)
#define LOGW_TAG(TAG, format, ...) WEEX_CORE_LOG(WeexCore::LogLevel::Warn, TAG, format, ##__VA_ARGS__)
+
#define LOGW(format, ...) LOGW_TAG(WEEX_CORE_LOG_TAG, format, ##__VA_ARGS__)
#define LOGI_TAG(TAG, format, ...) WEEX_CORE_LOG(WeexCore::LogLevel::Info, TAG, format, ##__VA_ARGS__)
+
#define LOGI(format, ...) LOGI_TAG(WEEX_CORE_LOG_TAG, format, ##__VA_ARGS__)
+#define LOG_Performance(INSTANCE_ID, format, ...) WEEX_CORE_LOG(WeexCore::LogLevel::Performance, INSTANCE_ID, format, ##__VA_ARGS__)
+
+#define LOG_TLOG(TAG, format, ...) WEEX_CORE_LOG(WeexCore::LogLevel::Tlog, TAG, format, ##__VA_ARGS__)
+#ifdef __ANDROID__
+#define LOGE_FOR_DEBUG(TAG, format, ...) __android_log_print(ANDROID_LOG_ERROR,TAG,format,##__VA_ARGS__)
+#endif
+
+
#ifdef DEBUG
+#define LOGD_TAG(TAG, format, ...) WEEX_CORE_LOG(WeexCore::LogLevel::Debug, TAG, format, ##__VA_ARGS__)
-#define LOGD_TAG(TAG, format, ...) WEEX_CORE_LOG(WeexCore::LogLevel::Debug, TAG, format, ##__VA_ARGS__)
-#define LOGD(format, ...) LOGD_TAG(WEEX_CORE_LOG_TAG, format, ##__VA_ARGS__)
+#define LOGD(format, ...) LOGD_TAG(WEEX_CORE_LOG_TAG, format, ##__VA_ARGS__)
#else
-
#define LOGD_TAG(TAG, format, ...) ((void) 0)
-#define LOGD(format, ...) ((void) 0)
+#define LOGD(format, ...) if(weex::base::LogImplement::getLog()->debugMode()) WEEX_CORE_LOG(WeexCore::LogLevel::Debug, TAG, format, ##__VA_ARGS__)
#endif
diff --git a/weex_core/Source/base/time_calculator.cpp b/weex_core/Source/base/time_calculator.cpp
new file mode 100644
index 0000000..c76f091
--- /dev/null
+++ b/weex_core/Source/base/time_calculator.cpp
@@ -0,0 +1,117 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "time_calculator.h"
+#include "log_defines.h"
+namespace weex {
+namespace base {
+void weex::base::TimeCalculator::taskEnd() {
+ if (!turnOn()) {
+ return;
+ }
+
+ LOG_Performance(m_instance_id_.c_str(),
+ "%s taskName is %s : instanceId %s : m_task_id_ %d: taskEnd",
+ m_task_platform_.c_str(),
+ m_task_name_.c_str(),
+ m_instance_id_.c_str(),
+ m_task_id_);
+ this->m_task_end_time_ = getCurrentTime();
+ m_task_end_flag_ = true;
+}
+void weex::base::TimeCalculator::taskStart() {
+
+ if (!turnOn()) {
+ return;
+ }
+
+
+ LOG_Performance(m_instance_id_.c_str(),
+ "timeline %s taskName is %s : instanceId %s : m_task_id_ %d: taskStart",
+ m_task_platform_.c_str(),
+ m_task_name_.c_str(),
+ m_instance_id_.c_str(),
+ m_task_id_);
+ this->m_task_start_time_ = getCurrentTime();
+}
+void weex::base::TimeCalculator::print() {
+ if (!turnOn()) {
+ return;
+ }
+
+ const long long &taskWait = m_task_start_time_ - m_constructor_time_;
+ const long long &taskCost = m_task_end_time_ - m_task_start_time_;
+
+ bool showLog = false;
+
+ if (!args.empty() || taskWait > 100) {
+ showLog = true;
+ } else if (taskCost < 5) {
+ LOG_Performance(m_instance_id_.c_str(),"timeline %s taskName is %s cost less than 5ms", m_task_platform_.c_str(),
+ m_task_name_.c_str());
+ } else {
+ showLog = true;
+ std::string msg = "normal";
+ if (taskCost > 100) {
+ msg = "task cost than 100, ";
+ }
+
+ if (taskWait > 100) {
+ std::string a = "wait to long time than 100ms";
+ msg += a;
+ }
+ }
+
+ if (showLog) {
+ LOG_Performance(m_instance_id_.c_str(),"timeline taskName: %s, result: %s", m_task_name_.c_str(), formatData().c_str());
+ }
+}
+void weex::base::TimeCalculator::transform() {
+ if (!turnOn()) {
+ return;
+ }
+ LOG_Performance(m_instance_id_.c_str(), "%s", formatData().c_str());
+}
+std::string weex::base::TimeCalculator::formatData() {
+ if (!turnOn()) {
+ return "";
+ }
+ char buffer[1024];
+ std::string format =
+ "{\"time\":{\"execTime\":%lld,\"waitTime\":%lld,\"constructor\":%lld,\"destructor\":%lld,\"taskStart\":%lld,\"taskEnd\":%lld},"
+ "\"Info\":{\"platform\":\"%s\",\"taskId\":%d,\"taskInfo\":{\"relateTaskId\":%d, \"args\":\"%s\",},\"taskName\":\"%s\"}}";
+
+ snprintf(buffer, 1024, format.c_str(),
+ m_task_end_time_ - m_task_start_time_,
+ m_task_start_time_ - m_constructor_time_,
+ m_constructor_time_,
+ m_destructor_time_,
+ m_task_start_time_,
+ m_task_end_time_,
+ m_task_platform_.c_str(),
+ m_task_id_,
+ m_relative_task_id_,
+ args.c_str(),
+ m_task_name_.c_str());
+
+ return std::string(buffer);
+}
+} // namespace base
+} // namespace weex
+
+
diff --git a/weex_core/Source/base/time_calculator.h b/weex_core/Source/base/time_calculator.h
index 9831921..f79dc20 100644
--- a/weex_core/Source/base/time_calculator.h
+++ b/weex_core/Source/base/time_calculator.h
@@ -24,9 +24,11 @@
#define WEEX_PROJECT_TIME_CALCULATOR_H
#include <string>
+#include <mutex>
#include "time_point.h"
#include "time_unit.h"
-#include "android/log_utils.h"
+#include "time_utils.h"
+#include "base/log_defines.h"
namespace weex {
namespace base {
@@ -35,20 +37,27 @@ enum TaskPlatform {
JSS_ENGINE
};
+enum Level {
+ HIGH,
+ MEDIUM,
+ LOW,
+};
+
class TimeCalculator {
public:
- TimeCalculator(TaskPlatform taskPlatform, std::string name, std::string id) :
- task_name(name),
- instance_id(id),
- end(TimePoint::Now()),
- start(TimePoint::Now()),
- task_end(TimePoint::Now()),
- task_start(TimePoint::Now()),
- task_id(genTaskId()) {
+ TimeCalculator(TaskPlatform taskPlatform, std::string name, std::string id, Level level = LOW) :
+ m_task_name_(name),
+ m_instance_id_(id),
+ m_destructor_time_(getCurrentTime()),
+ m_constructor_time_(getCurrentTime()),
+ m_task_end_time_(getCurrentTime()),
+ m_task_start_time_(getCurrentTime()),
+ m_task_id_(genTaskId()),
+ m_relative_task_id_(0) {
if (taskPlatform == TaskPlatform::JSS_ENGINE) {
- task_platform = "jsengine";
+ m_task_platform_ = "JSEngine";
} else {
- task_platform = "weexcore";
+ m_task_platform_ = "WeexCore";
}
}
@@ -58,84 +67,51 @@ class TimeCalculator {
}
~TimeCalculator() {
- if (!task_end_flag) {
- task_end = TimePoint::Now();
+ if (!m_task_end_flag_) {
+ m_task_end_time_ = getCurrentTime();
}
- end = TimePoint::Now();
+ m_destructor_time_ = getCurrentTime();
print();
+// transform();
}
- void taskStart() {
-// LOGE(
-// "dyyLog %s taskName is %s : instanceId %s : task_id %d: taskStart",
-// task_platform.c_str(),
-// task_name.c_str(),
-// instance_id.c_str(),
-// task_id);
- this->task_start = TimePoint::Now();
- }
+ void taskStart();
- void taskEnd() {
-// LOGE(
-// "dyyLog %s taskName is %s : instanceId %s : task_id %d: taskEnd",
-// task_platform.c_str(),
-// task_name.c_str(),
-// instance_id.c_str(),
-// task_id);
- this->task_end = TimePoint::Now();
- task_end_flag = true;
- }
+ void taskEnd();
void set_task_name(std::string name) {
- this->task_name = name;
+ this->m_task_name_ = name;
}
- void print() {
- const TimeUnit &allCost = end.ToTimeUnit() - start.ToTimeUnit();
- const TimeUnit &taskWait = task_start.ToTimeUnit() - start.ToTimeUnit();
- const TimeUnit &taskCost = task_end.ToTimeUnit() - task_start.ToTimeUnit();
-
-// int64_t taskCostMS = taskCost.ToMilliseconds();
-// if (taskCostMS < 5) {
-// LOGD("dyyLog %s taskName is %s cost less than 5ms", task_platform.c_str(),
-// task_name.c_str());
-// } else {
-// std::string msg = "normal";
-//
-// if (taskCostMS > 100) {
-// msg = "task cost than 100, ";
-// }
-//
-// if (taskWait.ToMilliseconds() > 100) {
-// std::string a = "wait to long time than 100ms";
-// msg += a;
-// }
-//
-// LOGE(
-// "dyyLog %s taskName is %s : instanceId %s : task_id %d: start : %lld --- end : %lld --- allCost:%lld --- taskCost:%lld --- taskWait:%lld --- msg:%s",
-// task_platform.c_str(),
-// task_name.c_str(),
-// instance_id.c_str(),
-// task_id,
-// start.ToTimeUnit().ToMilliseconds(),
-// end.ToTimeUnit().ToMilliseconds(),
-// allCost.ToMilliseconds(),
-// taskCostMS,
-// taskWait.ToMilliseconds(),
-// msg.c_str());
-// }
+ void setArgs(std::string args) {
+ this->args = args;
+ }
+
+ std::string formatData();
+ void transform();
+ void print();
+
+ //println
+ bool turnOn() {
+ return weex::base::LogImplement::getLog()->perfMode();
}
private:
- std::string task_name;
- int task_id;
- std::string instance_id;
- TimePoint start;
- TimePoint end;
- TimePoint task_start;
- TimePoint task_end;
- bool task_end_flag = false;
- std::string task_platform;
+ std::string m_task_name_;
+ std::string m_log_tag_;
+ std::string m_log_level_;
+ int m_task_id_;
+ int m_relative_task_id_;
+ std::string m_instance_id_;
+ long long m_constructor_time_;
+ long long m_destructor_time_;
+ long long m_task_start_time_;
+ long long m_task_end_time_;
+ bool m_task_end_flag_ = false;
+ std::string m_task_platform_;
+ std::string m_final_info_string_;
+ std::string args;
+
};
} // namespace base
} // namespace weex
diff --git a/weex_core/Source/base/utils/log_utils.cpp b/weex_core/Source/base/utils/log_utils.cpp
index 019c20c..a05c705 100644
--- a/weex_core/Source/base/utils/log_utils.cpp
+++ b/weex_core/Source/base/utils/log_utils.cpp
@@ -19,38 +19,32 @@
#include "base/utils/log_utils.h"
-namespace Weex{
- void LogUtil::ConsoleLogPrint(int level, const char* tag, const char* log) {
- // Log = 1,
- // Warning = 2,
- // Error = 3,
- // Debug = 4,
- // Info = 5,
-
- // if (!mDebugMode) {
- // LOGE("LogUtil mDebugMode is false");
- // return;
- // }
- switch(level) {
- case 1:
- LOGV_TAG("jsengine", "%s", log);
- break;
- case 2:
- LOGW_TAG("jsengine", "%s", log);
- break;
- case 3:
- LOGE_TAG("jsengine", "%s", log);
- break;
- case 4:
- LOGD_TAG("jsengine", "%s", log);
- break;
- case 5:
- LOGI_TAG("jsengine", "%s", log);
- break;
- default:
- LOGV_TAG("jsengine", "%s", log);
- break;
- }
- }
+namespace Weex {
+void LogUtil::ConsoleLogPrint(int level, const char *tag, const char *log) {
+ // Log = 1,
+ // Warning = 2,
+ // Error = 3,
+ // Debug = 4,
+ // Info = 5,
+
+ // if (!mDebugMode) {
+ // LOGE("LogUtil mDebugMode is false");
+ // return;
+ // }
+ switch (level) {
+ case 1:LOGD_TAG(tag, "%s", log);
+ break;
+ case 2:LOGW_TAG(tag, "%s", log);
+ break;
+ case 3:LOGE_TAG(tag, "%s", log);
+ break;
+ case 4:LOGD_TAG(tag, "%s", log);
+ break;
+ case 5:LOGI_TAG(tag, "%s", log);
+ break;
+ default:LOGE_TAG(tag, "%s", log);
+ break;
+ }
+}
}
diff --git a/weex_core/Source/core/bridge/platform/core_side_in_platform.cpp b/weex_core/Source/core/bridge/platform/core_side_in_platform.cpp
index 0514c1e..0ba8a1e 100644
--- a/weex_core/Source/core/bridge/platform/core_side_in_platform.cpp
+++ b/weex_core/Source/core/bridge/platform/core_side_in_platform.cpp
@@ -624,5 +624,12 @@ int CoreSideInPlatform::UpdateInitFrameworkParams(const std::string &key, const
->UpdateInitFrameworkParams(key, value, desc);
}
+void CoreSideInPlatform::SetLogType(const int logType, const bool isPerf) {
+ WeexCoreManager::Instance()
+ ->script_bridge()
+ ->script_side()
+ ->SetLogType(logType,isPerf);
+}
+
} // namespace WeexCore
diff --git a/weex_core/Source/core/bridge/platform/core_side_in_platform.h b/weex_core/Source/core/bridge/platform/core_side_in_platform.h
index a6e5d93..9cd3f6c 100644
--- a/weex_core/Source/core/bridge/platform/core_side_in_platform.h
+++ b/weex_core/Source/core/bridge/platform/core_side_in_platform.h
@@ -112,7 +112,7 @@ class CoreSideInPlatform : public PlatformBridge::CoreSide {
int UpdateGlobalConfig(const char *config) override;
int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc) override;
-
+ void SetLogType(const int logType, const bool isPerf) override;
private:
DISALLOW_COPY_AND_ASSIGN(CoreSideInPlatform);
diff --git a/weex_core/Source/core/bridge/platform_bridge.h b/weex_core/Source/core/bridge/platform_bridge.h
index ba6ab7c..b290009 100644
--- a/weex_core/Source/core/bridge/platform_bridge.h
+++ b/weex_core/Source/core/bridge/platform_bridge.h
@@ -139,6 +139,8 @@ class PlatformBridge {
virtual int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc) = 0;
+ virtual void SetLogType(const int logType, const bool isPerf) = 0;
+
inline PlatformBridge* bridge() { return bridge_; }
protected:
diff --git a/weex_core/Source/core/bridge/script/core_side_in_script.cpp b/weex_core/Source/core/bridge/script/core_side_in_script.cpp
index 8f85f18..d833da9 100644
--- a/weex_core/Source/core/bridge/script/core_side_in_script.cpp
+++ b/weex_core/Source/core/bridge/script/core_side_in_script.cpp
@@ -23,6 +23,7 @@
#include "base/log_defines.h"
#include "base/make_copyable.h"
#include "base/thread/waitable_event.h"
+#include "base/time_calculator.h"
#include "core/manager/weex_core_manager.h"
#include "core/render/manager/render_manager.h"
#include "core/bridge/eagle_bridge.h"
@@ -30,7 +31,6 @@
#include "core/config/core_environment.h"
#ifdef OS_ANDROID
#include "core/parser/action_args_check.h"
-#include <base/time_calculator.h>
#include "android/weex_extend_js_api.h"
#endif
@@ -111,11 +111,11 @@ void CoreSideInScript::AddElement(const char *page_id, const char *parent_ref,
const char *index_str) {
-// std::string msg = "AddElement :";
+ std::string msg = "AddElement";
// wson_parser parser(dom_str);
// msg.append(parser.toStringUTF8().c_str());
//
-// weex::base::TimeCalculator timeCalculator(weex::base::TaskPlatform::WEEXCORE, msg.c_str(), page_id);
+ weex::base::TimeCalculator timeCalculator(weex::base::TaskPlatform::WEEXCORE, msg.c_str(), page_id);
const char *indexChar = index_str == nullptr ? "\0" : index_str;
int index = atoi(indexChar);
@@ -462,4 +462,11 @@ void CoreSideInScript::UpdateComponentData(const char* page_id,
}
}
+bool CoreSideInScript::Log(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) {
+ return weex::base::LogImplement::getLog()->log((LogLevel) level, tag, file, line, log);
+}
+
} // namespace WeexCore
diff --git a/weex_core/Source/core/bridge/script/core_side_in_script.h b/weex_core/Source/core/bridge/script/core_side_in_script.h
index 2c53c1c..78638f1 100644
--- a/weex_core/Source/core/bridge/script/core_side_in_script.h
+++ b/weex_core/Source/core/bridge/script/core_side_in_script.h
@@ -84,6 +84,11 @@ class CoreSideInScript : public ScriptBridge::CoreSide {
const char* cid,
const char* json_data) override;
+ bool Log(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) override ;
+
private:
DISALLOW_COPY_AND_ASSIGN(CoreSideInScript);
};
diff --git a/weex_core/Source/core/bridge/script_bridge.h b/weex_core/Source/core/bridge/script_bridge.h
index d6a0a4d..c1eea10 100644
--- a/weex_core/Source/core/bridge/script_bridge.h
+++ b/weex_core/Source/core/bridge/script_bridge.h
@@ -89,6 +89,12 @@ class ScriptBridge {
const char* cid,
const char* json_data) = 0;
+
+ virtual bool Log(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log) = 0;
+
inline ScriptBridge *bridge() { return bridge_; }
private:
@@ -152,8 +158,12 @@ class ScriptBridge {
virtual int UpdateInitFrameworkParams(const std::string& key, const std::string& value, const std::string& desc) = 0;
+ virtual void SetLogType(const int logLevel, const bool isPerf) = 0;
+
inline ScriptBridge *bridge() { return bridge_; }
+
+
private:
ScriptBridge *bridge_;
friend class ScriptBridge;
diff --git a/weex_core/Source/core/config/core_environment.cpp b/weex_core/Source/core/config/core_environment.cpp
index 4e4012a..5645d72 100644
--- a/weex_core/Source/core/config/core_environment.cpp
+++ b/weex_core/Source/core/config/core_environment.cpp
@@ -22,6 +22,7 @@
#include "base/core_constants.h"
#include "base/log_defines.h"
+#include "base/log_defines.h"
#include "core/common/view_utils.h"
namespace WeexCore {
@@ -86,8 +87,6 @@ namespace WeexCore {
mOptions.insert(std::pair<std::string, std::string>(key, value));
if (key == "switchInteractionLog") {
mInteractionLogSwitch = "true" == value;
- } else if(key == "debugMode" && value == "true"){
- WeexCore::DebugMode = true;
}
}
diff --git a/weex_core/Source/core/manager/weex_core_manager.h b/weex_core/Source/core/manager/weex_core_manager.h
index b520fd0..1996e46 100644
--- a/weex_core/Source/core/manager/weex_core_manager.h
+++ b/weex_core/Source/core/manager/weex_core_manager.h
@@ -25,7 +25,6 @@
#include "base/thread/thread.h"
#include "core/bridge/platform_bridge.h"
#include "core/bridge/script_bridge.h"
-#include "core/bridge/log_bridge.h"
#include "base/message_loop/message_loop.h"
namespace WeexCore {
@@ -43,12 +42,6 @@ class WeexCoreManager {
inline void set_platform_bridge(PlatformBridge *bridge) {
platform_bridge_ = bridge;
}
-
- inline LogBridge *get_log_bridge() { return log_bridge_; }
-
- inline void set_log_bridge(LogBridge *bridge) {
- log_bridge_ = bridge;
- }
inline ScriptBridge *script_bridge() { return script_bridge_; }
@@ -80,14 +73,12 @@ class WeexCoreManager {
private:
PlatformBridge *platform_bridge_;
MeasureFunctionAdapter *measure_function_adapter_;
- LogBridge *log_bridge_;
ScriptBridge *script_bridge_;
ProjectMode project_mode_;
weex::base::Thread *script_thread_;
WeexCoreManager()
: platform_bridge_(nullptr),
- log_bridge_(nullptr),
measure_function_adapter_(nullptr),
script_bridge_(nullptr),
project_mode_(COMMON),
diff --git a/weex_core/Source/core/network/android/default_request_handler.cc b/weex_core/Source/core/network/android/default_request_handler.cc
index ab218bd..b12d7bf 100644
--- a/weex_core/Source/core/network/android/default_request_handler.cc
+++ b/weex_core/Source/core/network/android/default_request_handler.cc
@@ -55,7 +55,7 @@ bool DefaultRequestHandler::RegisterJNIUtils(JNIEnv* env) {
}
DefaultRequestHandler::DefaultRequestHandler() {
- JNIEnv* env = base::android::AttachCurrentThread();
+ JNIEnv* env = ::base::android::AttachCurrentThread();
Reset(env, Java_RequestHandler_create(env).Release());
}
@@ -63,23 +63,23 @@ DefaultRequestHandler::~DefaultRequestHandler() {}
void DefaultRequestHandler::Send(const char* instance_id, const char* url,
Callback callback) {
- JNIEnv* env = base::android::AttachCurrentThread();
+ JNIEnv* env = ::base::android::AttachCurrentThread();
if (!env) return;
CallbackWrapper* callback_wrapper = new CallbackWrapper(callback);
- base::android::ScopedLocalJavaRef<jstring> jni_url(env,
+ ::base::android::ScopedLocalJavaRef<jstring> jni_url(env,
env->NewStringUTF(url));
- base::android::ScopedLocalJavaRef<jstring> jni_id(
+ ::base::android::ScopedLocalJavaRef<jstring> jni_id(
env, env->NewStringUTF(instance_id));
Java_RequestHandler_send(env, jni_object(), jni_id.Get(), jni_url.Get(),
reinterpret_cast<jlong>(callback_wrapper));
}
void DefaultRequestHandler::GetBundleType(const char *instance_id, const char *content, Callback callback){
- JNIEnv* env = base::android::AttachCurrentThread();
+ JNIEnv* env = ::base::android::AttachCurrentThread();
if (!env) return;
CallbackWrapper* callback_wrapper = new CallbackWrapper(callback);
- base::android::ScopedLocalJavaRef<jstring> jni_id(env, env->NewStringUTF(instance_id));
- base::android::ScopedLocalJavaRef<jstring> jni_content(env,env->NewStringUTF(content));
+ ::base::android::ScopedLocalJavaRef<jstring> jni_id(env, env->NewStringUTF(instance_id));
+ ::base::android::ScopedLocalJavaRef<jstring> jni_content(env,env->NewStringUTF(content));
Java_RequestHandler_getBundleType(env, jni_object(), jni_id.Get(), jni_content.Get(),
reinterpret_cast<jlong>(callback_wrapper));
}
diff --git a/weex_core/Source/include/WeexApiHeader.h b/weex_core/Source/include/WeexApiHeader.h
index 0f5572e..759afa6 100644
--- a/weex_core/Source/include/WeexApiHeader.h
+++ b/weex_core/Source/include/WeexApiHeader.h
@@ -119,6 +119,12 @@ typedef void
(*FuncUpdateComponentData)(const char* page_id, const char* cid, const char* json_data);
+typedef bool
+(*FuncLog)(int level, const char *tag,
+ const char *file,
+ unsigned long line,
+ const char *log);
+
typedef struct FunctionsExposedByCore {
FuncSetJSVersion funcSetJSVersion;
FuncReportException funcReportException;
@@ -147,6 +153,7 @@ typedef struct FunctionsExposedByCore {
FuncCallDispatchMessageSync funcCallDispatchMessageSync;
FuncOnReceivedResult funcOnReceivedResult;
FuncUpdateComponentData funcUpdateComponentData;
+ FuncLog funcLog;
} FunctionsExposedByCore;
typedef void (*FuncCallSetJSVersion)(const char* version);
@@ -259,6 +266,8 @@ typedef int (*FuncUpdateGlobalConfig)(const char *config);
typedef int (*FuncUpdateInitFrameworkParams)(const std::string& key, const std::string& value, const std::string& desc);
+typedef void (*FuncSetLogType)(const int logLevel, const bool isPerf);
+
typedef struct FunctionsExposedByJS {
FuncInitFramework funcInitFramework;
FuncInitAppFramework funcInitAppFramework;
@@ -276,6 +285,7 @@ typedef struct FunctionsExposedByJS {
FuncDestroyInstance funcDestroyInstance;
FuncUpdateGlobalConfig funcUpdateGlobalConfig;
FuncUpdateInitFrameworkParams funcUpdateInitFrameworkParams;
+ FuncSetLogType funcSetLogType;
} FunctionsExposedByJS;
diff --git a/weex_core/Source/js_runtime/weex/bridge/script/script_side_in_queue.cpp b/weex_core/Source/js_runtime/weex/bridge/script/script_side_in_queue.cpp
index 6295d62..2b71b9f 100644
--- a/weex_core/Source/js_runtime/weex/bridge/script/script_side_in_queue.cpp
+++ b/weex_core/Source/js_runtime/weex/bridge/script/script_side_in_queue.cpp
@@ -305,6 +305,11 @@ int ScriptSideInQueue::UpdateInitFrameworkParams(const std::string& key, const s
return 1;
}
+void ScriptSideInQueue::SetLogType(const int logLevel, const bool isPerf) {
+ // do nothing;
+};
+
+
void ScriptSideInQueue::useBackUpWeexRuntime(std::string id) {
usingBackThreadId.push_back(id);
}
diff --git a/weex_core/Source/js_runtime/weex/bridge/script/script_side_in_simple.cpp b/weex_core/Source/js_runtime/weex/bridge/script/script_side_in_simple.cpp
index 94bb888..fee2931 100644
--- a/weex_core/Source/js_runtime/weex/bridge/script/script_side_in_simple.cpp
+++ b/weex_core/Source/js_runtime/weex/bridge/script/script_side_in_simple.cpp
@@ -143,6 +143,9 @@ int ScriptSideInSimple::UpdateInitFrameworkParams(const std::string& key, const
return runtime_->UpdateInitFrameworkParams(key ,value, desc);
}
+void ScriptSideInSimple::SetLogType(const int logLevel, const bool isPerf) {
+ //do nothing
+}
} // namespace js
diff --git a/weex_core/Source/js_runtime/weex/object/weex_global_object_v2.cpp b/weex_core/Source/js_runtime/weex/object/weex_global_object_v2.cpp
index e177ac8..b3a1d7b 100644
--- a/weex_core/Source/js_runtime/weex/object/weex_global_object_v2.cpp
+++ b/weex_core/Source/js_runtime/weex/object/weex_global_object_v2.cpp
@@ -20,6 +20,7 @@
// Created by chenpeihan on 2019/2/22.
//
+#include "base/log_defines.h"
#include "core/bridge/script_bridge.h"
#include "js_runtime/weex/utils/weex_jsc_utils.h"
#include "core/bridge/script_bridge.h"
@@ -131,7 +132,7 @@ WeexGlobalObjectV2::initWxEnvironment(std::vector<INIT_FRAMEWORK_PARAMS *> ¶
// add for debug mode
if (std::string("debugMode") == type && std::string("true") == value) {
// Weex::LogUtil::setDebugMode(true);
- WeexCore::DebugMode = true;
+ weex::base::LogImplement::getLog()->setDebugMode(true);
LOGE("jss use %s","runtime");
}
// --------------------------------------------------------
diff --git a/weex_core/Source/third_party/IPC/IPCLog.h b/weex_core/Source/third_party/IPC/IPCLog.h
index 5f43913..04baf0d 100644
--- a/weex_core/Source/third_party/IPC/IPCLog.h
+++ b/weex_core/Source/third_party/IPC/IPCLog.h
@@ -25,6 +25,7 @@
#ifndef IPCLOG_H
#define IPCLOG_H
#include "../../base/log_defines.h"
+
#define IPC_LOGE(format, ...) LOGE(format, ##__VA_ARGS__)
#define IPC_LOGD(format, ...) LOGD(format, ##__VA_ARGS__)
#endif /* IPCLOG_H */
diff --git a/weex_core/Source/third_party/IPC/IPCMessageJS.h b/weex_core/Source/third_party/IPC/IPCMessageJS.h
index b7e0ad4..af7cc0b 100644
--- a/weex_core/Source/third_party/IPC/IPCMessageJS.h
+++ b/weex_core/Source/third_party/IPC/IPCMessageJS.h
@@ -44,6 +44,7 @@ enum class IPCJSMsg {
EXECJSONAPPWITHRESULT,
CALLJSONAPPCONTEXT,
DESTORYAPPCONTEXT,
+ SETLOGLEVEL,
};
// Message from Script to Core in ScriptBridge
@@ -75,8 +76,8 @@ enum class IPCProxyMsg {
DISPATCHMESSAGESYNC,
ONRECEIVEDRESULT,
UPDATECOMPONENTDATA,
- TLOGMSG,
HEARTBEAT,
+ POSTLOGDETAIL,
};
// Message from Script to Core in ScriptBridge