You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by kf...@apache.org on 2017/08/10 12:44:31 UTC

[01/10] incubator-weex git commit: + [ios] support extend call native for third part

Repository: incubator-weex
Updated Branches:
  refs/heads/0.16-dev d1bdd73bc -> 4bf47ed41


+ [ios] support extend call native for third part


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

Branch: refs/heads/0.16-dev
Commit: b3e404937bafa77cee4544c97598c1c4ec6ef2ed
Parents: f102f3f
Author: 齐山 <su...@163.com>
Authored: Sun Jul 23 21:30:45 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Sun Jul 23 21:30:45 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |  4 +++
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m | 14 ++++++++++
 .../Protocol/WXExtendCallNativeProtocol.h       | 27 ++++++++++++++++++++
 3 files changed, 45 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b3e40493/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index d16e630..46f7adb 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -238,6 +238,7 @@
 		C41E1A981DC1FD15009C7F90 /* WXDatePickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C41E1A961DC1FD15009C7F90 /* WXDatePickerManager.m */; };
 		C43C03E81EC8ACA40044C7FF /* WXPrerenderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C43C03E41EC8ACA40044C7FF /* WXPrerenderManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		C43C03E91EC8ACA40044C7FF /* WXPrerenderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C43C03E51EC8ACA40044C7FF /* WXPrerenderManager.m */; };
+		C4424E5B1F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; };
 		C4B3D6D41E6954300013F38D /* WXEditComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B3D6D21E6954300013F38D /* WXEditComponent.h */; };
 		C4B3D6D51E6954300013F38D /* WXEditComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = C4B3D6D31E6954300013F38D /* WXEditComponent.m */; };
 		C4B834271DE69B09007AD27E /* WXPickerModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C4B834251DE69B09007AD27E /* WXPickerModule.m */; };
@@ -555,6 +556,7 @@
 		C41E1A961DC1FD15009C7F90 /* WXDatePickerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXDatePickerManager.m; sourceTree = "<group>"; };
 		C43C03E41EC8ACA40044C7FF /* WXPrerenderManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXPrerenderManager.h; sourceTree = "<group>"; };
 		C43C03E51EC8ACA40044C7FF /* WXPrerenderManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXPrerenderManager.m; sourceTree = "<group>"; };
+		C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeProtocol.h; sourceTree = "<group>"; };
 		C4B3D6D21E6954300013F38D /* WXEditComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXEditComponent.h; sourceTree = "<group>"; };
 		C4B3D6D31E6954300013F38D /* WXEditComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXEditComponent.m; sourceTree = "<group>"; };
 		C4B834251DE69B09007AD27E /* WXPickerModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXPickerModule.m; sourceTree = "<group>"; };
@@ -1002,6 +1004,7 @@
 				74EF31A91DE58AE600667A07 /* WXURLRewriteProtocol.h */,
 				042013AC1E66CD6A001FC79C /* WXValidateProtocol.h */,
 				DC6836E51EBB12B200AD2D84 /* WXConfigCenterProtocol.h */,
+				C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */,
 			);
 			path = Protocol;
 			sourceTree = "<group>";
@@ -1338,6 +1341,7 @@
 				744BEA551D05178F00452B5D /* WXComponent+Display.h in Headers */,
 				741081231CED6756001BC6E5 /* WXComponentFactory.h in Headers */,
 				59D3CA4A1CFC3CE1008835DC /* NSTimer+Weex.h in Headers */,
+				C4424E5B1F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h in Headers */,
 				D334510C1D3E19B80083598A /* WXCanvasModule.h in Headers */,
 				742AD73A1DF98C8B007DC46C /* WXResourceLoader.h in Headers */,
 				746319291C71B92600EFEBD4 /* WXModalUIModule.h in Headers */,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b3e40493/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 ee9406a..f241502 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
@@ -34,6 +34,7 @@
 #import "JSValue+Weex.h"
 #import "WXJSExceptionProtocol.h"
 #import "WXSDKManager.h"
+#import "WXExtendCallNativeProtocol.h"
 
 #import <dlfcn.h>
 
@@ -103,6 +104,9 @@
                                        initWithData:nsdataFromBase64String encoding:NSUTF8StringEncoding];
             return base64Decoded;
         };
+        _jsContext[@"extendCallNative"] = ^(JSValue *value ) {
+            return [weakSelf extendCallNative:[value toDictionary]];
+        };
         
         _jsContext[@"nativeLog"] = ^() {
             static NSDictionary *levelMap;
@@ -496,4 +500,14 @@
         [_timers removeObject:ret];
     }
 }
+
+-(id)extendCallNative:(NSDictionary *)dict
+{
+    id extendCallNative = [WXSDKEngine handlerForProtocol:@protocol(WXExtendCallNativeProtocol)];
+    if(extendCallNative){
+        return [extendCallNative excuteCallNative:dict];
+    }
+    return @(-1);
+}
+
 @end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/b3e40493/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h b/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h
