You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by gu...@apache.org on 2017/10/19 04:18:36 UTC

[01/18] incubator-weex git commit: * [android] fix flicker caused by coexistence of box-shadow and border-radius

Repository: incubator-weex
Updated Branches:
  refs/heads/master 556cc0683 -> ebd058eb1


* [android] fix flicker caused by coexistence of box-shadow and border-radius


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e777ac8d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e777ac8d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e777ac8d

Branch: refs/heads/master
Commit: e777ac8dd8f02805c5adee19364d87ee5c40bf9d
Parents: 045e838
Author: misakuo <mi...@apache.org>
Authored: Tue Oct 10 18:20:24 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Tue Oct 10 18:20:24 2017 +0800

----------------------------------------------------------------------
 .../taobao/weex/ui/component/WXComponent.java   | 25 +++++++-------------
 .../taobao/weex/ui/component/WXVContainer.java  | 25 +++++++++++++++++++-
 2 files changed, 33 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e777ac8d/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index d801290..74e4db4 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -759,22 +759,9 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
       case Constants.Name.BORDER_TOP_RIGHT_RADIUS:
       case Constants.Name.BORDER_BOTTOM_RIGHT_RADIUS:
       case Constants.Name.BORDER_BOTTOM_LEFT_RADIUS:
-        final Float radius = WXUtils.getFloat(param,null);
-        final String finalKey = key;
+        Float radius = WXUtils.getFloat(param,null);
         if (radius != null) {
-          if (this instanceof WXDiv && mHost != null) {
-            /* Hacked by moxun
-               Set border radius on ViewGroup will cause the Overlay to be cut and don't know why
-               Delay setting border radius can avoid the problem, and don't know why too, dog science…… */
-            mHost.postDelayed(new Runnable() {
-              @Override
-              public void run() {
-                setBorderRadius(finalKey, radius);
-              }
-            }, 64);
-          } else {
-            setBorderRadius(finalKey, radius);
-          }
+          setBorderRadius(key, radius);
         }
         return true;
       case Constants.Name.BORDER_WIDTH:
@@ -898,7 +885,13 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
           }
         }
       }
-      BoxShadowUtil.setBoxShadow(mHost, boxShadow.toString(), radii, getInstance().getInstanceViewPortWidth());
+
+      View target = mHost;
+      if (this instanceof WXVContainer) {
+        target = ((WXVContainer) this).getBoxShadowHost();
+      }
+
+      BoxShadowUtil.setBoxShadow(target, boxShadow.toString(), radii, getInstance().getInstanceViewPortWidth());
     } else {
       WXLogUtils.w("Can not resolve styles");
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e777ac8d/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
index 43b45a7..4570729 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
@@ -18,15 +18,19 @@
  */
 package com.taobao.weex.ui.component;
 
+import android.content.Context;
 import android.content.Intent;
-import android.util.Pair;
 import android.support.annotation.Nullable;
+import android.util.Pair;
 import android.view.Menu;
 import android.view.View;
 import android.view.ViewGroup;
+
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.common.Constants;
 import com.taobao.weex.dom.WXDomObject;
+import com.taobao.weex.utils.WXViewUtils;
+
 import java.util.ArrayList;
 
 /**
@@ -36,6 +40,7 @@ public abstract class WXVContainer<T extends ViewGroup> extends WXComponent<T> {
 
   private static final String TAG="WXVContainer";
   protected ArrayList<WXComponent> mChildren = new ArrayList<>();
+  private BoxShadowHost mBoxShadowHost;
 
   @Deprecated
   public WXVContainer(WXSDKInstance instance, WXDomObject dom, WXVContainer parent, String instanceId, boolean isLazy) {
@@ -474,4 +479,22 @@ public abstract class WXVContainer<T extends ViewGroup> extends WXComponent<T> {
   /********************************
    *  end hook Activity life cycle callback
    ********************************************************/
+
+  public @Nullable View getBoxShadowHost() {
+    if (mBoxShadowHost == null) {
+      mBoxShadowHost = new BoxShadowHost(getContext());
+      WXViewUtils.setBackGround(mBoxShadowHost, null);
+      mBoxShadowHost.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+      getHostView().addView(mBoxShadowHost);
+    }
+    getHostView().removeView(mBoxShadowHost);
+    getHostView().addView(mBoxShadowHost);
+    return mBoxShadowHost;
+  }
+
+  private class BoxShadowHost extends View {
+    public BoxShadowHost(Context context) {
+      super(context);
+    }
+  }
 }


[05/18] incubator-weex git commit: * [android] if not debug level then write console log

Posted by gu...@apache.org.
* [android] if not debug level then write console log


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/db5b1e04
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/db5b1e04
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/db5b1e04

Branch: refs/heads/master
Commit: db5b1e0465b494ea937b381bed3b54aaea0b40ba
Parents: ac075c7
Author: atomtong <to...@qq.com>
Authored: Wed Oct 18 10:58:06 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Wed Oct 18 13:04:15 2017 +0800

----------------------------------------------------------------------
 .../sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/db5b1e04/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
----------------------------------------------------------------------
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 a120ad6..1f5b4b2 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
@@ -78,10 +78,11 @@ public class WXLogUtils {
         Log.println(level.getPriority(),tag, msg);
       }
 
-      if(WXEnvironment.isApkDebugable()){
-        writeConsoleLog(level.getName(), msg);
-        sendLog(level, msg);
-      }
+      // if not debug level then print log
+      if(WXEnvironment.isApkDebugable() && !level.getName().equals("debug")){
+		writeConsoleLog(level.getName(), msg);
+		sendLog(level, msg);
+	  }
     }
   }
 


[13/18] incubator-weex git commit: * [android] fix crash when set box-shadow on horizontal scroller

Posted by gu...@apache.org.
* [android] fix crash when set box-shadow on horizontal scroller


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/7f6203c9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/7f6203c9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/7f6203c9

Branch: refs/heads/master
Commit: 7f6203c9b6a4c398cce6584cd9da1689bb14e5ba
Parents: 61ead2a
Author: misakuo <mi...@apache.org>
Authored: Wed Oct 18 19:44:50 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Wed Oct 18 19:44:50 2017 +0800

