Repository: incubator-weex Updated Branches: refs/heads/master 7f6ea01c4 -> c59ac1895
[WEEX-483][Android] get options from arguments in callNativeModule options has been put in the arguments, So we should get options from arguments Bug: WEEX-483 Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/c59ac189 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/c59ac189 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/c59ac189 Branch: refs/heads/master Commit: c59ac18953c04fcdbd5b08e60b3e56f5a5f45ffc Parents: 7f6ea01 Author: Darin <dyy...@qq.com> Authored: Thu Jun 21 12:54:45 2018 +0800 Committer: YorkShen <shenyua...@gmail.com> Committed: Thu Jun 28 15:01:44 2018 +0800 ---------------------------------------------------------------------- .../java/com/taobao/weex/WXSDKInstance.java | 4 ++ .../java/com/taobao/weex/bridge/WXBridge.java | 23 ++++++-- .../com/taobao/weex/bridge/WXBridgeManager.java | 57 +++----------------- 3 files changed, 31 insertions(+), 53 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c59ac189/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java ---------------------------------------------------------------------- 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 99680f7..5f6e2a9 100644 --- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java +++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java @@ -133,6 +133,10 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan private @NonNull FlatGUIContext mFlatGUIContext =new FlatGUIContext(); + /** + * bundle type + */ + public WXBridgeManager.BundType bundleType; public long mRenderStartNanos; public int mExecJSTraceId = WXTracing.nextId(); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c59ac189/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java ---------------------------------------------------------------------- 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 4059d97..482a681 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java @@ -19,7 +19,6 @@ package com.taobao.weex.bridge; import android.util.Log; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -214,11 +213,29 @@ public class WXBridge implements IWXBridge { */ @Override public Object callNativeModule(String instanceId, String module, String method, byte[] arguments, byte[] options) { - try{ - JSONArray argArray = (JSONArray) WXWsonJSONSwitch.parseWsonOrJSON(arguments); + try { + JSONArray argArray = null; + if (arguments != null) + argArray = (JSONArray) WXWsonJSONSwitch.parseWsonOrJSON(arguments); JSONObject optionsObj = null; if (options != null) { optionsObj = (JSONObject) WXWsonJSONSwitch.parseWsonOrJSON(options); + } else if (argArray != null) { + final WXSDKInstance sdkInstance = WXSDKManager.getInstance().getSDKInstance(instanceId); + if (sdkInstance != null) { + if (WXBridgeManager.BundType.Rax.equals(sdkInstance.bundleType)) { + Object weex_options__ = null; + for (Object object: argArray) { + if (object instanceof JSONObject && ((JSONObject) object).containsKey("__weex_options__")) { + weex_options__ = ((JSONObject) object).get("__weex_options__"); + } + } + + if (weex_options__ instanceof JSONObject) + optionsObj = (JSONObject) weex_options__; + } + } + } Object object = WXBridgeManager.getInstance().callNativeModule(instanceId, module, method, argArray, optionsObj); return WXWsonJSONSwitch.toWsonOrJsonWXJSObject(object); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c59ac189/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java index 7183112..c6395ca 100644 --- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java +++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java @@ -32,7 +32,6 @@ import android.support.v4.util.ArrayMap; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -41,64 +40,22 @@ import com.taobao.weex.WXSDKInstance; import com.taobao.weex.WXSDKManager; import com.taobao.weex.adapter.IWXJSExceptionAdapter; import com.taobao.weex.adapter.IWXUserTrackAdapter; -import com.taobao.weex.common.IWXBridge; -import com.taobao.weex.common.IWXDebugProxy; -import com.taobao.weex.common.WXConfig; -import com.taobao.weex.common.WXErrorCode; -import com.taobao.weex.common.WXException; -import com.taobao.weex.common.WXJSBridgeMsgType; -import com.taobao.weex.common.WXJSExceptionInfo; -import com.taobao.weex.common.WXRefreshData; -import com.taobao.weex.common.WXRuntimeException; -import com.taobao.weex.common.WXThread; +import com.taobao.weex.common.*; import com.taobao.weex.dom.CSSShorthand; import com.taobao.weex.layout.ContentBoxMeasurement; import com.taobao.weex.ui.WXComponentRegistry; +import com.taobao.weex.ui.action.*; import com.taobao.weex.ui.component.WXComponent; -import com.taobao.weex.ui.action.ActionReloadPage; -import com.taobao.weex.ui.action.BasicGraphicAction; -import com.taobao.weex.ui.action.GraphicActionAddElement; -import com.taobao.weex.ui.action.GraphicActionAddEvent; -import com.taobao.weex.ui.action.GraphicActionAppendTreeCreateFinish; -import com.taobao.weex.ui.action.GraphicActionCreateBody; -import com.taobao.weex.ui.action.GraphicActionCreateFinish; -import com.taobao.weex.ui.action.GraphicActionLayout; -import com.taobao.weex.ui.action.GraphicActionMoveElement; -import com.taobao.weex.ui.action.GraphicActionRefreshFinish; -import com.taobao.weex.ui.action.GraphicActionRemoveElement; -import com.taobao.weex.ui.action.GraphicActionRemoveEvent; -import com.taobao.weex.ui.action.GraphicActionUpdateAttr; -import com.taobao.weex.ui.action.GraphicActionUpdateStyle; -import com.taobao.weex.ui.action.GraphicPosition; -import com.taobao.weex.ui.action.GraphicSize; import com.taobao.weex.ui.module.WXDomModule; -import com.taobao.weex.utils.WXExceptionUtils; -import com.taobao.weex.utils.WXFileUtils; -import com.taobao.weex.utils.WXJsonUtils; -import com.taobao.weex.utils.WXLogUtils; -import com.taobao.weex.utils.WXWsonJSONSwitch; -import com.taobao.weex.utils.WXUtils; -import com.taobao.weex.utils.WXViewUtils; +import com.taobao.weex.utils.*; import com.taobao.weex.utils.batch.BactchExecutor; import com.taobao.weex.utils.batch.Interceptor; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileReader; -import java.io.InputStreamReader; +import java.io.*; import java.lang.reflect.Constructor; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Stack; +import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; @@ -179,7 +136,7 @@ public class WXBridgeManager implements Callback, BactchExecutor { // weexcore use single process or not private static boolean isUseSingleProcess = false; - private enum BundType { + public enum BundType { Vue, Rax, Others @@ -1290,7 +1247,7 @@ public class WXBridgeManager implements Callback, BactchExecutor { } catch (Throwable e) { e.printStackTrace(); } - + instance.bundleType = type; if (WXEnvironment.isApkDebugable() && BRIDGE_LOG_SWITCH) { WXLogUtils.d("createInstance >>>> instanceId:" + instance.getInstanceId() + ", options:"