new file mode 100644
index 0000000..5afb1dc
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h
@@ -0,0 +1,27 @@
+/*
+ * 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>
+
+@protocol WXExtendCallNativeProtocol <NSObject>
+
+- (id)excuteCallNative:(NSDictionary *)dict;
+
+@end


[07/10] incubator-weex git commit: Merge branch '0.16-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into ios-native-0.16-dev

Posted by kf...@apache.org.
Merge branch '0.16-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into ios-native-0.16-dev

# Conflicts:
#	ios/playground/WeexDemo/AppDelegate.m


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

Branch: refs/heads/0.16-dev
Commit: 31c696f513d7f6f07571dd3e9b589b47548ebb08
Parents: 816bde1 5894ef6
Author: 齐山 <su...@163.com>
Authored: Thu Aug 10 16:41:07 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Thu Aug 10 16:41:07 2017 +0800

----------------------------------------------------------------------
 .gitignore                                      |     5 +-
 .travis.yml                                     |     8 +-
 android/build.gradle                            |     8 +-
 .../java/com/alibaba/weex/IndexActivity.java    |    14 +
 .../java/com/taobao/weex/WXSDKInstance.java     |    11 +-
 .../main/java/com/taobao/weex/WXSDKManager.java |    10 +
 .../java/com/taobao/weex/bridge/WXBridge.java   |     8 +-
 .../com/taobao/weex/bridge/WXBridgeManager.java |    36 +-
 .../taobao/weex/bridge/WXValidateProcessor.java |     7 +-
 .../java/com/taobao/weex/common/Constants.java  |     1 +
 .../taobao/weex/common/WXWorkThreadManager.java |    48 +
 .../java/com/taobao/weex/dom/WXDomObject.java   |    17 +-
 .../com/taobao/weex/dom/WXTextDomObject.java    |    91 +-
 .../dom/action/AbstractAddElementAction.java    |     2 +-
 .../taobao/weex/dom/action/AnimationAction.java |     1 +
 .../ui/animation/CameraDistanceProperty.java    |    54 +
 .../weex/ui/animation/WXAnimationBean.java      |    86 +-
 .../taobao/weex/ui/component/WXComponent.java   |    16 -
 .../com/taobao/weex/ui/component/WXImage.java   |    68 +
 .../ui/component/list/BasicListComponent.java   |    15 +-
 .../taobao/weex/utils/WXViewToImageUtil.java    |   151 +
 .../java/com/taobao/weex/utils/WXViewUtils.java |     4 +-
 build/build.js                                  |   106 +-
 build/config.js                                 |    54 +-
 build/karma.vue.conf.js                         |     2 +-
 dangerfile.js                                   |    79 +-
 entry.js                                        |    11 +
 examples/vue/components/scroller.vue            |     9 +-
 examples/vue/index.vue                          |     1 +
 examples/vue/modules/picker.vue                 |    64 +
 html5/frameworks/legacy/core/array.js           |     4 +
 html5/frameworks/legacy/core/object.js          |     6 +
 html5/frameworks/legacy/static/create.js        |     7 +-
 html5/frameworks/legacy/vm/directive.js         |     6 +
 html5/frameworks/vanilla/index.js               |    35 +-
 html5/render/vue/README.md                      |    92 +
 html5/render/vue/components/a.js                |    90 +-
 html5/render/vue/components/div.js              |    43 +-
 html5/render/vue/components/image.js            |    76 +-
 html5/render/vue/components/index.js            |    37 +-
 html5/render/vue/components/input.js            |   130 +-
 html5/render/vue/components/scrollable/cell.js  |    39 +
 .../render/vue/components/scrollable/header.js  |   102 +-
 html5/render/vue/components/scrollable/index.js |    48 +
 html5/render/vue/components/scrollable/list.js  |    82 +
 .../vue/components/scrollable/list/cell.js      |    36 -
 .../vue/components/scrollable/list/index.js     |    77 -
 .../vue/components/scrollable/list/listMixin.js |    47 -
 .../vue/components/scrollable/list/style.js     |    34 -
 .../components/scrollable/loading-indicator.js  |    17 +-
 .../render/vue/components/scrollable/loading.js |   141 +-
 .../vue/components/scrollable/mixins/index.js   |    26 +
 .../vue/components/scrollable/mixins/list.js    |    46 +
 .../components/scrollable/mixins/scrollable.js  |   267 +
 .../render/vue/components/scrollable/refresh.js |   157 +-
 .../vue/components/scrollable/scroller.js       |   143 +-
 .../render/vue/components/scrollable/style.css  |    90 +
 .../vue/components/scrollable/waterfall.js      |   573 +-
 html5/render/vue/components/slider/index.js     |    52 +-
 html5/render/vue/components/slider/indicator.js |    18 +-
 .../render/vue/components/slider/slideMixin.js  |    46 +-
 .../vue/components/slider/slider-neighbor.js    |    12 +-
 html5/render/vue/components/slider/slider.css   |    19 +
 html5/render/vue/components/slider/slider.js    |    75 +
 html5/render/vue/components/switch.js           |   114 +-
 html5/render/vue/components/text.js             |    52 +-
 html5/render/vue/components/textarea.js         |   104 +-
 html5/render/vue/components/video.js            |   107 +-
 html5/render/vue/components/web.js              |    98 +-
 html5/render/vue/config.js                      |    10 +-
 html5/render/vue/core/node.js                   |    27 +-
 html5/render/vue/core/style.js                  |    35 -
 html5/render/vue/env/global.js                  |     6 +
 html5/render/vue/env/index.js                   |     5 -
 html5/render/vue/index.js                       |    25 -
 html5/render/vue/lib/gesture.js                 |     6 +
 html5/render/vue/mixins/base.js                 |    71 -
 html5/render/vue/mixins/index.js                |     2 -
 html5/render/vue/mixins/scrollable.js           |   233 -
 html5/render/vue/mixins/style.js                |     4 +-
 html5/render/vue/modules/animation.js           |    36 +-
 html5/render/vue/modules/dom.js                 |    96 +-
 html5/render/vue/modules/globalEvent.js         |     8 +-
 html5/render/vue/modules/index.js               |    36 +-
 html5/render/vue/modules/modal/toast.js         |    23 +-
 html5/render/vue/modules/navigator.js           |    10 +-
 html5/render/vue/modules/webview.js             |    18 +-
 html5/render/vue/styles/base.css                |    86 +-
 html5/render/vue/styles/reset.css               |    19 +
 html5/render/vue/utils/lazyload.js              |    24 +-
 html5/render/vue/utils/perf.js                  |   283 +-
 html5/runtime/callback-manager.js               |    12 +-
 html5/runtime/config.js                         |     5 +-
 html5/runtime/normalize.js                      |   107 +
 html5/runtime/task-center.js                    |    59 +-
 html5/runtime/vdom/document.js                  |     2 +
 html5/runtime/vdom/element.js                   |    15 +-
 html5/test/render/vue/components/list.js        |     2 +-
 html5/test/render/vue/components/switch.js      |     5 +-
 html5/test/render/vue/core/node.js              |     2 +
 html5/test/render/vue/examples/list-cell.js     |     2 +-
 html5/test/render/vue/helper/index.js           |     2 +-
 html5/test/render/vue/helper/main.js            |     3 +-
 html5/test/render/vue/helper/utils.js           |     4 +
 html5/test/render/vue/modules/animation.js      |    12 +-
 html5/test/render/vue/modules/dom.js            |    27 +-
 html5/test/render/vue/modules/globalEvent.js    |     8 +-
 html5/test/render/vue/modules/navigator.js      |     8 +-
 html5/test/render/vue/modules/webview.js        |    10 +-
 html5/test/render/vue/utils/lazyload.js         |    59 +-
 html5/test/render/vue/utils/perf.js             |    94 +-
 html5/test/render/vue/utils/style.js            |    50 +-
 ios/.gitignore                                  |     1 +
 ios/playground/Podfile                          |     2 +-
 .../WeexDemo.xcodeproj/project.pbxproj          |    24 +-
 ios/playground/WeexDemo/AppDelegate.m           |     8 +-
 ios/playground/WeexDemo/Info.plist              |     4 +
 ios/playground/WeexDemo/WXDemoViewController.m  |     2 -
 ios/playground/WeexDemo/WXExtModule.h           |    26 +
 ios/playground/WeexDemo/WXExtModule.m           |    43 +
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |    16 +-
 .../Component/Recycler/WXRecyclerComponent.m    |    58 +-
 .../Recycler/WXRecyclerDragController.h         |    52 +
 .../Recycler/WXRecyclerDragController.m         |   208 +
 .../WeexSDK/Sources/Component/WXAComponent.m    |     1 +
 .../WeexSDK/Sources/Component/WXEditComponent.m |    11 +-
 .../Sources/Component/WXImageComponent.m        |   239 +-
 .../Sources/Component/WXTextAreaComponent.m     |     2 +-
 ios/sdk/WeexSDK/Sources/Component/WXTransform.h |     1 +
 ios/sdk/WeexSDK/Sources/Component/WXTransform.m |    33 +-
 .../Sources/Component/WXVideoComponent.m        |     1 +
 .../WeexSDK/Sources/Component/WXWebComponent.m  |     1 +
 .../WeexSDK/Sources/Loader/WXResourceLoader.m   |     2 +-
 ios/sdk/WeexSDK/Sources/Manager/WXRuleManager.m |     1 +
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m   |     1 +
 .../WeexSDK/Sources/Module/WXAnimationModule.m  |     5 +
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m |     1 +
 .../WeexSDK/Sources/Module/WXWebSocketModule.h  |     1 -
 .../WeexSDK/Sources/Module/WXWebSocketModule.m  |     1 +
 .../Sources/Network/WXResourceResponse.h        |     2 +-
 .../Sources/Protocol/WXURLRewriteProtocol.h     |     2 +-
 ios/sdk/WeexSDK/Sources/Utility/WXDefine.h      |     2 +
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |     1 +
 package.json                                    |    35 +-
 packages/weex-js-framework/.npmignore           |     4 +
 packages/weex-js-framework/index.js             | 26001 +++++++++++++++++
 packages/weex-js-framework/index.min.js         |     1 +
 packages/weex-js-framework/package.json         |    22 +
 packages/weex-js-runtime/.npmignore             |     4 +
 packages/weex-js-runtime/index.js               |  4088 +++
 packages/weex-js-runtime/index.min.js           |     1 +
 packages/weex-js-runtime/index.min.js.gz        |   Bin 0 -> 13215 bytes
 packages/weex-js-runtime/package.json           |    22 +
 packages/weex-legacy-framework/.npmignore       |     4 +
 packages/weex-legacy-framework/index.js         |  5770 ++++
 packages/weex-legacy-framework/index.min.js     |     1 +
 packages/weex-legacy-framework/package.json     |    22 +
 packages/weex-vue-plugins/weex-vue-a/README.md  |     3 +
 .../weex-vue-plugins/weex-vue-a/package.json    |    26 +
 .../weex-vue-plugins/weex-vue-a/src/index.js    |     2 +
 .../weex-vue-animation/README.md                |     3 +
 .../weex-vue-animation/package.json             |    27 +
 .../weex-vue-animation/src/index.js             |     2 +
 .../weex-vue-clipboard/README.md                |     3 +
 .../weex-vue-clipboard/package.json             |    27 +
 .../weex-vue-clipboard/src/index.js             |     2 +
 .../weex-vue-plugins/weex-vue-dom/README.md     |     3 +
 .../weex-vue-plugins/weex-vue-dom/package.json  |    27 +
 .../weex-vue-plugins/weex-vue-dom/src/index.js  |     2 +
 .../weex-vue-plugins/weex-vue-event/README.md   |     3 +
 .../weex-vue-event/package.json                 |    27 +
 .../weex-vue-event/src/index.js                 |     2 +
 .../weex-vue-geolocation/README.md              |     3 +
 .../weex-vue-geolocation/package.json           |    27 +
 .../weex-vue-geolocation/src/index.js           |     2 +
 .../weex-vue-global-event/README.md             |     3 +
 .../weex-vue-global-event/package.json          |    27 +
 .../weex-vue-global-event/src/index.js          |     2 +
 .../weex-vue-plugins/weex-vue-input/README.md   |     3 +
 .../weex-vue-input/package.json                 |    26 +
 .../weex-vue-input/src/index.js                 |     2 +
 .../weex-vue-plugins/weex-vue-modal/README.md   |     3 +
 .../weex-vue-modal/package.json                 |    27 +
 .../weex-vue-modal/src/index.js                 |     2 +
 .../weex-vue-navigator/README.md                |     3 +
 .../weex-vue-navigator/package.json             |    27 +
 .../weex-vue-navigator/src/index.js             |     2 +
 .../weex-vue-plugins/weex-vue-slider/README.md  |     3 +
 .../weex-vue-slider/package.json                |    27 +
 .../weex-vue-slider/src/index.js                |     2 +
 .../weex-vue-plugins/weex-vue-storage/README.md |     3 +
 .../weex-vue-storage/package.json               |    27 +
 .../weex-vue-storage/src/index.js               |     2 +
 .../weex-vue-plugins/weex-vue-stream/README.md  |     3 +
 .../weex-vue-stream/package.json                |    27 +
 .../weex-vue-stream/src/index.js                |     2 +
 .../weex-vue-plugins/weex-vue-switch/README.md  |     3 +
 .../weex-vue-switch/package.json                |    26 +
 .../weex-vue-switch/src/index.js                |     2 +
 .../weex-vue-textarea/.DS_Store                 |   Bin 0 -> 6148 bytes
 .../weex-vue-textarea/README.md                 |     3 +
 .../weex-vue-textarea/package.json              |    26 +
 .../weex-vue-textarea/src/index.js              |     2 +
 .../weex-vue-plugins/weex-vue-video/README.md   |     3 +
 .../weex-vue-video/package.json                 |    26 +
 .../weex-vue-video/src/index.js                 |     2 +
 .../weex-vue-plugins/weex-vue-web/README.md     |     3 +
 .../weex-vue-plugins/weex-vue-web/package.json  |    26 +
 .../weex-vue-plugins/weex-vue-web/src/index.js  |     2 +
 .../weex-vue-websocket/README.md                |     3 +
 .../weex-vue-websocket/package.json             |    27 +
 .../weex-vue-websocket/src/index.js             |     2 +
 .../weex-vue-plugins/weex-vue-webview/README.md |     3 +
 .../weex-vue-webview/package.json               |    27 +
 .../weex-vue-webview/src/index.js               |     2 +
 packages/weex-vue-render/README.md              |    92 +
 packages/weex-vue-render/package.json           |     9 +-
 packages/weex-vue-render/src/index.core.js      |    13 +
 packages/weex-vue-render/src/index.js           |    12 +
 pre-build/native-bundle-main.js                 |    16 +-
 scripts/commit-msg.sh                           |     2 +-
 scripts/dist-vue.sh                             |     2 +-
 test/pages/components/hyperlink_target.vue      |     1 +
 test/pages/components/iconfont.vue              |    71 +
 test/pages/components/input-event.vue           |    65 +
 test/pages/components/refresh-loading.vue       |   115 +
 test/pages/components/switch-event.vue          |    60 +
 test/pages/components/web-event.vue             |    56 +
 test/pages/image-onload.vue                     |    14 +-
 test/pages/include/button.vue                   |   162 +
 test/pages/include/h1.vue                       |    13 +
 test/pages/include/h2.vue                       |    13 +
 test/pages/include/h3.vue                       |    13 +
 test/pages/include/hn.vue                       |    47 +
 test/pages/include/panel.vue                    |   141 +
 test/pages/include/wxc-desc.vue                 |    66 +
 test/pages/modules/animation-translate.vue      |   129 +
 test/pages/modules/clipboard-event.vue          |    57 +
 test/pages/modules/cover-generate.vue           |    53 +
 test/pages/modules/downgrade-event.vue          |    74 +
 test/pages/modules/gesture-longpress.vue        |    75 +
 test/pages/modules/modal-event.vue              |    61 +
 test/pages/modules/picker-event.vue             |    63 +
 test/pages/modules/storage-event.vue            |    59 +
 test/pages/modules/stream-result.vue            |    85 +
 test/run.sh                                     |    30 +-
 test/screenshot/border-android.png              |   Bin 156247 -> 158634 bytes
 test/scripts/components/iconfont.test.js        |    34 +
 test/scripts/components/image-onload.test.js    |    10 +
 test/scripts/components/input-event.test.js     |    36 +
 test/scripts/components/refresh-loading.test.js |    38 +
 test/scripts/components/switch-event.test.js    |    38 +
 test/scripts/components/web-event.test.js       |    30 +
 .../scripts/modules/animation-translate.test.js |    40 +
 test/scripts/modules/clipboard-event.test.js    |    35 +
 test/scripts/modules/downgrade-event.test.js    |    30 +
 test/scripts/modules/gesture-longpress.test.js  |    37 +
 test/scripts/modules/modal-event.test.js        |    35 +
 test/scripts/modules/picker-event.test.js       |    41 +
 test/scripts/modules/storage-event.test.js      |    36 +
 test/scripts/modules/stream-result.test.js      |    34 +
 test/scripts/util.js                            |    41 +
 test/scripts/zcover-generate.js                 |    32 +
 test/serve.sh                                   |     2 +-
 vue.html                                        |    11 +-
 265 files changed, 42656 insertions(+), 2588 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/31c696f5/ios/playground/WeexDemo.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --cc ios/playground/WeexDemo.xcodeproj/project.pbxproj
index 7cfcbd8,1943c69..5c56412
--- a/ios/playground/WeexDemo.xcodeproj/project.pbxproj
+++ b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
@@@ -28,9 -28,13 +28,14 @@@
  		84361D5B1CA10F8E00F43825 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 775BEE8A1C1E8ECC008D1629 /* Assets.xcassets */; };
  		846FC8DA1E1B853100949E7D /* WXSyncTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 7478481D1E0CD4910044500D /* WXSyncTestModule.m */; };
  		846FC8DB1E1B853600949E7D /* WXATViewHierarchyPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFF21D029685001C8592 /* WXATViewHierarchyPlugin.m */; };
+ 		847CAF2B1F39BB6B00551725 /* UIView+UIThreadCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 747DF6671E2F176A005C53A8 /* UIView+UIThreadCheck.m */; };
+ 		847CAF2C1F39BB8A00551725 /* WXATLoggerPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFF01D029685001C8592 /* WXATLoggerPlugin.m */; };
+ 		847CAF2D1F39BBB900551725 /* WXScannerHistoryVC.m in Sources */ = {isa = PBXBuildFile; fileRef = DC5B53681E8CED9400E02125 /* WXScannerHistoryVC.m */; };
+ 		847CAF2E1F39BBFB00551725 /* WXConfigCenterDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */; };
+ 		847CAF311F39E3F100551725 /* WXExtModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 847CAF301F39E3F100551725 /* WXExtModule.m */; };
  		84D7CAC71CE3266C00D48D46 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7475ACA01CD8444A0044E96C /* libsqlite3.0.tbd */; };
  		8A0B5EFFF75BF82EA481983D /* libPods-WeexUITestDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E48C20F443AA337D1FE97622 /* libPods-WeexUITestDemo.a */; };
 +		C47B78D21F299E27001D3B0C /* WXExtendCallNativeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */; };
  		C43CDA031F1C6E01005A6B03 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = C43CDA021F1C6E01005A6B03 /* libz.tbd */; };
  		DC20B8E61ECADA2500845F39 /* WXConfigCenterDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */; };
  		DC5B53691E8CED9400E02125 /* WXScannerHistoryVC.m in Sources */ = {isa = PBXBuildFile; fileRef = DC5B53681E8CED9400E02125 /* WXScannerHistoryVC.m */; };