----------------------------------------------------------------------
 .../taobao/weex/ui/component/WXVContainer.java  | 35 +++++++++++++++-----
 1 file changed, 26 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7f6203c9/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
index 4570729..001509e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
@@ -25,10 +25,13 @@ import android.util.Pair;
 import android.view.Menu;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.HorizontalScrollView;
+import android.widget.ScrollView;
 
 import com.taobao.weex.WXSDKInstance;
 import com.taobao.weex.common.Constants;
 import com.taobao.weex.dom.WXDomObject;
+import com.taobao.weex.utils.WXLogUtils;
 import com.taobao.weex.utils.WXViewUtils;
 
 import java.util.ArrayList;
@@ -481,15 +484,29 @@ public abstract class WXVContainer<T extends ViewGroup> extends WXComponent<T> {
    ********************************************************/
 
   public @Nullable View getBoxShadowHost() {
-    if (mBoxShadowHost == null) {
-      mBoxShadowHost = new BoxShadowHost(getContext());
-      WXViewUtils.setBackGround(mBoxShadowHost, null);
-      mBoxShadowHost.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
-      getHostView().addView(mBoxShadowHost);
-    }
-    getHostView().removeView(mBoxShadowHost);
-    getHostView().addView(mBoxShadowHost);
-    return mBoxShadowHost;
+    ViewGroup hostView = getHostView();
+    if (hostView == null) {
+      return null;
+    }
+
+    if (hostView instanceof ScrollView || hostView instanceof HorizontalScrollView) {
+      return hostView;
+    }
+
+    try {
+      if (mBoxShadowHost == null) {
+        mBoxShadowHost = new BoxShadowHost(getContext());
+        WXViewUtils.setBackGround(mBoxShadowHost, null);
+        mBoxShadowHost.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+        hostView.addView(mBoxShadowHost);
+      }
+      hostView.removeView(mBoxShadowHost);
+      hostView.addView(mBoxShadowHost);
+      return mBoxShadowHost;
+    } catch (Throwable t) {
+      WXLogUtils.w("BoxShadow", t);
+    }
+    return hostView;
   }
 
   private class BoxShadowHost extends View {


[16/18] incubator-weex git commit: * [ios] add jserror upload method, add trigger positions on sdk init, jsservice, jsbridge

Posted by gu...@apache.org.
* [ios] add jserror upload method, add trigger positions on sdk init,jsservice,jsbridge


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e3b9c10e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e3b9c10e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e3b9c10e

Branch: refs/heads/master
Commit: e3b9c10ee99b3c6236f5e67867b634fd3377d7e6
Parents: db5b1e0
Author: gurisxie <27...@qq.com>
Authored: Thu Oct 19 11:45:16 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Thu Oct 19 11:45:16 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       | 12 +++++
 .../WeexSDK/Sources/Bridge/WXBridgeContext.m    | 13 +++--
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m | 16 +++---
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m    |  5 +-
 ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h     |  6 +++
 .../WeexSDK/Sources/Monitor/WXExceptionUtils.h  | 29 ++++++++++
 .../WeexSDK/Sources/Monitor/WXExceptionUtils.m  | 57 ++++++++++++++++++++
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |  1 +
 8 files changed, 128 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e3b9c10e/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index 8addaca..749cb8c 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -264,6 +264,10 @@
 		77E65A161C155EB5008B8775 /* WXTextComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 77E65A141C155EB5008B8775 /* WXTextComponent.m */; };
 		77E65A191C155F25008B8775 /* WXScrollerComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 77E65A171C155F25008B8775 /* WXScrollerComponent.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		77E65A1A1C155F25008B8775 /* WXScrollerComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 77E65A181C155F25008B8775 /* WXScrollerComponent.m */; };
+		841CD1031F9739890081196D /* WXExceptionUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 841CD1021F9739890081196D /* WXExceptionUtils.m */; };
+		841CD1051F974DFA0081196D /* WXExceptionUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 841CD1041F97399C0081196D /* WXExceptionUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		841CD1061F974DFA0081196D /* WXExceptionUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 841CD1041F97399C0081196D /* WXExceptionUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		841CD1071F974E000081196D /* WXExceptionUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 841CD1021F9739890081196D /* WXExceptionUtils.m */; };
 		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 */; };
@@ -851,6 +855,8 @@
 		77E65A141C155EB5008B8775 /* WXTextComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXTextComponent.m; sourceTree = "<group>"; };
 		77E65A171C155F25008B8775 /* WXScrollerComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXScrollerComponent.h; sourceTree = "<group>"; };
 		77E65A181C155F25008B8775 /* WXScrollerComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXScrollerComponent.m; sourceTree = "<group>"; };
+		841CD1021F9739890081196D /* WXExceptionUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExceptionUtils.m; sourceTree = "<group>"; };
+		841CD1041F97399C0081196D /* WXExceptionUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WXExceptionUtils.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>"; };
@@ -1082,6 +1088,8 @@
 				2AAFC1B41C48DFF70026D2FE /* WXSDKError.h */,
 				749DC2791D40827B009E1C91 /* WXMonitor.h */,
 				749DC27A1D40827B009E1C91 /* WXMonitor.m */,
+				841CD1041F97399C0081196D /* WXExceptionUtils.h */,
+				841CD1021F9739890081196D /* WXExceptionUtils.m */,
 			);
 			name = Monitor;
 			path = WeexSDK/Sources/Monitor;
@@ -1602,6 +1610,7 @@
 				DCA0EF641D6EED6F00CB18B9 /* WXGlobalEventModule.h in Headers */,
 				2A837AB21CD9DE9200AEDF03 /* WXLoadingComponent.h in Headers */,
 				DCA446271EFA5DAF00D0CFA8 /* WeexSDK.h in Headers */,
+				841CD1051F974DFA0081196D /* WXExceptionUtils.h in Headers */,
 				C42E8F9B1F39DF07001EBE9D /* WXTracingProtocol.h in Headers */,
 				7423899F1C32733800D748CA /* WXType.h in Headers */,
 				59A582FC1CF5B17B0081FD3E /* WXBridgeContext.h in Headers */,
