You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2018/06/28 07:01:56 UTC

incubator-weex git commit: [WEEX-483][Android] get options from arguments in callNativeModule

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 <dy...@qq.com>
Authored: Thu Jun 21 12:54:45 2018 +0800
Committer: YorkShen <sh...@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:"