@@@ -90,9 -93,9 +94,11 @@@
  		775BEE981C1E8ECC008D1629 /* WeexDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WeexDemoTests.m; sourceTree = "<group>"; };
  		775BEE9A1C1E8ECC008D1629 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  		84361D751CA10F8E00F43825 /* WeexUITestDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WeexUITestDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 		847CAF2F1F39E3F100551725 /* WXExtModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtModule.h; sourceTree = "<group>"; };
+ 		847CAF301F39E3F100551725 /* WXExtModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExtModule.m; sourceTree = "<group>"; };
  		9420131417A731ED089B0814 /* Pods-WeexDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo.release.xcconfig"; sourceTree = "<group>"; };
 +		C47B78D01F299E27001D3B0C /* WXExtendCallNativeTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeTest.h; sourceTree = "<group>"; };
 +		C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExtendCallNativeTest.m; sourceTree = "<group>"; };
  		C43CDA021F1C6E01005A6B03 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
  		DC20B8E41ECADA2500845F39 /* WXConfigCenterDefaultImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXConfigCenterDefaultImpl.h; sourceTree = "<group>"; };
  		DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXConfigCenterDefaultImpl.m; sourceTree = "<group>"; };

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/31c696f5/ios/playground/WeexDemo/AppDelegate.m
----------------------------------------------------------------------
diff --cc ios/playground/WeexDemo/AppDelegate.m
index d8472cd,19c702e..0414933
--- a/ios/playground/WeexDemo/AppDelegate.m
+++ b/ios/playground/WeexDemo/AppDelegate.m
@@@ -119,9 -120,9 +120,9 @@@
      [WXSDKEngine registerComponent:@"select" withClass:NSClassFromString(@"WXSelectComponent")];
      [WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
      [WXSDKEngine registerModule:@"syncTest" withClass:[WXSyncTestModule class]];
 +    [WXSDKEngine registerExtendCallNative:@"test" withClass:NSClassFromString(@"WXExtendCallNativeTest")];
-     
+     [WXSDKEngine registerModule:@"ext" withClass:[WXExtModule class]];
      
 -    
  #if !(TARGET_IPHONE_SIMULATOR)
      [self checkUpdate];
  #endif

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/31c696f5/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------


[05/10] incubator-weex git commit: Merge branch '0.16-dev' into ios-native-0.16-dev

Posted by kf...@apache.org.
Merge branch '0.16-dev' into ios-native-0.16-dev

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

Branch: refs/heads/0.16-dev
Commit: 944223557851cafc7dd4704e4c917d314ac23aef
Parents: 4d78365 8b9845e
Author: 齐山 <su...@163.com>
Authored: Thu Aug 10 14:27:41 2017 +0800
Committer: GitHub <no...@github.com>
Committed: Thu Aug 10 14:27:41 2017 +0800

----------------------------------------------------------------------
 .gitignore                                      |     5 +-
 .../java/com/alibaba/weex/IndexActivity.java    |    14 +
 .../java/com/taobao/weex/WXSDKInstance.java     |    11 +-
 .../main/java/com/taobao/weex/WXSDKManager.java |    10 +
 .../java/com/taobao/weex/bridge/WXBridge.java   |     8 +-
 .../com/taobao/weex/bridge/WXBridgeManager.java |    36 +-
 .../taobao/weex/bridge/WXValidateProcessor.java |     7 +-
 .../taobao/weex/common/WXWorkThreadManager.java |    48 +
 .../java/com/taobao/weex/dom/WXDomObject.java   |    17 +-
 .../dom/action/AbstractAddElementAction.java    |     2 +-
 .../com/taobao/weex/ui/component/WXImage.java   |    68 +
 .../ui/component/list/BasicListComponent.java   |    15 +-
 .../taobao/weex/utils/WXViewToImageUtil.java    |   151 +
 build/build.js                                  |   106 +-
 build/config.js                                 |    54 +-
 build/karma.vue.conf.js                         |     2 +-
 dangerfile.js                                   |    79 +-
 entry.js                                        |    11 +
 examples/vue/components/scroller.vue            |     9 +-
 examples/vue/index.vue                          |     1 +
 examples/vue/modules/picker.vue                 |    64 +
 html5/frameworks/legacy/core/array.js           |     4 +
 html5/frameworks/legacy/core/object.js          |     6 +
 html5/frameworks/legacy/static/create.js        |     7 +-
 html5/frameworks/legacy/vm/directive.js         |     6 +
 html5/frameworks/vanilla/index.js               |    35 +-
 html5/render/vue/README.md                      |    92 +
 html5/render/vue/components/a.js                |    90 +-
 html5/render/vue/components/div.js              |    43 +-
 html5/render/vue/components/image.js            |    76 +-
 html5/render/vue/components/index.js            |    37 +-
 html5/render/vue/components/input.js            |   130 +-
 html5/render/vue/components/scrollable/cell.js  |    39 +
 .../render/vue/components/scrollable/header.js  |   102 +-
 html5/render/vue/components/scrollable/index.js |    48 +
 html5/render/vue/components/scrollable/list.js  |    82 +
 .../vue/components/scrollable/list/cell.js      |    36 -
 .../vue/components/scrollable/list/index.js     |    77 -
 .../vue/components/scrollable/list/listMixin.js |    47 -
 .../vue/components/scrollable/list/style.js     |    34 -
 .../components/scrollable/loading-indicator.js  |    17 +-
 .../render/vue/components/scrollable/loading.js |   141 +-
 .../vue/components/scrollable/mixins/index.js   |    26 +
 .../vue/components/scrollable/mixins/list.js    |    46 +
 .../components/scrollable/mixins/scrollable.js  |   267 +
 .../render/vue/components/scrollable/refresh.js |   157 +-
 .../vue/components/scrollable/scroller.js       |   143 +-
 .../render/vue/components/scrollable/style.css  |    90 +
 .../vue/components/scrollable/waterfall.js      |   573 +-
 html5/render/vue/components/slider/index.js     |    52 +-
 html5/render/vue/components/slider/indicator.js |    18 +-
 .../render/vue/components/slider/slideMixin.js  |    46 +-
 .../vue/components/slider/slider-neighbor.js    |    12 +-
 html5/render/vue/components/slider/slider.css   |    19 +
 html5/render/vue/components/slider/slider.js    |    75 +
 html5/render/vue/components/switch.js           |   114 +-
 html5/render/vue/components/text.js             |    52 +-
 html5/render/vue/components/textarea.js         |   104 +-
 html5/render/vue/components/video.js            |   107 +-
 html5/render/vue/components/web.js              |    98 +-
 html5/render/vue/config.js                      |    10 +-
 html5/render/vue/core/node.js                   |    27 +-
 html5/render/vue/core/style.js                  |    35 -
 html5/render/vue/env/global.js                  |     6 +
 html5/render/vue/env/index.js                   |     5 -
 html5/render/vue/index.js                       |    25 -
 html5/render/vue/lib/gesture.js                 |     6 +
 html5/render/vue/mixins/base.js                 |    71 -
 html5/render/vue/mixins/index.js                |     2 -
 html5/render/vue/mixins/scrollable.js           |   233 -
 html5/render/vue/mixins/style.js                |     4 +-
 html5/render/vue/modules/animation.js           |    36 +-
 html5/render/vue/modules/dom.js                 |    96 +-
 html5/render/vue/modules/globalEvent.js         |     8 +-
 html5/render/vue/modules/index.js               |    36 +-
 html5/render/vue/modules/modal/toast.js         |    23 +-
 html5/render/vue/modules/navigator.js           |    10 +-
 html5/render/vue/modules/webview.js             |    18 +-
 html5/render/vue/styles/base.css                |    86 +-
 html5/render/vue/styles/reset.css               |    19 +
 html5/render/vue/utils/lazyload.js              |    24 +-
 html5/render/vue/utils/perf.js                  |   283 +-
 html5/runtime/callback-manager.js               |    12 +-
 html5/runtime/config.js                         |     5 +-
 html5/runtime/normalize.js                      |   107 +
 html5/runtime/task-center.js                    |    61 +-
 html5/runtime/vdom/document.js                  |     2 +
 html5/runtime/vdom/element.js                   |    15 +-
 html5/test/render/vue/components/list.js        |     2 +-
 html5/test/render/vue/components/switch.js      |     5 +-
 html5/test/render/vue/core/node.js              |     2 +
 html5/test/render/vue/examples/list-cell.js     |     2 +-
 html5/test/render/vue/helper/index.js           |     2 +-
 html5/test/render/vue/helper/main.js            |     3 +-
 html5/test/render/vue/helper/utils.js           |     4 +
 html5/test/render/vue/modules/animation.js      |    12 +-
 html5/test/render/vue/modules/dom.js            |    27 +-
 html5/test/render/vue/modules/globalEvent.js    |     8 +-
 html5/test/render/vue/modules/navigator.js      |     8 +-
 html5/test/render/vue/modules/webview.js        |    10 +-
 html5/test/render/vue/utils/lazyload.js         |    59 +-
 html5/test/render/vue/utils/perf.js             |    94 +-
 html5/test/render/vue/utils/style.js            |    50 +-
 ios/.gitignore                                  |     1 +
 ios/playground/Podfile                          |     2 +-
 .../WeexDemo.xcodeproj/project.pbxproj          |    24 +-
 ios/playground/WeexDemo/AppDelegate.m           |     8 +-
 ios/playground/WeexDemo/Info.plist              |     4 +
 ios/playground/WeexDemo/WXDemoViewController.m  |     2 -
 ios/playground/WeexDemo/WXExtModule.h           |    26 +
 ios/playground/WeexDemo/WXExtModule.m           |    43 +
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |    16 +-
 .../Component/Recycler/WXRecyclerComponent.m    |    58 +-
 .../Recycler/WXRecyclerDragController.h         |    52 +
 .../Recycler/WXRecyclerDragController.m         |   208 +
 .../WeexSDK/Sources/Component/WXAComponent.m    |     1 +
 .../WeexSDK/Sources/Component/WXEditComponent.m |    11 +-
 .../Sources/Component/WXImageComponent.m        |   239 +-
 .../Sources/Component/WXTextAreaComponent.m     |     2 +-
 ios/sdk/WeexSDK/Sources/Component/WXTransform.h |     1 +
 ios/sdk/WeexSDK/Sources/Component/WXTransform.m |    33 +-
 .../Sources/Component/WXVideoComponent.m        |     1 +
 .../WeexSDK/Sources/Component/WXWebComponent.m  |     1 +
 .../WeexSDK/Sources/Loader/WXResourceLoader.m   |     2 +-
 ios/sdk/WeexSDK/Sources/Manager/WXRuleManager.m |     1 +
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m   |     1 +
 .../WeexSDK/Sources/Module/WXAnimationModule.m  |     5 +
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m |     1 +
 .../WeexSDK/Sources/Module/WXWebSocketModule.h  |     1 -
 .../WeexSDK/Sources/Module/WXWebSocketModule.m  |     1 +
 .../Sources/Network/WXResourceResponse.h        |     2 +-
 .../Sources/Protocol/WXURLRewriteProtocol.h     |     2 +-
 ios/sdk/WeexSDK/Sources/Utility/WXDefine.h      |     2 +
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |     1 +
 package.json                                    |    35 +-
 packages/weex-js-framework/.npmignore           |     4 +
 packages/weex-js-framework/index.js             | 25150 +++++++++++++++++
 packages/weex-js-framework/index.min.js         |     1 +
 packages/weex-js-framework/package.json         |    22 +
 packages/weex-js-runtime/.npmignore             |     4 +
 packages/weex-js-runtime/index.js               |  3906 +++
 packages/weex-js-runtime/index.min.js           |     1 +
 packages/weex-js-runtime/index.min.js.gz        |   Bin 0 -> 12588 bytes
 packages/weex-js-runtime/package.json           |    22 +
 packages/weex-legacy-framework/.npmignore       |     4 +
 packages/weex-legacy-framework/index.js         |  5770 ++++
 packages/weex-legacy-framework/index.min.js     |     1 +
 packages/weex-legacy-framework/package.json     |    22 +
 packages/weex-vue-plugins/weex-vue-a/README.md  |     3 +
 .../weex-vue-plugins/weex-vue-a/package.json    |    26 +
 .../weex-vue-plugins/weex-vue-a/src/index.js    |     2 +
 .../weex-vue-animation/README.md                |     3 +
 .../weex-vue-animation/package.json             |    27 +
 .../weex-vue-animation/src/index.js             |     2 +
 .../weex-vue-clipboard/README.md                |     3 +
 .../weex-vue-clipboard/package.json             |    27 +
 .../weex-vue-clipboard/src/index.js             |     2 +
 .../weex-vue-plugins/weex-vue-dom/README.md     |     3 +
 .../weex-vue-plugins/weex-vue-dom/package.json  |    27 +
 .../weex-vue-plugins/weex-vue-dom/src/index.js  |     2 +
 .../weex-vue-plugins/weex-vue-event/README.md   |     3 +
 .../weex-vue-event/package.json                 |    27 +
 .../weex-vue-event/src/index.js                 |     2 +
 .../weex-vue-geolocation/README.md              |     3 +
 .../weex-vue-geolocation/package.json           |    27 +
 .../weex-vue-geolocation/src/index.js           |     2 +
 .../weex-vue-global-event/README.md             |     3 +
 .../weex-vue-global-event/package.json          |    27 +
 .../weex-vue-global-event/src/index.js          |     2 +
 .../weex-vue-plugins/weex-vue-input/README.md   |     3 +
 .../weex-vue-input/package.json                 |    26 +
 .../weex-vue-input/src/index.js                 |     2 +
 .../weex-vue-plugins/weex-vue-modal/README.md   |     3 +
 .../weex-vue-modal/package.json                 |    27 +
 .../weex-vue-modal/src/index.js                 |     2 +
 .../weex-vue-navigator/README.md                |     3 +
 .../weex-vue-navigator/package.json             |    27 +
 .../weex-vue-navigator/src/index.js             |     2 +
 .../weex-vue-plugins/weex-vue-slider/README.md  |     3 +
 .../weex-vue-slider/package.json                |    27 +
 .../weex-vue-slider/src/index.js                |     2 +
 .../weex-vue-plugins/weex-vue-storage/README.md |     3 +
 .../weex-vue-storage/package.json               |    27 +
 .../weex-vue-storage/src/index.js               |     2 +
 .../weex-vue-plugins/weex-vue-stream/README.md  |     3 +
 .../weex-vue-stream/package.json                |    27 +
 .../weex-vue-stream/src/index.js                |     2 +
 .../weex-vue-plugins/weex-vue-switch/README.md  |     3 +
 .../weex-vue-switch/package.json                |    26 +
 .../weex-vue-switch/src/index.js                |     2 +
 .../weex-vue-textarea/.DS_Store                 |   Bin 0 -> 6148 bytes
 .../weex-vue-textarea/README.md                 |     3 +
 .../weex-vue-textarea/package.json              |    26 +
 .../weex-vue-textarea/src/index.js              |     2 +
 .../weex-vue-plugins/weex-vue-video/README.md   |     3 +
 .../weex-vue-video/package.json                 |    26 +
 .../weex-vue-video/src/index.js                 |     2 +
 .../weex-vue-plugins/weex-vue-web/README.md     |     3 +
 .../weex-vue-plugins/weex-vue-web/package.json  |    26 +
 .../weex-vue-plugins/weex-vue-web/src/index.js  |     2 +
 .../weex-vue-websocket/README.md                |     3 +
 .../weex-vue-websocket/package.json             |    27 +
 .../weex-vue-websocket/src/index.js             |     2 +
 .../weex-vue-plugins/weex-vue-webview/README.md |     3 +
 .../weex-vue-webview/package.json               |    27 +
 .../weex-vue-webview/src/index.js               |     2 +
 packages/weex-vue-render/README.md              |    92 +
 packages/weex-vue-render/package.json           |     9 +-
 packages/weex-vue-render/src/index.core.js      |    13 +
 packages/weex-vue-render/src/index.js           |    12 +
 pre-build/native-bundle-main.js                 |    16 +-
 scripts/commit-msg.sh                           |     2 +-
 scripts/dist-vue.sh                             |     2 +-
 test/pages/components/hyperlink_target.vue      |     1 +
 test/pages/components/iconfont.vue              |    71 +
 test/pages/components/input-event.vue           |    65 +
 test/pages/components/refresh-loading.vue       |   115 +
 test/pages/components/switch-event.vue          |    60 +
 test/pages/components/web-event.vue             |    56 +
 test/pages/image-onload.vue                     |    14 +-
 test/pages/include/button.vue                   |   162 +
 test/pages/include/h1.vue                       |    13 +
 test/pages/include/h2.vue                       |    13 +
 test/pages/include/h3.vue                       |    13 +
 test/pages/include/hn.vue                       |    47 +
 test/pages/include/panel.vue                    |   141 +
 test/pages/include/wxc-desc.vue                 |    66 +
 test/pages/modules/animation-translate.vue      |   129 +
 test/pages/modules/clipboard-event.vue          |    57 +
 test/pages/modules/cover-generate.vue           |    53 +
 test/pages/modules/downgrade-event.vue          |    74 +
 test/pages/modules/gesture-longpress.vue        |    75 +
 test/pages/modules/modal-event.vue              |    61 +
 test/pages/modules/picker-event.vue             |    63 +
 test/pages/modules/storage-event.vue            |    59 +
 test/pages/modules/stream-result.vue            |    85 +
 test/run.sh                                     |    30 +-
 test/screenshot/border-android.png              |   Bin 156247 -> 158634 bytes
 test/scripts/components/iconfont.test.js        |    34 +
 test/scripts/components/image-onload.test.js    |    10 +
 test/scripts/components/input-event.test.js     |    36 +
 test/scripts/components/refresh-loading.test.js |    38 +
 test/scripts/components/switch-event.test.js    |    38 +
 test/scripts/components/web-event.test.js       |    30 +
 .../scripts/modules/animation-translate.test.js |    40 +
 test/scripts/modules/clipboard-event.test.js    |    35 +
 test/scripts/modules/downgrade-event.test.js    |    30 +
 test/scripts/modules/gesture-longpress.test.js  |    37 +
 test/scripts/modules/modal-event.test.js        |    35 +
 test/scripts/modules/picker-event.test.js       |    41 +
 test/scripts/modules/storage-event.test.js      |    36 +
 test/scripts/modules/stream-result.test.js      |    34 +
 test/scripts/util.js                            |    41 +
 test/scripts/zcover-generate.js                 |    32 +
 test/serve.sh                                   |     2 +-
 vue.html                                        |    11 +-
 256 files changed, 41438 insertions(+), 2506 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/94422355/ios/playground/WeexDemo.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --cc ios/playground/WeexDemo.xcodeproj/project.pbxproj
index 7cfcbd8,1943c69..5c56412
--- a/ios/playground/WeexDemo.xcodeproj/project.pbxproj
+++ b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
@@@ -28,9 -28,13 +28,14 @@@
  		84361D5B1CA10F8E00F43825 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 775BEE8A1C1E8ECC008D1629 /* Assets.xcassets */; };
  		846FC8DA1E1B853100949E7D /* WXSyncTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 7478481D1E0CD4910044500D /* WXSyncTestModule.m */; };
  		846FC8DB1E1B853600949E7D /* WXATViewHierarchyPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFF21D029685001C8592 /* WXATViewHierarchyPlugin.m */; };