@@ -1793,6 +1802,7 @@
 				DCA445D51EFA598200D0CFA8 /* WXComponent+PseudoClassManagement.h in Headers */,
 				DCA4460E1EFA5A7E00D0CFA8 /* WXLength.h in Headers */,
 				DCA445FA1EFA5A3A00D0CFA8 /* WXNavigatorModule.h in Headers */,
+				841CD1061F974DFA0081196D /* WXExceptionUtils.h in Headers */,
 				DCA446081EFA5A6A00D0CFA8 /* NSArray+Weex.h in Headers */,
 				74B81AE51F73C3E900D3A61D /* WXRecycleListDataManager.h in Headers */,
 				DCA445F21EFA5A2300D0CFA8 /* WXHeaderComponent.h in Headers */,
@@ -2200,6 +2210,7 @@
 				7463192A1C71B92600EFEBD4 /* WXModalUIModule.m in Sources */,
 				77D161501C02E3880010B15B /* WXUtility.m in Sources */,
 				74A4BA9F1CB3C0A100195969 /* WXHandlerFactory.m in Sources */,
+				841CD1031F9739890081196D /* WXExceptionUtils.m in Sources */,
 				C4E97D341F1EF46D00ABC314 /* WXTracingManager.m in Sources */,
 				742AD72F1DF98C45007DC46C /* WXResourceRequest.m in Sources */,
 				7461F8931CFB373100F62D44 /* WXLayer.m in Sources */,
@@ -2278,6 +2289,7 @@
 				DCA4455E1EFA55B300D0CFA8 /* WXFooterComponent.m in Sources */,
 				DCA4455F1EFA55B300D0CFA8 /* WXNavigationDefaultImpl.m in Sources */,
 				74B81AF21F73C3E900D3A61D /* WXJSASTParser.mm in Sources */,
+				841CD1071F974E000081196D /* WXExceptionUtils.m in Sources */,
 				DCA445601EFA55B300D0CFA8 /* WXURLRewriteDefaultImpl.m in Sources */,
 				DCA445611EFA55B300D0CFA8 /* WXPrerenderManager.m in Sources */,
 				DCA445631EFA55B300D0CFA8 /* WXPickerModule.m in Sources */,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e3b9c10e/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
index 7985fe5..24801cc 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
@@ -40,6 +40,7 @@
 #import "WXSDKInstance_private.h"
 #import "WXPrerenderManager.h"
 #import "WXTracingManager.h"