+ 		847CAF2B1F39BB6B00551725 /* UIView+UIThreadCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 747DF6671E2F176A005C53A8 /* UIView+UIThreadCheck.m */; };
+ 		847CAF2C1F39BB8A00551725 /* WXATLoggerPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFF01D029685001C8592 /* WXATLoggerPlugin.m */; };
+ 		847CAF2D1F39BBB900551725 /* WXScannerHistoryVC.m in Sources */ = {isa = PBXBuildFile; fileRef = DC5B53681E8CED9400E02125 /* WXScannerHistoryVC.m */; };
+ 		847CAF2E1F39BBFB00551725 /* WXConfigCenterDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */; };
+ 		847CAF311F39E3F100551725 /* WXExtModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 847CAF301F39E3F100551725 /* WXExtModule.m */; };
  		84D7CAC71CE3266C00D48D46 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7475ACA01CD8444A0044E96C /* libsqlite3.0.tbd */; };
  		8A0B5EFFF75BF82EA481983D /* libPods-WeexUITestDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E48C20F443AA337D1FE97622 /* libPods-WeexUITestDemo.a */; };
 +		C47B78D21F299E27001D3B0C /* WXExtendCallNativeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */; };
  		C43CDA031F1C6E01005A6B03 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = C43CDA021F1C6E01005A6B03 /* libz.tbd */; };
  		DC20B8E61ECADA2500845F39 /* WXConfigCenterDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */; };
  		DC5B53691E8CED9400E02125 /* WXScannerHistoryVC.m in Sources */ = {isa = PBXBuildFile; fileRef = DC5B53681E8CED9400E02125 /* WXScannerHistoryVC.m */; };