+#import "WXExceptionUtils.h"
 
 #define SuppressPerformSelectorLeakWarning(Stuff) \
 do { \
@@ -506,8 +507,10 @@ _Pragma("clang diagnostic pop") \
     WX_MONITOR_PERF_END(WXPTFrameworkExecute);
     
     if ([self.jsBridge exception]) {
-        NSString *message = [NSString stringWithFormat:@"JSFramework executes error: %@", [self.jsBridge exception]];
-        WX_MONITOR_FAIL(WXMTJSFramework, WX_ERR_JSFRAMEWORK_EXECUTE, message);
+        NSString *exception = [[self.jsBridge exception] toString];
+        NSMutableString *errMsg = [NSMutableString stringWithFormat:@"[WX_KEY_EXCEPTION_SDK_INIT_JSFM_INIT_FAILED] %@",exception];
+        [WXExceptionUtils commitCriticalExceptionRT:@"WX_KEY_EXCEPTION_SDK_INIT" errCode:[NSString stringWithFormat:@"%d", WX_KEY_EXCEPTION_SDK_INIT] function:@"" exception:errMsg extParams:nil];
+        WX_MONITOR_FAIL(WXMTJSFramework, WX_ERR_JSFRAMEWORK_EXECUTE, errMsg);
     } else {
         WX_MONITOR_SUCCESS(WXMTJSFramework);
         //the JSFramework has been load successfully.
@@ -568,8 +571,10 @@ _Pragma("clang diagnostic pop") \
         [self.jsBridge executeJavascript:script];
         
         if ([self.jsBridge exception]) {
-            NSString *message = [NSString stringWithFormat:@"JSService executes error: %@", [self.jsBridge exception]];
-            WX_MONITOR_FAIL(WXMTJSService, WX_ERR_JSFRAMEWORK_EXECUTE, message);
+            NSString *exception = [[self.jsBridge exception] toString];
+            NSMutableString *errMsg = [NSMutableString stringWithFormat:@"[WX_KEY_EXCEPTION_INVOKE_JSSERVICE_EXECUTE] %@",exception];
+            [WXExceptionUtils commitCriticalExceptionRT:@"WX_KEY_EXCEPTION_INVOKE" errCode:[NSString stringWithFormat:@"%d", WX_KEY_EXCEPTION_INVOKE] function:@"" exception:errMsg extParams:nil];
+            WX_MONITOR_FAIL(WXMTJSService, WX_ERR_JSFRAMEWORK_EXECUTE, errMsg);
         } else {
             // success
         }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e3b9c10e/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m b/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
index ec81b22..f076817 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
@@ -36,6 +36,7 @@
 #import "WXSDKManager.h"
 #import "WXExtendCallNativeManager.h"
 #import "WXTracingManager.h"
+#import "WXExceptionUtils.h"
 
 #import <dlfcn.h>
 
@@ -154,14 +155,17 @@
         
         _jsContext.exceptionHandler = ^(JSContext *context, JSValue *exception){
             context.exception = exception;
-            NSString *message = [NSString stringWithFormat:@"[%@:%@:%@] %@\n%@", exception[@"sourceURL"], exception[@"line"], exception[@"column"], exception, [exception[@"stack"] toObject]];
-            id<WXJSExceptionProtocol> jsExceptionHandler = [WXHandlerFactory handlerForProtocol:@protocol(WXJSExceptionProtocol)];
             
             WXSDKInstance *instance = [WXSDKEngine topInstance];
-            WXJSExceptionInfo * jsExceptionInfo = [[WXJSExceptionInfo alloc] initWithInstanceId:instance.instanceId bundleUrl:[instance.scriptURL absoluteString] errorCode:[NSString stringWithFormat:@"%d", WX_ERR_JS_EXECUTE] functionName:@"" exception:[NSString stringWithFormat:@"[%@:%@] %@\n%@ \njsMainBundleStringContentLength:%@\njsMainBundleStringContentMd5:%@",exception[@"line"], exception[@"column"],[exception toString], exception[@"stack"], instance.userInfo[@"jsMainBundleStringContentLength"]?:@"",instance.userInfo[@"jsMainBundleStringContentMd5"]?:@""] userInfo:nil];
-            if ([jsExceptionHandler respondsToSelector:@selector(onJSException:)]) {
-                [jsExceptionHandler onJSException:jsExceptionInfo];
-            }
+            NSString *bundleUrl = [instance.scriptURL absoluteString]?:@"WX_KEY_EXCEPTION_WXBRIDGE";
+            NSString *errorCode = [NSString stringWithFormat:@"%d", WX_KEY_EXCEPTION_WXBRIDGE];
+            NSString *message = [NSString stringWithFormat:@"[WX_KEY_EXCEPTION_WXBRIDGE] [%@:%@:%@] %@\n%@", exception[@"sourceURL"], exception[@"line"], exception[@"column"], [exception toString], [exception[@"stack"] toObject]];
+            NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+                instance.userInfo[@"jsMainBundleStringContentLength"]?:@"",@"jsMainBundleStringContentLength",
+                instance.userInfo[@"jsMainBundleStringContentMd5"]?:@"",@"jsMainBundleStringContentMd5",nil];
+            WXJSExceptionInfo * jsExceptionInfo = [[WXJSExceptionInfo alloc] initWithInstanceId:instance.instanceId bundleUrl:bundleUrl errorCode:errorCode functionName:@"" exception:message userInfo:userInfo];
+            
+            [WXExceptionUtils commitCriticalExceptionRT:jsExceptionInfo];
             WX_MONITOR_FAIL(WXMTJSBridge, WX_ERR_JS_EXECUTE, message);
             if (instance.onJSRuntimeException) {
                 instance.onJSRuntimeException(jsExceptionInfo);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e3b9c10e/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
index e86221d..fbd62b9 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
@@ -37,6 +37,7 @@
 #import "WXLog.h"
 #import "WXUtility.h"
 #import "WXExtendCallNativeManager.h"
+#import "WXExceptionUtils.h"
 
 @implementation WXSDKEngine
 
@@ -230,7 +231,9 @@
     WX_MONITOR_PERF_START(WXPTInitalizeSync)
     
     if (!script || script.length <= 0) {
-        WX_MONITOR_FAIL(WXMTJSFramework, WX_ERR_JSFRAMEWORK_LOAD, @"framework loading is failure!");
+        NSMutableString *errMsg = [NSMutableString stringWithFormat:@"[WX_KEY_EXCEPTION_SDK_INIT_JSFM_INIT_FAILED] script don't exist:%@",script];
+        [WXExceptionUtils commitCriticalExceptionRT:@"WX_KEY_EXCEPTION_SDK_INIT" errCode:[NSString stringWithFormat:@"%d", WX_KEY_EXCEPTION_SDK_INIT] function:@"initSDKEnvironment" exception:errMsg extParams:nil];
+        WX_MONITOR_FAIL(WXMTJSFramework, WX_ERR_JSFRAMEWORK_LOAD, errMsg);
         return;
     }
     static dispatch_once_t onceToken;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e3b9c10e/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
index 38b1e2b..e47cb1c 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
@@ -51,5 +51,11 @@ typedef NS_ENUM(int, WXSDKErrCode)
     WX_ERR_NOT_CONNECTED_TO_INTERNET = -2205,
     WX_ERR_CANCEL = -2204,
     WX_ERR_DOWNLOAD_END = -2299,
+    
+    WX_KEY_EXCEPTION_SDK_INIT = -9000,
+    WX_KEY_EXCEPTION_INVOKE = -9100,
+    WX_KEY_EXCEPTION_JS_DOWNLOAD =-9200,
+    WX_KEY_EXCEPTION_DOM = -9300,
+    WX_KEY_EXCEPTION_WXBRIDGE=-9400,
 };
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e3b9c10e/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.h b/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.h
new file mode 100644
index 0000000..c0bcf4b
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.h
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+#import <Foundation/Foundation.h>
+#import "WXJSExceptionInfo.h"
+
+@interface WXExceptionUtils : NSObject
+
++ (void)commitCriticalExceptionRT:(NSString *)instanceId errCode:(NSString *)errCode function:(NSString *)function exception:(NSString *)exception extParams:(NSDictionary *)extParams;
+
++ (void)commitCriticalExceptionRT:(WXJSExceptionInfo*)jsExceptionInfo;
+@end
+

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e3b9c10e/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m b/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m
new file mode 100644
index 0000000..0ed7297
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+
+#import "WXExceptionUtils.h"
+#import "WXJSExceptionProtocol.h"
+#import "WXHandlerFactory.h"
+#import "WXSDKEngine.h"
+#import "WXSDKError.h"
+#import "WXJSExceptionInfo.h"
+#import "WXUtility.h"
+#import "WXSDKManager.h"
+
+
+@implementation WXExceptionUtils
+
++ (void)commitCriticalExceptionRT:(NSString *)instanceId errCode:(NSString *)errCode function:(NSString *)function exception:(NSString *)exception extParams:(NSDictionary *)extParams{
+    NSString *bundleUrlCommit = @"BundleUrlDefault";
+    NSString *instanceIdCommit = @"InstanceIdDefalut";
+    
+    if(![WXUtility isBlankString:instanceId]){
+        instanceIdCommit = instanceId;
+        WXSDKInstance * instance = [WXSDKManager instanceForID:instanceId];
+        if(instance){
+            bundleUrlCommit = [instance.scriptURL absoluteString]?:bundleUrlCommit;
+        }else if([instanceIdCommit hasPrefix:@"WX_KEY_EXCEPTION"]){
+            bundleUrlCommit = instanceId;
+        }
+    }
+    
+    WXJSExceptionInfo * jsExceptionInfo = [[WXJSExceptionInfo alloc] initWithInstanceId:instanceIdCommit bundleUrl:bundleUrlCommit errorCode:errCode functionName:function exception:exception userInfo: [extParams mutableCopy]];
+    [WXExceptionUtils commitCriticalExceptionRT:jsExceptionInfo];
+}
+
++ (void)commitCriticalExceptionRT:(WXJSExceptionInfo *)jsExceptionInfo{
+    id<WXJSExceptionProtocol> jsExceptionHandler = [WXHandlerFactory handlerForProtocol:@protocol(WXJSExceptionProtocol)];
+    if ([jsExceptionHandler respondsToSelector:@selector(onJSException:)]) {
+        [jsExceptionHandler onJSException:jsExceptionInfo];
+    }
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e3b9c10e/ios/sdk/WeexSDK/Sources/WeexSDK.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/WeexSDK.h b/ios/sdk/WeexSDK/Sources/WeexSDK.h
index 3bbc3ea..562cfa8 100644
--- a/ios/sdk/WeexSDK/Sources/WeexSDK.h
+++ b/ios/sdk/WeexSDK/Sources/WeexSDK.h
@@ -53,6 +53,7 @@
 #import "WXIndicatorComponent.h"
 #import "WXImgLoaderProtocol.h"
 #import "WXExtendCallNativeProtocol.h"
+#import "WXExceptionUtils.h"
 #import "WXEventModuleProtocol.h"
 #import "WXErrorView.h"
 #import "WXDefine.h"


[14/18] incubator-weex git commit: * [android] fix crash when set box-shadow on horizontal scroller

Posted by gu...@apache.org.
* [android] fix crash when set box-shadow on horizontal scroller


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/54719936
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/54719936
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/54719936

Branch: refs/heads/master
Commit: 54719936fa4f14d4a9680130489e7d71f347680e
Parents: fc7b90e 7f6203c
Author: gurisxie <27...@qq.com>
Authored: Wed Oct 18 19:59:49 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Wed Oct 18 19:59:49 2017 +0800

----------------------------------------------------------------------
 .../taobao/weex/ui/component/WXVContainer.java  | 35 +++++++++++++++-----
 1 file changed, 26 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/54719936/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
----------------------------------------------------------------------


[09/18] incubator-weex git commit: * [android] fix redundant input event

Posted by gu...@apache.org.
* [android] fix redundant input event


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/4c494b2b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/4c494b2b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/4c494b2b

Branch: refs/heads/master
Commit: 4c494b2b2e653db43d2519dc180e7eff1e767997
Parents: 64dd40b 9203268
Author: gurisxie <27...@qq.com>
Authored: Wed Oct 18 16:00:20 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Wed Oct 18 16:00:20 2017 +0800

----------------------------------------------------------------------
 .../com/taobao/weex/ui/component/AbstractEditComponent.java  | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------



[02/18] incubator-weex git commit: * [android] fix shadow remains after component size changed

Posted by gu...@apache.org.
* [android] fix shadow remains after component size changed


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/d5731c2c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/d5731c2c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/d5731c2c

Branch: refs/heads/master
Commit: d5731c2caceb94f6b7cd942ae50683b38846d3c1
Parents: e777ac8
Author: misakuo <mi...@apache.org>
Authored: Wed Oct 11 18:10:48 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Wed Oct 11 18:10:48 2017 +0800

----------------------------------------------------------------------
 .../taobao/weex/ui/component/WXComponent.java   | 29 ++++++++++++++++----
 1 file changed, 24 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/d5731c2c/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index 74e4db4..3c0c870 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -509,6 +509,8 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
       setWidgetParams(widget, UIImp, rawOffset, realWidth, realHeight, realLeft, realRight, realTop,
           realBottom);
     } else if (mHost != null) {
+      // clear box shadow before host's size changed
+      clearBoxShadow();
       if (mDomObj.isFixed()) {
         setFixedHostLayoutParams(mHost, realWidth, realHeight, realLeft, realRight, realTop,
             realBottom);
@@ -520,6 +522,8 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
       mPreRealLeft = realLeft;
       mPreRealTop = realTop;
       onFinishLayout();
+      // restore box shadow
+      updateBoxShadow();
     }
   }
 
@@ -859,6 +863,15 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
         return;
       }
 
+      View target = mHost;
+      if (this instanceof WXVContainer) {
+        target = ((WXVContainer) this).getBoxShadowHost();
+      }
+
+      if (target == null) {
+        return;
+      }
+
       float[] radii = new float[] {0, 0, 0, 0, 0, 0, 0, 0};
       WXStyle style = getDomObject().getStyles();
       if (style != null) {
@@ -886,17 +899,23 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
         }
       }
 
-      View target = mHost;
-      if (this instanceof WXVContainer) {
-        target = ((WXVContainer) this).getBoxShadowHost();
-      }
-
       BoxShadowUtil.setBoxShadow(target, boxShadow.toString(), radii, getInstance().getInstanceViewPortWidth());
     } else {
       WXLogUtils.w("Can not resolve styles");
     }
   }
 
+  protected void clearBoxShadow() {
+    View target = mHost;
+    if (this instanceof WXVContainer) {
+      target = ((WXVContainer) this).getBoxShadowHost();
+    }
+
+    if (target != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+      target.getOverlay().clear();
+    }
+  }
+
   @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
   protected void setAriaHidden(boolean isHidden) {
     View host = getHostView();


[08/18] incubator-weex git commit: * [android] fix flicker caused by coexistence of box-shadow and border

Posted by gu...@apache.org.
* [android] fix flicker caused by coexistence of box-shadow and border


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/64dd40bc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/64dd40bc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/64dd40bc

Branch: refs/heads/master
Commit: 64dd40bc346295c32675a794c79d23e6aa8b693c
Parents: db5b1e0 61ead2a
Author: gurisxie <27...@qq.com>
Authored: Wed Oct 18 15:56:38 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Wed Oct 18 15:57:08 2017 +0800

----------------------------------------------------------------------
 .../taobao/weex/ui/component/WXComponent.java   | 48 +++++++++++++-------
 .../taobao/weex/ui/component/WXVContainer.java  | 25 +++++++++-
 2 files changed, 56 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/64dd40bc/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------


[03/18] incubator-weex git commit: * [android] null judgement

Posted by gu...@apache.org.
* [android] null judgement


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/61ead2a4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/61ead2a4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/61ead2a4

Branch: refs/heads/master
Commit: 61ead2a4226ee0f17863d4c10699167b265fa0ae
Parents: d5731c2
Author: misakuo <mi...@apache.org>
Authored: Wed Oct 11 19:44:16 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Wed Oct 11 19:44:16 2017 +0800

----------------------------------------------------------------------
 .../main/java/com/taobao/weex/ui/component/WXComponent.java    | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ead2a4/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index 3c0c870..add0205 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -43,6 +43,7 @@ import android.view.Menu;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup.MarginLayoutParams;
+import android.view.ViewOverlay;
 import android.widget.FrameLayout;
 
 import com.alibaba.fastjson.JSONArray;
@@ -912,7 +913,10 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
     }
 
     if (target != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
-      target.getOverlay().clear();
+      ViewOverlay overlay = target.getOverlay();
+      if (overlay != null) {
+        overlay.clear();
+      }
     }
   }
 