@@@ -90,9 -93,9 +94,11 @@@
  		775BEE981C1E8ECC008D1629 /* WeexDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WeexDemoTests.m; sourceTree = "<group>"; };
  		775BEE9A1C1E8ECC008D1629 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  		84361D751CA10F8E00F43825 /* WeexUITestDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WeexUITestDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 		847CAF2F1F39E3F100551725 /* WXExtModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtModule.h; sourceTree = "<group>"; };
+ 		847CAF301F39E3F100551725 /* WXExtModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExtModule.m; sourceTree = "<group>"; };
  		9420131417A731ED089B0814 /* Pods-WeexDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo.release.xcconfig"; sourceTree = "<group>"; };
 +		C47B78D01F299E27001D3B0C /* WXExtendCallNativeTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeTest.h; sourceTree = "<group>"; };
 +		C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExtendCallNativeTest.m; sourceTree = "<group>"; };
  		C43CDA021F1C6E01005A6B03 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
  		DC20B8E41ECADA2500845F39 /* WXConfigCenterDefaultImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXConfigCenterDefaultImpl.h; sourceTree = "<group>"; };
  		DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXConfigCenterDefaultImpl.m; sourceTree = "<group>"; };

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/94422355/ios/playground/WeexDemo/AppDelegate.m
----------------------------------------------------------------------
diff --cc ios/playground/WeexDemo/AppDelegate.m
index d8472cd,19c702e..0414933
--- a/ios/playground/WeexDemo/AppDelegate.m
+++ b/ios/playground/WeexDemo/AppDelegate.m
@@@ -119,9 -120,9 +120,9 @@@
      [WXSDKEngine registerComponent:@"select" withClass:NSClassFromString(@"WXSelectComponent")];
      [WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
      [WXSDKEngine registerModule:@"syncTest" withClass:[WXSyncTestModule class]];
 +    [WXSDKEngine registerExtendCallNative:@"test" withClass:NSClassFromString(@"WXExtendCallNativeTest")];
-     
+     [WXSDKEngine registerModule:@"ext" withClass:[WXExtModule class]];
      
 -    
  #if !(TARGET_IPHONE_SIMULATOR)
      [self checkUpdate];
  #endif

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/94422355/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------


[08/10] incubator-weex git commit: Merge branch 'ios-native-0.16-dev' of https://github.com/kfeagle/incubator-weex into ios-native-0.16-dev

Posted by kf...@apache.org.
Merge branch 'ios-native-0.16-dev' of https://github.com/kfeagle/incubator-weex into ios-native-0.16-dev


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

Branch: refs/heads/0.16-dev
Commit: abee137ba167f9903b26370e60a5f7c68b6dc91d
Parents: 31c696f 9442235
Author: 齐山 <su...@163.com>
Authored: Thu Aug 10 16:41:53 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Thu Aug 10 16:41:53 2017 +0800

----------------------------------------------------------------------

----------------------------------------------------------------------



[04/10] incubator-weex git commit: + [ios] update native logic

Posted by kf...@apache.org.
+ [ios] update native logic


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

Branch: refs/heads/0.16-dev
Commit: 4d78365d0099bebd598351959ac0c4a0e0a30dc0
Parents: 5100991
Author: 齐山 <su...@163.com>
Authored: Tue Aug 8 16:38:23 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Aug 8 16:38:23 2017 +0800

----------------------------------------------------------------------
 examples/vue/hello.vue                          |  2 +-
 ios/playground/WeexDemo/AppDelegate.m           |  2 +
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h    | 10 +++++
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m    |  6 +++
 .../Sources/Manager/WXExtendCallNativeManager.h |  5 ++-
 .../Sources/Manager/WXExtendCallNativeManager.m | 45 +++++++++++++++++++-
 6 files changed, 65 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4d78365d/examples/vue/hello.vue
----------------------------------------------------------------------
diff --git a/examples/vue/hello.vue b/examples/vue/hello.vue
index e387e5a..8309aaa 100644
--- a/examples/vue/hello.vue
+++ b/examples/vue/hello.vue
@@ -41,7 +41,7 @@
         this.target = 'Weex'
         console.log('target:', this.target)
         var dict = extendCallNative({
-          'className':'WXExtendCallNativeTest'
+          'className':'test'
         })
         modal.toast({
           'message': dict['value'],

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4d78365d/ios/playground/WeexDemo/AppDelegate.m
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/AppDelegate.m b/ios/playground/WeexDemo/AppDelegate.m
index 4d9b9cd..d8472cd 100644
--- a/ios/playground/WeexDemo/AppDelegate.m
+++ b/ios/playground/WeexDemo/AppDelegate.m
@@ -119,6 +119,8 @@
     [WXSDKEngine registerComponent:@"select" withClass:NSClassFromString(@"WXSelectComponent")];
     [WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
     [WXSDKEngine registerModule:@"syncTest" withClass:[WXSyncTestModule class]];
+    [WXSDKEngine registerExtendCallNative:@"test" withClass:NSClassFromString(@"WXExtendCallNativeTest")];
+    
     
 #if !(TARGET_IPHONE_SIMULATOR)
     [self checkUpdate];

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4d78365d/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
index 32a26d1..5e7b1e7 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
@@ -49,6 +49,16 @@
 + (void)registerComponent:(NSString *)name withClass:(Class)clazz;
 
 /**
+ * @abstract Registers a extendCallNative Class for a given name
+ *
+ * @param name The extendCallNative name to register
+ *
+ * @param clazz The extendCallNative subclass to register
+ *
+ **/
++ (void)registerExtendCallNative:(NSString *)name withClass:(Class)clazz;
+
+/**
  * @abstract Registers a component for a given name and specific properties
  *
  * @param name The component name to register

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4d78365d/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 b95ad9d..7e8d99c 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
@@ -37,6 +37,7 @@
 #import "WXAssert.h"
 #import "WXLog.h"
 #import "WXUtility.h"
+#import "WXExtendCallNativeManager.h"
 
 @implementation WXSDKEngine
 
@@ -114,6 +115,11 @@
     [self registerComponent:name withClass:clazz withProperties: @{@"append":@"tree"}];
 }
 
++ (void)registerExtendCallNative:(NSString *)name withClass:(Class)clazz
+{
+    [WXExtendCallNativeManager registerExtendCallNative:name withClass:clazz];
+}
+
 + (void)registerComponent:(NSString *)name withClass:(Class)clazz withProperties:(NSDictionary *)properties
 {
     if (!name || !clazz) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4d78365d/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
index 20c3e7d..cb5fea6 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
@@ -10,6 +10,7 @@
 
 @interface WXExtendCallNativeManager : NSObject
 
-+(id)sendExtendCallNativeEvent:(NSDictionary *)parameters;
-
++ (id)sendExtendCallNativeEvent:(NSDictionary *)parameters;
++ (void)registerExtendCallNative:(NSString *)name withClass:(Class)clazz;
++ (Class)classWithComponentName:(NSString *)name;
 @end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4d78365d/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
index 6fbdd02..58a7cdd 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
@@ -10,13 +10,54 @@
 #import "WXExtendCallNativeProtocol.h"
 #import <objc/runtime.h>
 
+@interface WXExtendCallNativeManager ()
+
+@property (nonatomic, strong) NSMutableDictionary *names;
+
+@end
+
 @implementation WXExtendCallNativeManager
+{
+    NSLock *_configLock;
+}
++ (instancetype) sharedInstance{
+    
+    static WXExtendCallNativeManager *instance = nil;
+    static dispatch_once_t once;
+    
+    dispatch_once(&once, ^{
+        instance = [[WXExtendCallNativeManager alloc] initPrivate];
+    });
+    
+    return instance;
+}
+
+- (instancetype) initPrivate{
+    self = [super init];
+    if(self){
+        _configLock = [[NSLock alloc] init];
+        self.names = [NSMutableDictionary new];
+    }
+    
+    return self;
+}
+
++ (void)registerExtendCallNative:(NSString *)name withClass:(Class)clazz
+{
+    [[WXExtendCallNativeManager sharedInstance].names setObject:NSStringFromClass(clazz) forKey:name];
+}
+
++ (Class)classWithExtendCallNativeName:(NSString *)name
+{
+    NSString *clazz = [[WXExtendCallNativeManager sharedInstance].names objectForKey:name];
+    return NSClassFromString(clazz);
+}
 
 +(id)sendExtendCallNativeEvent:(NSDictionary *)parameters
 {
     if(parameters[@"className"]){
-        Class<WXExtendCallNativeProtocol> receiveClass = NSClassFromString(parameters[@"className"]);
-        if(class_conformsToProtocol(receiveClass,@protocol(WXExtendCallNativeProtocol))){
+        Class<WXExtendCallNativeProtocol> receiveClass = [self classWithExtendCallNativeName:parameters[@"className"]];
+        if(receiveClass && class_conformsToProtocol(receiveClass,@protocol(WXExtendCallNativeProtocol))){
             BOOL receivedItem = [receiveClass checkParameters:parameters];
             if(receivedItem){
                 return [receiveClass excuteCallNative:parameters];


[10/10] incubator-weex git commit: Merge branch '0.16-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into ios-native-0.16-dev

Posted by kf...@apache.org.
Merge branch '0.16-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into ios-native-0.16-dev

# Conflicts:
#	ios/sdk/WeexSDK.xcodeproj/project.pbxproj


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

Branch: refs/heads/0.16-dev
Commit: 4bf47ed4131b2d027bdc772dd41462e986e22ce4
Parents: 4df48bc d1bdd73
Author: 齐山 <su...@163.com>
Authored: Thu Aug 10 20:43:58 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Thu Aug 10 20:43:58 2017 +0800

----------------------------------------------------------------------
 examples/vue/modules/websocket.vue              |  22 ++-
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |  10 ++
 .../WeexSDK/Sources/Bridge/WXBridgeContext.m    |  35 ++--
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m |  10 +-
 .../Sources/Component/WXScrollerComponent.m     |   3 +-
 .../WeexSDK/Sources/Component/WXTextComponent.m |   5 +-
 ios/sdk/WeexSDK/Sources/Debug/WXDebugTool.h     |   4 +
 ios/sdk/WeexSDK/Sources/Debug/WXDebugTool.m     |  10 ++
 .../WeexSDK/Sources/Loader/WXWebSocketLoader.h  |   2 +-
 .../WeexSDK/Sources/Loader/WXWebSocketLoader.m  |   2 +-
 .../WeexSDK/Sources/Manager/WXBridgeManager.m   |   4 +
 .../Sources/Manager/WXComponentFactory.h        |   1 +
 .../Sources/Manager/WXComponentFactory.m        |  23 +++
 .../Sources/Manager/WXComponentManager.m        |  18 +-
 .../WeexSDK/Sources/Manager/WXModuleFactory.h   |   6 +
 .../WeexSDK/Sources/Manager/WXModuleFactory.m   |  24 +++
 .../WeexSDK/Sources/Manager/WXTracingManager.h  |  33 +++-
 .../WeexSDK/Sources/Manager/WXTracingManager.m  | 169 ++++++++++++++++---
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |   1 -
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m   |   6 +-
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m |  13 ++
 .../WeexSDK/Sources/Module/WXWebSocketModule.m  |  16 +-
 ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.m     |   9 +
 .../Sources/Protocol/WXAppMonitorProtocol.h     |   2 +
 .../Sources/Protocol/WXTracingProtocol.h        |  29 ++++
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.h     |  12 ++
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.m     |  22 +++
 .../Sources/View/WXComponent+ViewManagement.m   |   1 -
 .../Sources/WebSocket/WXWebSocketDefaultImpl.m  |   2 +-
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |   1 +
 30 files changed, 428 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4bf47ed4/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --cc ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index 7f19a7c,336161c..809c2a6
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@@ -236,16 -236,10 +236,18 @@@
  		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 */; };
 +		C42E8FAB1F3C7C09001EBE9D /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
 +		C42E8FAC1F3C7C3B001EBE9D /* WXExtendCallNativeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */; };
 +		C42E8FAD1F3C7C3F001EBE9D /* WXExtendCallNativeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */; };
 +		C42E8FAE1F3C7C49001EBE9D /* WXRecyclerDragController.m in Sources */ = {isa = PBXBuildFile; fileRef = DC7764911F3C2CA300B5727E /* WXRecyclerDragController.m */; };
 +		C42E8FAF1F3C7C4B001EBE9D /* WXRecyclerDragController.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7764921F3C2CA300B5727E /* WXRecyclerDragController.h */; };
+ 		C42E8F9B1F39DF07001EBE9D /* WXTracingProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C42E8F991F39DF07001EBE9D /* WXTracingProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 		C42E8FAA1F3C7AA1001EBE9D /* WXTracingProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C42E8F991F39DF07001EBE9D /* WXTracingProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
  		C43C03E81EC8ACA40044C7FF /* WXPrerenderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C43C03E41EC8ACA40044C7FF /* WXPrerenderManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
  		C43C03E91EC8ACA40044C7FF /* WXPrerenderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C43C03E51EC8ACA40044C7FF /* WXPrerenderManager.m */; };
 +		C4424E5B1F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
 +		C47B78CE1F2998EE001D3B0C /* WXExtendCallNativeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */; };
 +		C47B78CF1F2998EE001D3B0C /* WXExtendCallNativeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */; };
  		C4B3D6D41E6954300013F38D /* WXEditComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B3D6D21E6954300013F38D /* WXEditComponent.h */; };
  		C4B3D6D51E6954300013F38D /* WXEditComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = C4B3D6D31E6954300013F38D /* WXEditComponent.m */; };
  		C4B834271DE69B09007AD27E /* WXPickerModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C4B834251DE69B09007AD27E /* WXPickerModule.m */; };
@@@ -810,11 -806,9 +814,12 @@@
  		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>"; };
+ 		C42E8F991F39DF07001EBE9D /* WXTracingProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXTracingProtocol.h; sourceTree = "<group>"; };
  		C43C03E41EC8ACA40044C7FF /* WXPrerenderManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXPrerenderManager.h; sourceTree = "<group>"; };
  		C43C03E51EC8ACA40044C7FF /* WXPrerenderManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXPrerenderManager.m; sourceTree = "<group>"; };
 +		C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeProtocol.h; sourceTree = "<group>"; };
 +		C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeManager.h; sourceTree = "<group>"; };
 +		C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExtendCallNativeManager.m; sourceTree = "<group>"; };
  		C4B3D6D21E6954300013F38D /* WXEditComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXEditComponent.h; sourceTree = "<group>"; };
  		C4B3D6D31E6954300013F38D /* WXEditComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXEditComponent.m; sourceTree = "<group>"; };
  		C4B834251DE69B09007AD27E /* WXPickerModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXPickerModule.m; sourceTree = "<group>"; };
@@@ -1285,7 -1277,7 +1290,8 @@@
  				74EF31A91DE58AE600667A07 /* WXURLRewriteProtocol.h */,
  				042013AC1E66CD6A001FC79C /* WXValidateProtocol.h */,
  				DC6836E51EBB12B200AD2D84 /* WXConfigCenterProtocol.h */,
 +				C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */,
+ 				C42E8F991F39DF07001EBE9D /* WXTracingProtocol.h */,
  			);
  			path = Protocol;
  			sourceTree = "<group>";

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4bf47ed4/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4bf47ed4/ios/sdk/WeexSDK/Sources/WeexSDK.h
----------------------------------------------------------------------


[09/10] incubator-weex git commit: + [ios] add file to weexsdk @notdanger

Posted by kf...@apache.org.
+ [ios] add file to weexsdk @notdanger


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

Branch: refs/heads/0.16-dev
Commit: 4df48bccd61ca4ccadb26861dd8a98036024f25d
Parents: abee137
Author: 齐山 <su...@163.com>
Authored: Thu Aug 10 19:36:38 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Thu Aug 10 19:36:38 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj | 12 +++++++++++-
 ios/sdk/WeexSDK/Sources/WeexSDK.h         |  1 +
 2 files changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4df48bcc/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index 1164250..7f19a7c 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -236,9 +236,14 @@
 		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 */; };
+		C42E8FAB1F3C7C09001EBE9D /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		C42E8FAC1F3C7C3B001EBE9D /* WXExtendCallNativeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */; };
+		C42E8FAD1F3C7C3F001EBE9D /* WXExtendCallNativeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */; };
+		C42E8FAE1F3C7C49001EBE9D /* WXRecyclerDragController.m in Sources */ = {isa = PBXBuildFile; fileRef = DC7764911F3C2CA300B5727E /* WXRecyclerDragController.m */; };
+		C42E8FAF1F3C7C4B001EBE9D /* WXRecyclerDragController.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7764921F3C2CA300B5727E /* WXRecyclerDragController.h */; };
 		C43C03E81EC8ACA40044C7FF /* WXPrerenderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C43C03E41EC8ACA40044C7FF /* WXPrerenderManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		C43C03E91EC8ACA40044C7FF /* WXPrerenderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C43C03E51EC8ACA40044C7FF /* WXPrerenderManager.m */; };
-		C4424E5B1F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; };
+		C4424E5B1F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		C47B78CE1F2998EE001D3B0C /* WXExtendCallNativeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */; };
 		C47B78CF1F2998EE001D3B0C /* WXExtendCallNativeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */; };
 		C4B3D6D41E6954300013F38D /* WXEditComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B3D6D21E6954300013F38D /* WXEditComponent.h */; };
@@ -1652,6 +1657,7 @@
 				DCA445B21EFA576D00D0CFA8 /* WXListComponent.h in Headers */,
 				DCA445A51EFA571600D0CFA8 /* WXSDKError.h in Headers */,
 				DCA445AD1EFA575100D0CFA8 /* WXNavigationProtocol.h in Headers */,
+				C42E8FAF1F3C7C4B001EBE9D /* WXRecyclerDragController.h in Headers */,
 				DCA445B01EFA576200D0CFA8 /* WXModalUIModule.h in Headers */,
 				DCA445A61EFA571E00D0CFA8 /* WXSDKEngine.h in Headers */,
 				DCA445AA1EFA573900D0CFA8 /* WXResourceRequest.h in Headers */,
@@ -1703,6 +1709,7 @@
 				DCA4461F1EFA5AB100D0CFA8 /* WXRuleManager.h in Headers */,
 				DCA445E31EFA59DA00D0CFA8 /* WXEmbedComponent.h in Headers */,
 				DCA445DF1EFA59BC00D0CFA8 /* WXLoadingComponent.h in Headers */,
+				C42E8FAD1F3C7C3F001EBE9D /* WXExtendCallNativeManager.h in Headers */,
 				DCA445CB1EFA590600D0CFA8 /* WXComponent+Layout.h in Headers */,
 				DCA4460F1EFA5A8100D0CFA8 /* WXDiffUtil.h in Headers */,
 				DCA445F91EFA5A3700D0CFA8 /* WXClipboardModule.h in Headers */,
@@ -1750,6 +1757,7 @@
 				DCA446061EFA5A5B00D0CFA8 /* NSTimer+Weex.h in Headers */,
 				DCA445D61EFA598600D0CFA8 /* WXView.h in Headers */,
 				DCA445FF1EFA5A4600D0CFA8 /* WXInstanceWrap.h in Headers */,
+				C42E8FAB1F3C7C09001EBE9D /* WXExtendCallNativeProtocol.h in Headers */,
 				DCA445F31EFA5A2500D0CFA8 /* WXFooterComponent.h in Headers */,
 				DCA446151EFA5A9000D0CFA8 /* WXBridgeContext.h in Headers */,
 				DCA4461A1EFA5AA000D0CFA8 /* WXInvocationConfig.h in Headers */,
@@ -2193,6 +2201,7 @@
 				DCA445661EFA55B300D0CFA8 /* WXNavigatorModule.m in Sources */,
 				DCA445671EFA55B300D0CFA8 /* WXStorageModule.m in Sources */,
 				DCA445681EFA55B300D0CFA8 /* WXStreamModule.m in Sources */,
+				C42E8FAC1F3C7C3B001EBE9D /* WXExtendCallNativeManager.m in Sources */,
 				DCA445691EFA55B300D0CFA8 /* WXAnimationModule.m in Sources */,
 				DCA4456A1EFA55B300D0CFA8 /* WXAnimationLayout.m in Sources */,
 				DCA4456B1EFA55B300D0CFA8 /* WXInstanceWrap.m in Sources */,
@@ -2213,6 +2222,7 @@
 				DCA4457A1EFA55B300D0CFA8 /* WXSimulatorShortcutManager.m in Sources */,
 				DCA4457B1EFA55B300D0CFA8 /* WXAssert.m in Sources */,
 				DCA4457C1EFA55B300D0CFA8 /* WXAppConfiguration.m in Sources */,
+				C42E8FAE1F3C7C49001EBE9D /* WXRecyclerDragController.m in Sources */,
 				DCA4457D1EFA55B300D0CFA8 /* WXThreadSafeMutableDictionary.m in Sources */,
 				DCA4457E1EFA55B300D0CFA8 /* WXThreadSafeMutableArray.m in Sources */,
 				DCA4457F1EFA55B300D0CFA8 /* NSObject+WXSwizzle.m in Sources */,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/4df48bcc/ios/sdk/WeexSDK/Sources/WeexSDK.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/WeexSDK.h b/ios/sdk/WeexSDK/Sources/WeexSDK.h
index ec9b2cc..959369d 100644
--- a/ios/sdk/WeexSDK/Sources/WeexSDK.h
+++ b/ios/sdk/WeexSDK/Sources/WeexSDK.h
@@ -48,6 +48,7 @@
 #import "WXJSExceptionInfo.h"
 #import "WXIndicatorComponent.h"
 #import "WXImgLoaderProtocol.h"
+#import "WXExtendCallNativeProtocol.h"
 #import "WXEventModuleProtocol.h"
 #import "WXErrorView.h"
 #import "WXDefine.h"


[03/10] incubator-weex git commit: Merge branch '0.16-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into ios-native-0.16-dev

Posted by kf...@apache.org.
Merge branch '0.16-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex into ios-native-0.16-dev

# Conflicts:
#	ios/playground/WeexDemo.xcodeproj/project.pbxproj
#	ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m


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

Branch: refs/heads/0.16-dev
Commit: 51009919269b7fecbe0da5adc832efbdcc1f5603
Parents: 6225ed1 a54bcb9
Author: 齐山 <su...@163.com>
Authored: Thu Jul 27 12:21:01 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Thu Jul 27 12:21:01 2017 +0800

----------------------------------------------------------------------
 README.md                                       |  51 +-
 WeexSDK.podspec                                 |   2 +-
 .../weex/extend/component/WXParallax.java       |   4 +-
 .../java/com/taobao/weex/WXSDKInstance.java     |   6 +-
 .../taobao/weex/dom/WXRecyclerDomObject.java    |   4 +
 .../ui/component/list/BasicListComponent.java   |  96 +--
 .../taobao/weex/ui/component/list/WXCell.java   |  10 -
 .../weex/ui/component/list/WXListComponent.java |   9 +-
 build/config.js                                 |   1 +
 build/karma.vue.conf.js                         |   7 +
 dangerfile.js                                   |   8 +-
 examples/vue/components/input.vue               |  17 +
 html5/render/vue/modules/websocket/websocket.js |   1 +
 html5/render/vue/utils/event.js                 |   6 +-
 html5/render/vue/utils/func.js                  | 136 +++-
 html5/render/vue/utils/index.js                 | 104 ---
 html5/render/vue/utils/perf.js                  |   3 +-
 html5/test/render/vue/core/node.js              |  15 +-
 .../render/vue/data/dotvue/event-bubble-bar.vue |  19 +-
 .../render/vue/data/dotvue/event-bubble.vue     |  15 +-
 html5/test/render/vue/modules/animation.js      |  61 ++
 html5/test/render/vue/modules/dom.js            | 109 ++++
 html5/test/render/vue/modules/globalEvent.js    |  45 ++
 html5/test/render/vue/modules/navigator.js      |  44 ++
 html5/test/render/vue/modules/websocket.js      |  90 +--
 html5/test/render/vue/modules/webview.js        |  53 ++
 html5/test/render/vue/utils/component.js        |  50 +-
 html5/test/render/vue/utils/event.js            |  78 +++
 html5/test/render/vue/utils/func.js             | 278 +++++++-
 html5/test/render/vue/utils/lazyload.js         | 106 +++
 html5/test/render/vue/utils/perf.js             | 132 ++++
 html5/test/render/vue/utils/style.js            | 157 ++++-
 html5/test/render/vue/utils/type.js             |  49 ++
 html5/test/render/vue/validator/index.js        |  31 +-
 ios/playground/Podfile                          |   2 +-
 .../WeexDemo.xcodeproj/project.pbxproj          |   4 +
 ios/playground/WeexDemo/WXDemoViewController.m  |   2 +-
 ios/sdk/WeexSDK-Dynamic/Info.plist              |  24 +
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       | 638 ++++++++++++++++++-
 .../xcschemes/WeexSDK-Dynamic.xcscheme          |  80 +++
 .../WeexSDK/Sources/Bridge/WXBridgeContext.h    |   2 +-
 .../WeexSDK/Sources/Bridge/WXBridgeContext.m    |  46 +-
 ios/sdk/WeexSDK/Sources/Bridge/WXBridgeMethod.m |  16 +-
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m |  33 +-
 ios/sdk/WeexSDK/Sources/Bridge/WXModuleMethod.h |   2 +
 ios/sdk/WeexSDK/Sources/Bridge/WXModuleMethod.m |  11 +-
 .../Component/Recycler/WXRecyclerComponent.h    |   3 +-
 .../Component/Recycler/WXRecyclerComponent.m    |   5 +-
 .../Recycler/WXSectionDataController.h          |   2 +
 .../Sources/Component/WXCanvasComponent.h       |   2 +-
 .../WeexSDK/Sources/Component/WXEditComponent.m |   2 +-
 .../Sources/Component/WXFooterComponent.h       |   2 +-
 .../Sources/Component/WXHeaderComponent.h       |   3 +-
 .../Sources/Component/WXImageComponent.m        |   1 +
 .../WeexSDK/Sources/Component/WXListComponent.m |   4 +-
 .../Sources/Component/WXScrollerComponent.m     |   1 +
 .../WeexSDK/Sources/Component/WXTextComponent.m |   1 +
 .../Sources/Controller/WXRootViewController.m   |   1 +
 .../Sources/Display/WXComponent+BoxShadow.h     |   4 -
 ios/sdk/WeexSDK/Sources/Display/WXInnerLayer.h  |   1 +
 ios/sdk/WeexSDK/Sources/Display/WXRoundedRect.h |   2 +-
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m    |  10 +-
 .../WeexSDK/Sources/Layout/WXComponent+Layout.m |   1 +
 .../Sources/Manager/WXComponentManager.h        |   3 +
 .../Sources/Manager/WXComponentManager.m        |  19 +-
 .../WeexSDK/Sources/Manager/WXServiceFactory.h  |   2 +-
 .../WeexSDK/Sources/Manager/WXTracingManager.h  | 126 ++++
 .../WeexSDK/Sources/Manager/WXTracingManager.m  | 384 +++++++++++
 ios/sdk/WeexSDK/Sources/Model/WXComponent.m     |   5 +-
 .../WeexSDK/Sources/Model/WXJSExceptionInfo.h   |   1 +
 .../WeexSDK/Sources/Model/WXJSExceptionInfo.m   |   1 +
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m   |   9 +
 .../WeexSDK/Sources/Module/WXAnimationModule.m  |   7 +-
 ios/sdk/WeexSDK/Sources/Module/WXDomModule.m    |   4 +-
 ios/sdk/WeexSDK/Sources/Module/WXPickerModule.m |   4 +-
 .../WeexSDK/Sources/Protocol/WXBridgeProtocol.h |   5 +
 .../Sources/Protocol/WXValidateProtocol.h       |   4 +-
 ios/sdk/WeexSDK/Sources/Utility/WXDefine.h      |   2 +-
 ios/sdk/WeexSDK/Sources/Utility/WXLog.m         |   8 +
 .../View/WXComponent+PseudoClassManagement.h    |   4 +-
 .../Sources/View/WXComponent+ViewManagement.m   |   3 +-
 ios/sdk/WeexSDK/Sources/WeexSDK.h               |   1 +
 ios/sdk/buildScripts.sh                         |   2 +
 pre-build/native-bundle-main.js                 |  12 +-
 84 files changed, 2873 insertions(+), 435 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/51009919/ios/playground/WeexDemo.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --cc ios/playground/WeexDemo.xcodeproj/project.pbxproj