[04/18] incubator-weex git commit: * [android] fix redundant input event

Posted by gu...@apache.org.
* [android] fix redundant input event


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/92032689
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/92032689
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/92032689

Branch: refs/heads/master
Commit: 92032689e09286adda516ea2df8fec83d680bc40
Parents: 05214a7
Author: misakuo <mi...@apache.org>
Authored: Mon Oct 16 11:23:00 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Mon Oct 16 11:23:00 2017 +0800

----------------------------------------------------------------------
 .../com/taobao/weex/ui/component/AbstractEditComponent.java  | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/92032689/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java
index a8d1963..4ca9d50 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/AbstractEditComponent.java
@@ -221,6 +221,14 @@ public abstract class AbstractEditComponent extends WXComponent<WXEditText> {
 
           mBeforeText = s.toString();
 
+          if (getDomObject() != null && getDomObject().getAttrs() != null) {
+            Object val = getDomObject().getAttrs().get(Constants.Name.VALUE);
+            String valString = WXUtils.getString(val, null);
+            if (mBeforeText != null && mBeforeText.equals(valString)) {
+              return;
+            }
+          }
+
           if (!mIgnoreNextOnInputEvent) {
             fireEvent(Constants.Event.INPUT, s.toString());
           }


[18/18] incubator-weex git commit: * [all] merge from release-0.16

Posted by gu...@apache.org.
* [all] merge from release-0.16


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/ebd058eb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/ebd058eb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/ebd058eb

Branch: refs/heads/master
Commit: ebd058eb1c0ee32ff7e9bd5ca3c69806726760f2
Parents: 556cc06 febb720
Author: gurisxie <27...@qq.com>
Authored: Thu Oct 19 12:17:13 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Thu Oct 19 12:17:56 2017 +0800

----------------------------------------------------------------------
 .travis.yml                                     |  4 --
 .../java/com/alibaba/weex/IndexActivity.java    | 12 -----
 .../main/java/com/taobao/weex/WXSDKEngine.java  |  9 +++-
 .../weex/dom/action/MoveElementAction.java      |  3 ++
 .../ui/component/AbstractEditComponent.java     |  8 +++
 .../taobao/weex/ui/component/WXComponent.java   | 48 +++++++++++------
 .../com/taobao/weex/ui/component/WXImage.java   | 10 ++++
 .../taobao/weex/ui/component/WXScroller.java    |  2 +-
 .../com/taobao/weex/ui/component/WXSlider.java  |  2 +-
 .../weex/ui/component/WXSliderNeighbor.java     |  2 +-
 .../taobao/weex/ui/component/WXVContainer.java  | 46 +++++++++++++++-
 .../ui/component/list/BasicListComponent.java   |  2 +-
 .../list/template/WXRecyclerTemplateList.java   |  2 +-
 .../java/com/taobao/weex/utils/WXLogUtils.java  | 14 ++---
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       | 12 +++++
 .../WeexSDK/Sources/Bridge/WXBridgeContext.m    | 13 +++--
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m | 16 +++---
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m    |  5 +-
 ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h     |  6 +++
 .../WeexSDK/Sources/Monitor/WXExceptionUtils.h  | 29 ++++++++++
 .../WeexSDK/Sources/Monitor/WXExceptionUtils.m  | 57 ++++++++++++++++++++
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |  1 +
 22 files changed, 244 insertions(+), 59 deletions(-)
----------------------------------------------------------------------



[15/18] incubator-weex git commit: * [android] fix imagesave permissions

Posted by gu...@apache.org.
* [android] fix imagesave permissions


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/65c0910d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/65c0910d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/65c0910d

Branch: refs/heads/master
Commit: 65c0910d2ba82bf12733ba7d4cfe498d17e5b0ee
Parents: 5471993
Author: miomin <69...@qq.com>
Authored: Thu Oct 19 11:11:25 2017 +0800
Committer: miomin <69...@qq.com>
Committed: Thu Oct 19 11:11:25 2017 +0800

----------------------------------------------------------------------
 .../src/main/java/com/alibaba/weex/IndexActivity.java   | 12 ------------
 .../main/java/com/taobao/weex/ui/component/WXImage.java | 10 ++++++++++
 2 files changed, 10 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/65c0910d/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
----------------------------------------------------------------------
diff --git a/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
index 866733a..0603363 100644
--- a/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
+++ b/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java
@@ -103,18 +103,6 @@ public class IndexActivity extends AbstractWeexActivity {
     };
 
     LocalBroadcastManager.getInstance(this).registerReceiver(mReloadReceiver, new IntentFilter(WXSDKEngine.JS_FRAMEWORK_RELOAD));
-
-    requestWeexPermission();
-  }
-
-  private void requestWeexPermission() {
-    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
-      if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
-        Toast.makeText(this, "please give me the permission", Toast.LENGTH_SHORT).show();
-      } else {
-        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE);
-      }
-    }
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/65c0910d/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
index 1cf5d02..1c4d062 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXImage.java
@@ -19,6 +19,7 @@
 package com.taobao.weex.ui.component;
 
 import android.Manifest;
+import android.app.Activity;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.graphics.RectF;
@@ -27,6 +28,7 @@ import android.net.Uri;
 import android.os.Build;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.v4.app.ActivityCompat;
 import android.support.v4.content.ContextCompat;
 import android.text.TextUtils;
 import android.widget.ImageView;
@@ -71,6 +73,7 @@ public class WXImage extends WXComponent<ImageView> {
 
   public static final String SUCCEED = "success";
   public static final String ERRORDESC = "errorDesc";
+  private static final int WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE = 0x2;
 
   private String mSrc;
   private int mBlurRadius;
@@ -356,6 +359,13 @@ public class WXImage extends WXComponent<ImageView> {
   public void save(final JSCallback saveStatuCallback) {
 
     if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+      if (getContext() instanceof Activity) {
+        ActivityCompat.requestPermissions((Activity) getContext(),
+                new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE);
+      }
+    }
+
+    if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
       if (saveStatuCallback != null) {
         Map<String, Object> result = new HashMap<>();
         result.put(SUCCEED, false);


[07/18] incubator-weex git commit: * [android] fix bug if application is null log not print out

Posted by gu...@apache.org.
* [android] fix bug if application is null log not print out


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/247ea50a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/247ea50a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/247ea50a

Branch: refs/heads/master
Commit: 247ea50a914afe24ee30d6dafb66f6f76986e7c3
Parents: c2f1aac
Author: atomtong <to...@qq.com>
Authored: Tue Oct 17 17:00:40 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Wed Oct 18 13:04:15 2017 +0800

----------------------------------------------------------------------
 android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/247ea50a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
----------------------------------------------------------------------
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 0296379..3ea86e2 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKEngine.java
@@ -162,7 +162,11 @@ public class WXSDKEngine {
       if(WXEnvironment.isApkDebugable()){
         WXEnvironment.sLogLevel = LogLevel.DEBUG;
       }else{
-        WXEnvironment.sLogLevel = LogLevel.WARN;
+		if(WXEnvironment.sApplication != null){
+		  WXEnvironment.sLogLevel = LogLevel.WARN;
+		}else {
+		  WXLogUtils.e(TAG,"WXEnvironment.sApplication is " + WXEnvironment.sApplication);
+		}
       }
       doInitInternal(application,config);
       WXEnvironment.sSDKInitInvokeTime = System.currentTimeMillis()-start;
@@ -173,6 +177,9 @@ public class WXSDKEngine {
 
   private static void doInitInternal(final Application application,final InitConfig config){
     WXEnvironment.sApplication = application;
+	if(application == null){
+	  WXLogUtils.e(TAG, " doInitInternal application is null");
+	}
     WXEnvironment.JsFrameworkInit = false;
 
     WXBridgeManager.getInstance().post(new Runnable() {


[11/18] incubator-weex git commit: * [test] update travisCI , remove iOS env.

Posted by gu...@apache.org.
* [test] update travisCI , remove iOS env.


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/af35b5f3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/af35b5f3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/af35b5f3

Branch: refs/heads/master
Commit: af35b5f383be592104fdbb1b57d69b0bb1c10e91
Parents: 4c494b2
Author: gurisxie <27...@qq.com>
Authored: Wed Oct 18 17:40:45 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Wed Oct 18 17:40:45 2017 +0800

----------------------------------------------------------------------
 .travis.yml | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/af35b5f3/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index a7bca6f..95624a6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,10 +20,6 @@ matrix:
       - os: linux
         env: TEST_SUITE=android
     include:
-      - os: osx
-        env: TEST_SUITE=ios
-        osx_image: xcode8.1
-        language: objective-c
       - os: linux
         env: TEST_SUITE=android
         jdk: oraclejdk8


[17/18] incubator-weex git commit: * [ios] add jserror upload method, add trigger positions

Posted by gu...@apache.org.
* [ios] add jserror upload method, add trigger positions


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/febb7207
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/febb7207
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/febb7207

Branch: refs/heads/master
Commit: febb72075e26284d2032e79ca626a7e252616b27
Parents: 65c0910 e3b9c10
Author: gurisxie <27...@qq.com>
Authored: Thu Oct 19 11:59:24 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Thu Oct 19 12:00:54 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       | 12 +++++
 .../WeexSDK/Sources/Bridge/WXBridgeContext.m    | 13 +++--
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m | 16 +++---
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m    |  5 +-
 ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h     |  6 +++
 .../WeexSDK/Sources/Monitor/WXExceptionUtils.h  | 29 ++++++++++
 .../WeexSDK/Sources/Monitor/WXExceptionUtils.m  | 57 ++++++++++++++++++++
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |  1 +
 8 files changed, 128 insertions(+), 11 deletions(-)
----------------------------------------------------------------------



[06/18] incubator-weex git commit: * [android] delete redundancy log print logic code

Posted by gu...@apache.org.
* [android] delete redundancy log print logic code


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/ac075c70
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/ac075c70
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/ac075c70

Branch: refs/heads/master
Commit: ac075c70e9ae68a53d66fecace1a91e336f3f39a
Parents: 247ea50
Author: atomtong <to...@qq.com>
Authored: Tue Oct 17 19:43:40 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Wed Oct 18 13:04:15 2017 +0800

----------------------------------------------------------------------
 android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java | 5 -----
 1 file changed, 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ac075c70/android/sdk/src/main/java/com/taobao/weex/utils/WXLogUtils.java
----------------------------------------------------------------------
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 ae6e623..a120ad6 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
@@ -118,13 +118,8 @@ public class WXLogUtils {
   }
 
   public static void d(String tag, String msg) {
-    if (!TextUtils.isEmpty(msg) && !TextUtils.isEmpty(tag)) {
-      log(tag, msg, LogLevel.DEBUG);
-    }
 
     if (WXEnvironment.isApkDebugable() && !TextUtils.isEmpty(msg) && WXEnvironment.sLogLevel.compare(LogLevel.DEBUG) >= 0) {
-      Log.d(tag, msg);
-
       if ("jsLog".equals(tag) && jsLogWatcher != null) {
         if (msg.endsWith("__DEBUG")) {
           jsLogWatcher.onJsLog(Log.DEBUG, msg.replace("__DEBUG", ""));


[12/18] incubator-weex git commit: * [Android] Fix that moveElement doesn't work when parent is not a list

Posted by gu...@apache.org.
* [Android] Fix that moveElement doesn't work when parent is not a list


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/fc7b90e3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/fc7b90e3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/fc7b90e3

Branch: refs/heads/master
Commit: fc7b90e3e18a4fa9c1282d0268f07e8a80f1b014
Parents: af35b5f f4fefab
Author: gurisxie <27...@qq.com>
Authored: Wed Oct 18 17:46:13 2017 +0800
Committer: gurisxie <27...@qq.com>
Committed: Wed Oct 18 17:46:13 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/dom/action/MoveElementAction.java     | 3 +++
 .../src/main/java/com/taobao/weex/ui/component/WXScroller.java | 2 +-
 .../src/main/java/com/taobao/weex/ui/component/WXSlider.java   | 2 +-
 .../java/com/taobao/weex/ui/component/WXSliderNeighbor.java    | 2 +-
 .../main/java/com/taobao/weex/ui/component/WXVContainer.java   | 6 +++++-
 .../com/taobao/weex/ui/component/list/BasicListComponent.java  | 2 +-
 .../ui/component/list/template/WXRecyclerTemplateList.java     | 2 +-
 7 files changed, 13 insertions(+), 6 deletions(-)
----------------------------------------------------------------------



[10/18] incubator-weex git commit: * [Android] Fix that moveElement doesn't work when parent is not a list

Posted by gu...@apache.org.
* [Android] Fix that moveElement doesn't work when parent is not a list


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/f4fefab6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/f4fefab6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/f4fefab6

Branch: refs/heads/master
Commit: f4fefab661c39f4eeb419587b1f7a6380c703311
Parents: 4c494b2
Author: YorkShen <sh...@gmail.com>
Authored: Wed Oct 18 16:13:09 2017 +0800
Committer: YorkShen <sh...@gmail.com>
Committed: Wed Oct 18 16:55:23 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/dom/action/MoveElementAction.java     | 3 +++
 .../src/main/java/com/taobao/weex/ui/component/WXScroller.java | 2 +-
 .../src/main/java/com/taobao/weex/ui/component/WXSlider.java   | 2 +-
 .../java/com/taobao/weex/ui/component/WXSliderNeighbor.java    | 2 +-
 .../main/java/com/taobao/weex/ui/component/WXVContainer.java   | 6 +++++-
 .../com/taobao/weex/ui/component/list/BasicListComponent.java  | 2 +-
 .../ui/component/list/template/WXRecyclerTemplateList.java     | 2 +-
 7 files changed, 13 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f4fefab6/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java b/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java
index 258da68..bbd093c 100644
--- a/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java
+++ b/android/sdk/src/main/java/com/taobao/weex/dom/action/MoveElementAction.java
@@ -91,5 +91,8 @@ final class MoveElementAction implements DOMAction, RenderAction {
     WXVContainer oldParent = component.getParent();
     oldParent.remove(component,false);
     ((WXVContainer) newParent).addChild(component, mNewIndex);
+    if(!component.isVirtualComponent()){
+      ((WXVContainer) newParent).addSubView(component.getHostView(), mNewIndex);
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f4fefab6/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java
index 6cf784f..9e56259 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXScroller.java
@@ -233,7 +233,7 @@ public class WXScroller extends WXVContainer<ViewGroup> implements WXScrollViewL
    * Intercept refresh view and loading view
    */
   @Override
-  protected void addSubView(View child, int index) {
+  public void addSubView(View child, int index) {
     if (child == null || getRealView() == null) {
       return;
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f4fefab6/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSlider.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSlider.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSlider.java
index 1023e3e..ec2d73f 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSlider.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSlider.java
@@ -173,7 +173,7 @@ public class WXSlider extends WXVContainer<FrameLayout> {
   }
 
   @Override
-  protected void addSubView(View view, int index) {
+  public void addSubView(View view, int index) {
     if (view == null || mAdapter == null) {
       return;
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f4fefab6/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSliderNeighbor.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSliderNeighbor.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSliderNeighbor.java
index b1001b7..0899c8d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSliderNeighbor.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXSliderNeighbor.java
@@ -113,7 +113,7 @@ public class WXSliderNeighbor extends WXSlider {
     }
 
     @Override
-    protected void addSubView(View view, final int index) {
+    public void addSubView(View view, final int index) {
         if (view == null || mAdapter == null) {
             return;
         }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f4fefab6/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
index 4570729..ee4bb73 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java
@@ -20,6 +20,9 @@ package com.taobao.weex.ui.component;
 
 import android.content.Context;
 import android.content.Intent;
+import android.support.annotation.RestrictTo;
+import android.support.annotation.RestrictTo.Scope;
+import android.util.Pair;
 import android.support.annotation.Nullable;
 import android.util.Pair;
 import android.view.Menu;
@@ -308,7 +311,8 @@ public abstract class WXVContainer<T extends ViewGroup> extends WXComponent<T> {
     }
   }
 
-  protected void addSubView(View child, int index) {
+  @RestrictTo(Scope.LIBRARY)
+  public void addSubView(View child, int index) {
     if (child == null || getRealView() == null) {
       return;
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f4fefab6/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
index 5649832..c04ed0a 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
@@ -706,7 +706,7 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
    * com.taobao.weex.ui.view.listview.WXRecyclerView}
    */
   @Override
-  protected void addSubView(View child, int index) {
+  public void addSubView(View child, int index) {
 
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/f4fefab6/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
index 1918517..76bcce0 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java
@@ -593,7 +593,7 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp
      * com.taobao.weex.ui.view.listview.WXRecyclerView}
      */
     @Override
-    protected void addSubView(View child, int index) {
+    public void addSubView(View child, int index) {
 
     }