index b9695e7,2edc462..7cfcbd8
--- a/ios/playground/WeexDemo.xcodeproj/project.pbxproj
+++ b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
@@@ -30,7 -30,7 +30,8 @@@
  		846FC8DB1E1B853600949E7D /* WXATViewHierarchyPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFF21D029685001C8592 /* WXATViewHierarchyPlugin.m */; };
  		84D7CAC71CE3266C00D48D46 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7475ACA01CD8444A0044E96C /* libsqlite3.0.tbd */; };
  		8A0B5EFFF75BF82EA481983D /* libPods-WeexUITestDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E48C20F443AA337D1FE97622 /* libPods-WeexUITestDemo.a */; };
 +		C47B78D21F299E27001D3B0C /* WXExtendCallNativeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */; };
+ 		C43CDA031F1C6E01005A6B03 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = C43CDA021F1C6E01005A6B03 /* libz.tbd */; };
  		DC20B8E61ECADA2500845F39 /* WXConfigCenterDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */; };
  		DC5B53691E8CED9400E02125 /* WXScannerHistoryVC.m in Sources */ = {isa = PBXBuildFile; fileRef = DC5B53681E8CED9400E02125 /* WXScannerHistoryVC.m */; };
  		DC5E503E1D0D97130059F0EB /* weex.png in Resources */ = {isa = PBXBuildFile; fileRef = DC5E503C1D0D97130059F0EB /* weex.png */; };
@@@ -90,8 -90,7 +91,9 @@@
  		775BEE9A1C1E8ECC008D1629 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  		84361D751CA10F8E00F43825 /* WeexUITestDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WeexUITestDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
  		9420131417A731ED089B0814 /* Pods-WeexDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo.release.xcconfig"; sourceTree = "<group>"; };
 +		C47B78D01F299E27001D3B0C /* WXExtendCallNativeTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeTest.h; sourceTree = "<group>"; };
 +		C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExtendCallNativeTest.m; sourceTree = "<group>"; };
+ 		C43CDA021F1C6E01005A6B03 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
  		DC20B8E41ECADA2500845F39 /* WXConfigCenterDefaultImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXConfigCenterDefaultImpl.h; sourceTree = "<group>"; };
  		DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXConfigCenterDefaultImpl.m; sourceTree = "<group>"; };
  		DC5B53671E8CED9400E02125 /* WXScannerHistoryVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXScannerHistoryVC.h; path = Scanner/WXScannerHistoryVC.h; sourceTree = "<group>"; };

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/51009919/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/51009919/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
----------------------------------------------------------------------
diff --cc ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
index bdcb874,13d8578..342dfed
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
@@@ -34,7 -34,7 +34,8 @@@
  #import "JSValue+Weex.h"
  #import "WXJSExceptionProtocol.h"
  #import "WXSDKManager.h"
 +#import "WXExtendCallNativeManager.h"
+ #import "WXTracingManager.h"
  
  #import <dlfcn.h>
  


[06/10] incubator-weex git commit: + [ios] add license @notdanger

Posted by kf...@apache.org.
+ [ios] add license @notdanger


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

Branch: refs/heads/0.16-dev
Commit: 816bde1bdedfdc79d4f6ae4f3404564d4fa60741
Parents: 4d78365
Author: 齐山 <su...@163.com>
Authored: Thu Aug 10 16:10:46 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Thu Aug 10 16:10:46 2017 +0800

----------------------------------------------------------------------
 examples/vue/hello.vue                          | 54 ++------------------
 .../WeexDemo/WXExtendCallNativeTest.h           | 25 ++++++---
 .../WeexDemo/WXExtendCallNativeTest.m           | 25 ++++++---
 .../Sources/Manager/WXExtendCallNativeManager.h | 26 +++++++---
 .../Sources/Manager/WXExtendCallNativeManager.m | 25 ++++++---
 5 files changed, 75 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/816bde1b/examples/vue/hello.vue
----------------------------------------------------------------------
diff --git a/examples/vue/hello.vue b/examples/vue/hello.vue
index 8309aaa..76272f7 100644
--- a/examples/vue/hello.vue
+++ b/examples/vue/hello.vue
@@ -1,53 +1,5 @@
-<!--
-  * <template>: html-like syntax
-  * CSS-like inline style
-  * <style scoped>: only support single-class selector
-  * <script>: define the behavior of component
-  * :attr data-binding support
-  * @xxx syntax to bind event with a component method
--->
-
-<!--
-  notes:
-  * <template> only could have just one child
-  * the text node is only allowed as the child of <text> as the shorthand of its `value` attribute
-  * the style is not inherited from parent (for example: `font-size`)
-  * <script> support ECMAScript 5
-  * all component options assigns to `module.exports`
--->
-
 <template>
-  <div class="wrapper" @click="update">
-    <image :src="logoUrl" class="logo"></image>
-    <text class="title">Hello {{target}}</text>
+  <div>
+    <text style="font-size: 100px;">Hello World.</text>
   </div>
-</template>
-
-<style scoped>
-  .wrapper {align-items: center; margin-top: 120px;}
-  .title {font-size: 48px;}
-  .logo {width: 360px; height: 82px;}
-</style>
-
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    data: {
-      logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-      target: 'World'
-    },
-    methods: {
-      update: function (e) {
-        this.target = 'Weex'
-        console.log('target:', this.target)
-        var dict = extendCallNative({
-          'className':'test'
-        })
-        modal.toast({
-          'message': dict['value'],
-          'duration': 1000
-        })
-      }
-    }
-  }
-</script>
+</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/816bde1b/ios/playground/WeexDemo/WXExtendCallNativeTest.h
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/WXExtendCallNativeTest.h b/ios/playground/WeexDemo/WXExtendCallNativeTest.h
index 50d2c2a..4671779 100644
--- a/ios/playground/WeexDemo/WXExtendCallNativeTest.h
+++ b/ios/playground/WeexDemo/WXExtendCallNativeTest.h
@@ -1,10 +1,21 @@
-//
-//  WXExtendCallNativeTest.h
-//  WeexDemo
-//
-//  Created by 齐山 on 2017/7/27.
-//  Copyright © 2017年 taobao. All rights reserved.
-//
+/*
+ * 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 "WXExtendCallNativeProtocol.h"

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/816bde1b/ios/playground/WeexDemo/WXExtendCallNativeTest.m
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/WXExtendCallNativeTest.m b/ios/playground/WeexDemo/WXExtendCallNativeTest.m
index afedde1..ba11caf 100644
--- a/ios/playground/WeexDemo/WXExtendCallNativeTest.m
+++ b/ios/playground/WeexDemo/WXExtendCallNativeTest.m
@@ -1,10 +1,21 @@
-//
-//  WXExtendCallNativeTest.m
-//  WeexDemo
-//
-//  Created by 齐山 on 2017/7/27.
-//  Copyright © 2017年 taobao. All rights reserved.
-//
+/*
+ * 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 "WXExtendCallNativeTest.h"
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/816bde1b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
index cb5fea6..ded9bc7 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
@@ -1,10 +1,21 @@
-//
-//  WXExtendCallNativeManager.h
-//  WeexSDK
-//
-//  Created by 齐山 on 2017/7/27.
-//  Copyright © 2017年 taobao. All rights reserved.
-//
+/*
+ * 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>
 
@@ -12,5 +23,4 @@
 
 + (id)sendExtendCallNativeEvent:(NSDictionary *)parameters;
 + (void)registerExtendCallNative:(NSString *)name withClass:(Class)clazz;
-+ (Class)classWithComponentName:(NSString *)name;
 @end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/816bde1b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
index 58a7cdd..17b1541 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
@@ -1,10 +1,21 @@
-//
-//  WXExtendCallNativeManager.m
-//  WeexSDK
-//
-//  Created by 齐山 on 2017/7/27.
-//  Copyright © 2017年 taobao. All rights reserved.
-//
+/*
+ * 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 "WXExtendCallNativeManager.h"
 #import "WXExtendCallNativeProtocol.h"


[02/10] incubator-weex git commit: + [ios] add extend call native

Posted by kf...@apache.org.
+ [ios] add extend call native


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

Branch: refs/heads/0.16-dev
Commit: 6225ed13d9ae3dda08c848abe3ba8f669037b296
Parents: b3e4049
Author: 齐山 <su...@163.com>
Authored: Thu Jul 27 12:16:51 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Thu Jul 27 12:16:51 2017 +0800

----------------------------------------------------------------------
 examples/vue/hello.vue                          | 54 ++++++++++++++++++--
 .../WeexDemo.xcodeproj/project.pbxproj          |  6 +++
 .../WeexDemo/WXExtendCallNativeTest.h           | 14 +++++
 .../WeexDemo/WXExtendCallNativeTest.m           | 36 +++++++++++++
 ios/sdk/WeexSDK.xcodeproj/project.pbxproj       |  8 +++
 ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m |  7 ++-
 .../Sources/Manager/WXExtendCallNativeManager.h | 15 ++++++
 .../Sources/Manager/WXExtendCallNativeManager.m | 28 ++++++++++
 .../Protocol/WXExtendCallNativeProtocol.h       | 22 +++++++-
 9 files changed, 182 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/examples/vue/hello.vue
----------------------------------------------------------------------
diff --git a/examples/vue/hello.vue b/examples/vue/hello.vue
index 76272f7..e387e5a 100644
--- a/examples/vue/hello.vue
+++ b/examples/vue/hello.vue
@@ -1,5 +1,53 @@
+<!--
+  * <template>: html-like syntax
+  * CSS-like inline style
+  * <style scoped>: only support single-class selector
+  * <script>: define the behavior of component
+  * :attr data-binding support
+  * @xxx syntax to bind event with a component method
+-->
+
+<!--
+  notes:
+  * <template> only could have just one child
+  * the text node is only allowed as the child of <text> as the shorthand of its `value` attribute
+  * the style is not inherited from parent (for example: `font-size`)
+  * <script> support ECMAScript 5
+  * all component options assigns to `module.exports`
+-->
+
 <template>
-  <div>
-    <text style="font-size: 100px;">Hello World.</text>
+  <div class="wrapper" @click="update">
+    <image :src="logoUrl" class="logo"></image>
+    <text class="title">Hello {{target}}</text>
   </div>
-</template>
\ No newline at end of file
+</template>
+
+<style scoped>
+  .wrapper {align-items: center; margin-top: 120px;}
+  .title {font-size: 48px;}
+  .logo {width: 360px; height: 82px;}
+</style>
+
+<script>
+  var modal = weex.requireModule('modal')
+  module.exports = {
+    data: {
+      logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
+      target: 'World'
+    },
+    methods: {
+      update: function (e) {
+        this.target = 'Weex'
+        console.log('target:', this.target)
+        var dict = extendCallNative({
+          'className':'WXExtendCallNativeTest'
+        })
+        modal.toast({
+          'message': dict['value'],
+          'duration': 1000
+        })
+      }
+    }
+  }
+</script>

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/ios/playground/WeexDemo.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo.xcodeproj/project.pbxproj b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
index 76d1423..b9695e7 100644
--- a/ios/playground/WeexDemo.xcodeproj/project.pbxproj
+++ b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
@@ -30,6 +30,7 @@
 		846FC8DB1E1B853600949E7D /* WXATViewHierarchyPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = DCABAFF21D029685001C8592 /* WXATViewHierarchyPlugin.m */; };
 		84D7CAC71CE3266C00D48D46 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7475ACA01CD8444A0044E96C /* libsqlite3.0.tbd */; };
 		8A0B5EFFF75BF82EA481983D /* libPods-WeexUITestDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E48C20F443AA337D1FE97622 /* libPods-WeexUITestDemo.a */; };
+		C47B78D21F299E27001D3B0C /* WXExtendCallNativeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */; };
 		DC20B8E61ECADA2500845F39 /* WXConfigCenterDefaultImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */; };
 		DC5B53691E8CED9400E02125 /* WXScannerHistoryVC.m in Sources */ = {isa = PBXBuildFile; fileRef = DC5B53681E8CED9400E02125 /* WXScannerHistoryVC.m */; };
 		DC5E503E1D0D97130059F0EB /* weex.png in Resources */ = {isa = PBXBuildFile; fileRef = DC5E503C1D0D97130059F0EB /* weex.png */; };
@@ -89,6 +90,8 @@
 		775BEE9A1C1E8ECC008D1629 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		84361D751CA10F8E00F43825 /* WeexUITestDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WeexUITestDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		9420131417A731ED089B0814 /* Pods-WeexDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo.release.xcconfig"; sourceTree = "<group>"; };
+		C47B78D01F299E27001D3B0C /* WXExtendCallNativeTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeTest.h; sourceTree = "<group>"; };
+		C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExtendCallNativeTest.m; sourceTree = "<group>"; };
 		DC20B8E41ECADA2500845F39 /* WXConfigCenterDefaultImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXConfigCenterDefaultImpl.h; sourceTree = "<group>"; };
 		DC20B8E51ECADA2500845F39 /* WXConfigCenterDefaultImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXConfigCenterDefaultImpl.m; sourceTree = "<group>"; };
 		DC5B53671E8CED9400E02125 /* WXScannerHistoryVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXScannerHistoryVC.h; path = Scanner/WXScannerHistoryVC.h; sourceTree = "<group>"; };
@@ -250,6 +253,8 @@
 				747DF6661E2F176A005C53A8 /* UIView+UIThreadCheck.h */,
 				747DF6671E2F176A005C53A8 /* UIView+UIThreadCheck.m */,
 				7453E3641C9FA971001EB427 /* DemoDefine.h */,
+				C47B78D01F299E27001D3B0C /* WXExtendCallNativeTest.h */,
+				C47B78D11F299E27001D3B0C /* WXExtendCallNativeTest.m */,
 			);
 			name = Source;
 			sourceTree = "<group>";
@@ -574,6 +579,7 @@
 				775BEE801C1E8ECC008D1629 /* main.m in Sources */,
 				DCABAFFE1D029753001C8592 /* WXImgLoaderDefaultImpl.m in Sources */,
 				747DF6681E2F176A005C53A8 /* UIView+UIThreadCheck.m in Sources */,
+				C47B78D21F299E27001D3B0C /* WXExtendCallNativeTest.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/ios/playground/WeexDemo/WXExtendCallNativeTest.h
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/WXExtendCallNativeTest.h b/ios/playground/WeexDemo/WXExtendCallNativeTest.h
new file mode 100644
index 0000000..50d2c2a
--- /dev/null
+++ b/ios/playground/WeexDemo/WXExtendCallNativeTest.h
@@ -0,0 +1,14 @@
+//
+//  WXExtendCallNativeTest.h
+//  WeexDemo
+//
+//  Created by 齐山 on 2017/7/27.
+//  Copyright © 2017年 taobao. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "WXExtendCallNativeProtocol.h"
+
+@interface WXExtendCallNativeTest : NSObject<WXExtendCallNativeProtocol>
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/ios/playground/WeexDemo/WXExtendCallNativeTest.m
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/WXExtendCallNativeTest.m b/ios/playground/WeexDemo/WXExtendCallNativeTest.m
new file mode 100644
index 0000000..afedde1
--- /dev/null
+++ b/ios/playground/WeexDemo/WXExtendCallNativeTest.m
@@ -0,0 +1,36 @@
+//
+//  WXExtendCallNativeTest.m
+//  WeexDemo
+//
+//  Created by 齐山 on 2017/7/27.
+//  Copyright © 2017年 taobao. All rights reserved.
+//
+
+#import "WXExtendCallNativeTest.h"
+
+@implementation WXExtendCallNativeTest
+
+#pragma mark -
+#pragma WXExtendCallNativeProtocol
+
++ (BOOL)checkParameters:(NSDictionary *)parameters
+{
+    if(!parameters || ![parameters isKindOfClass:[NSDictionary class]]){
+        return NO;
+    }
+    
+    if(!parameters[@"className"]){
+        return NO;
+    }
+    
+    return YES;
+}
+
+
++ (id)excuteCallNative:(NSDictionary *)parameters
+{
+    NSLog(@"weex test");
+    return @{@"value":@"test"};
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index 46f7adb..1238614 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -239,6 +239,8 @@
 		C43C03E81EC8ACA40044C7FF /* WXPrerenderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C43C03E41EC8ACA40044C7FF /* WXPrerenderManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		C43C03E91EC8ACA40044C7FF /* WXPrerenderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C43C03E51EC8ACA40044C7FF /* WXPrerenderManager.m */; };
 		C4424E5B1F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */; };
+		C47B78CE1F2998EE001D3B0C /* WXExtendCallNativeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */; };
+		C47B78CF1F2998EE001D3B0C /* WXExtendCallNativeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */; };
 		C4B3D6D41E6954300013F38D /* WXEditComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B3D6D21E6954300013F38D /* WXEditComponent.h */; };
 		C4B3D6D51E6954300013F38D /* WXEditComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = C4B3D6D31E6954300013F38D /* WXEditComponent.m */; };
 		C4B834271DE69B09007AD27E /* WXPickerModule.m in Sources */ = {isa = PBXBuildFile; fileRef = C4B834251DE69B09007AD27E /* WXPickerModule.m */; };
@@ -557,6 +559,8 @@
 		C43C03E41EC8ACA40044C7FF /* WXPrerenderManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXPrerenderManager.h; sourceTree = "<group>"; };
 		C43C03E51EC8ACA40044C7FF /* WXPrerenderManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXPrerenderManager.m; sourceTree = "<group>"; };
 		C4424E591F24DA3D009F52E2 /* WXExtendCallNativeProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeProtocol.h; sourceTree = "<group>"; };
+		C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXExtendCallNativeManager.h; sourceTree = "<group>"; };
+		C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXExtendCallNativeManager.m; sourceTree = "<group>"; };
 		C4B3D6D21E6954300013F38D /* WXEditComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXEditComponent.h; sourceTree = "<group>"; };
 		C4B3D6D31E6954300013F38D /* WXEditComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXEditComponent.m; sourceTree = "<group>"; };
 		C4B834251DE69B09007AD27E /* WXPickerModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXPickerModule.m; sourceTree = "<group>"; };
@@ -970,6 +974,8 @@
 				741081221CED6756001BC6E5 /* WXComponentFactory.m */,
 				DCAB35FC1D658EB700C0EA70 /* WXRuleManager.h */,
 				DCAB35FD1D658EB700C0EA70 /* WXRuleManager.m */,
+				C47B78CC1F2998EE001D3B0C /* WXExtendCallNativeManager.h */,
+				C47B78CD1F2998EE001D3B0C /* WXExtendCallNativeManager.m */,
 			);
 			path = Manager;
 			sourceTree = "<group>";
@@ -1259,6 +1265,7 @@
 				77D161621C02ED790010B15B /* WXLog.h in Headers */,
 				77D1614B1C02E3790010B15B /* WXConvert.h in Headers */,
 				59A596221CB6311F0012CD52 /* WXNavigatorModule.h in Headers */,
+				C47B78CE1F2998EE001D3B0C /* WXExtendCallNativeManager.h in Headers */,
 				745B2D6A1E5A8E1E0092D38A /* WXRecyclerComponent.h in Headers */,
 				749DC27B1D40827B009E1C91 /* WXMonitor.h in Headers */,
 				77E659DA1C07F594008B8775 /* WXDomModule.h in Headers */,
@@ -1558,6 +1565,7 @@
 				C4F012831E1502E9003378D0 /* WXWebSocketModule.m in Sources */,
 				59D3CA401CF9ED57008835DC /* Layout.c in Sources */,
 				DCF087621DCAE161005CD6EB /* WXInvocationConfig.m in Sources */,
+				C47B78CF1F2998EE001D3B0C /* WXExtendCallNativeManager.m in Sources */,
 				77D161311C02DE4E0010B15B /* WXComponent.m in Sources */,
 				74862F7A1E02B88D00B7A041 /* JSValue+Weex.m in Sources */,
 				740451EB1E14BB26004157CB /* WXServiceFactory.m in Sources */,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/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 f241502..bdcb874 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m
@@ -34,7 +34,7 @@
 #import "JSValue+Weex.h"
 #import "WXJSExceptionProtocol.h"
 #import "WXSDKManager.h"
-#import "WXExtendCallNativeProtocol.h"
+#import "WXExtendCallNativeManager.h"
 
 #import <dlfcn.h>
 
@@ -503,9 +503,8 @@
 
 -(id)extendCallNative:(NSDictionary *)dict
 {
-    id extendCallNative = [WXSDKEngine handlerForProtocol:@protocol(WXExtendCallNativeProtocol)];
-    if(extendCallNative){
-        return [extendCallNative excuteCallNative:dict];
+    if(dict){
+        return [WXExtendCallNativeManager sendExtendCallNativeEvent:dict];
     }
     return @(-1);
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
new file mode 100644
index 0000000..20c3e7d
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.h
@@ -0,0 +1,15 @@
+//
+//  WXExtendCallNativeManager.h
+//  WeexSDK
+//
+//  Created by 齐山 on 2017/7/27.
+//  Copyright © 2017年 taobao. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface WXExtendCallNativeManager : NSObject
+
++(id)sendExtendCallNativeEvent:(NSDictionary *)parameters;
+
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
new file mode 100644
index 0000000..6fbdd02
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXExtendCallNativeManager.m
@@ -0,0 +1,28 @@
+//
+//  WXExtendCallNativeManager.m
+//  WeexSDK
+//
+//  Created by 齐山 on 2017/7/27.
+//  Copyright © 2017年 taobao. All rights reserved.
+//
+
+#import "WXExtendCallNativeManager.h"
+#import "WXExtendCallNativeProtocol.h"
+#import <objc/runtime.h>
+
+@implementation WXExtendCallNativeManager
+
++(id)sendExtendCallNativeEvent:(NSDictionary *)parameters
+{
+    if(parameters[@"className"]){
+        Class<WXExtendCallNativeProtocol> receiveClass = NSClassFromString(parameters[@"className"]);
+        if(class_conformsToProtocol(receiveClass,@protocol(WXExtendCallNativeProtocol))){
+            BOOL receivedItem = [receiveClass checkParameters:parameters];
+            if(receivedItem){
+                return [receiveClass excuteCallNative:parameters];
+            }
+        }
+    }
+    return @(-1);
+}
+@end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6225ed13/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h b/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h
index 5afb1dc..c920b73 100644
--- a/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h
+++ b/ios/sdk/WeexSDK/Sources/Protocol/WXExtendCallNativeProtocol.h
@@ -22,6 +22,26 @@
 
 @protocol WXExtendCallNativeProtocol <NSObject>
 
-- (id)excuteCallNative:(NSDictionary *)dict;
+@required
+
+/**
+ * @abstract check parameters
+ *
+ * @param parameters the checked parameters.
+ *
+ * @return YES or NO.
+ *
+ */
++ (BOOL)checkParameters:(NSDictionary *)parameters;
+
+/**
+ * @abstract excuteCallNative
+ *
+ * @param parameters the checked parameters.
+ *
+ * @return A value.
+ *
+ */
++ (id)excuteCallNative:(NSDictionary *)parameters;
 
 @end