From 05c67586935352ce9039ec3607f8ee5648241872 Mon Sep 17 00:00:00 2001 From: katherine95s <51700937+katherine95s@users.noreply.github.com> Date: Mon, 15 Jul 2019 10:40:52 +0800 Subject: [PATCH] [Android] Separate playground (#2688) * [Android] Separate Playground into https://github.com/apache/incubator-weex-playground --- .gitmodules | 4 + android/README.md | 19 +- android/build.gradle | 26 +- android/commons/build.gradle | 77 - android/commons/proguard-rules.pro | 17 - .../alibaba/weex/commons/ApplicationTest.java | 31 - android/commons/src/main/AndroidManifest.xml | 24 - .../weex/commons/AbstractWeexActivity.java | 257 -- .../weex/commons/SimpleWeexActivity.java | 47 - .../weex/commons/WXAnalyzerDelegate.java | 193 - .../weex/commons/adapter/BlurTool.java | 325 -- .../commons/adapter/BlurTransformation.java | 52 - .../adapter/DefaultWebSocketAdapter.java | 188 - .../DefaultWebSocketAdapterFactory.java | 33 - .../commons/adapter/FrescoImageAdapter.java | 175 - .../commons/adapter/FrescoImageComponent.java | 45 - .../weex/commons/adapter/FrescoImageView.java | 75 - .../weex/commons/adapter/ImageAdapter.java | 119 - .../commons/adapter/JSExceptionAdapter.java | 37 - .../adapter/PicassoBasedDrawableLoader.java | 108 - .../alibaba/weex/commons/util/AssertUtil.java | 30 - .../weex/commons/util/RequestIdGenerator.java | 33 - .../alibaba/weex/commons/util/ScreenUtil.java | 126 - .../weex/commons/util/WSEventReporter.java | 210 -- .../commons/src/main/res/values/strings.xml | 23 - android/playground/app/build.gradle | 136 - android/playground/app/proguard-rules.pro | 32 - .../app/src/androidTest/AndroidManifest.xml | 212 -- .../com/alibaba/weex/ApplicationTest.java | 31 - .../com/alibaba/weex/WeappJsBaseTestCase.java | 74 - .../alibaba/weex/benchmark/BenchmarkTest.java | 234 -- .../com/alibaba/weex/benchmark/BoxPlot.java | 84 - .../com/alibaba/weex/benchmark/Repeat.java | 33 - .../alibaba/weex/benchmark/RepeatRule.java | 56 - .../weex/benchmark/WeexNativeCompareTest.java | 148 - .../weex/uitest/TC_AG/AG_AHref_A_Href.java | 57 - .../AG_Border_A_Border_Bottom_Color.java | 57 - ...AG_Border_A_Border_Bottom_Left_Radius.java | 57 - ...G_Border_A_Border_Bottom_Right_Radius.java | 57 - .../AG_Border_A_Border_Bottom_Width.java | 63 - .../TC_AG/AG_Border_A_Border_Color.java | 57 - .../TC_AG/AG_Border_A_Border_Left_Color.java | 57 - .../TC_AG/AG_Border_A_Border_Left_Width.java | 63 - .../TC_AG/AG_Border_A_Border_Radius.java | 57 - .../TC_AG/AG_Border_A_Border_Right_Color.java | 57 - .../TC_AG/AG_Border_A_Border_Right_Width.java | 63 - .../TC_AG/AG_Border_A_Border_Style.java | 63 - .../TC_AG/AG_Border_A_Border_Top_Color.java | 57 - .../AG_Border_A_Border_Top_Left_Radius.java | 57 - .../AG_Border_A_Border_Top_Right_Radius.java | 57 - .../TC_AG/AG_Border_A_Border_Top_Width.java | 63 - .../TC_AG/AG_Border_A_Border_Width.java | 63 - .../AG_Border_Div_Border_Bottom_Color.java | 57 - ..._Border_Div_Border_Bottom_Left_Radius.java | 57 - ...Border_Div_Border_Bottom_Right_Radius.java | 57 - .../AG_Border_Div_Border_Bottom_Width.java | 63 - .../TC_AG/AG_Border_Div_Border_Color.java | 57 - .../AG_Border_Div_Border_Left_Color.java | 57 - .../AG_Border_Div_Border_Left_Width.java | 63 - .../TC_AG/AG_Border_Div_Border_Radius.java | 57 - .../AG_Border_Div_Border_Right_Color.java | 57 - .../AG_Border_Div_Border_Right_Width.java | 63 - .../TC_AG/AG_Border_Div_Border_Style.java | 63 - .../TC_AG/AG_Border_Div_Border_Top_Color.java | 57 - .../AG_Border_Div_Border_Top_Left_Radius.java | 57 - ...AG_Border_Div_Border_Top_Right_Radius.java | 57 - .../TC_AG/AG_Border_Div_Border_Top_Width.java | 63 - .../TC_AG/AG_Border_Div_Border_Width.java | 63 - .../AG_Border_Image_Border_Bottom_Color.java | 57 - ...order_Image_Border_Bottom_Left_Radius.java | 57 - ...rder_Image_Border_Bottom_Right_Radius.java | 57 - .../AG_Border_Image_Border_Bottom_Width.java | 63 - .../TC_AG/AG_Border_Image_Border_Color.java | 57 - .../AG_Border_Image_Border_Left_Color.java | 57 - .../AG_Border_Image_Border_Left_Width.java | 63 - .../TC_AG/AG_Border_Image_Border_Radius.java | 57 - .../AG_Border_Image_Border_Right_Color.java | 57 - .../AG_Border_Image_Border_Right_Width.java | 63 - .../TC_AG/AG_Border_Image_Border_Style.java | 63 - .../AG_Border_Image_Border_Top_Color.java | 57 - ...G_Border_Image_Border_Top_Left_Radius.java | 57 - ..._Border_Image_Border_Top_Right_Radius.java | 57 - .../AG_Border_Image_Border_Top_Width.java | 63 - .../TC_AG/AG_Border_Image_Border_Width.java | 63 - .../AG_Border_Input_Border_Bottom_Color.java | 57 - ...order_Input_Border_Bottom_Left_Radius.java | 57 - ...rder_Input_Border_Bottom_Right_Radius.java | 57 - .../AG_Border_Input_Border_Bottom_Width.java | 63 - .../TC_AG/AG_Border_Input_Border_Color.java | 57 - .../AG_Border_Input_Border_Left_Color.java | 57 - .../AG_Border_Input_Border_Left_Width.java | 63 - .../TC_AG/AG_Border_Input_Border_Radius.java | 57 - .../AG_Border_Input_Border_Right_Color.java | 57 - .../AG_Border_Input_Border_Right_Width.java | 63 - .../TC_AG/AG_Border_Input_Border_Style.java | 63 - .../AG_Border_Input_Border_Top_Color.java | 57 - ...G_Border_Input_Border_Top_Left_Radius.java | 57 - ..._Border_Input_Border_Top_Right_Radius.java | 57 - .../AG_Border_Input_Border_Top_Width.java | 63 - .../TC_AG/AG_Border_Input_Border_Width.java | 63 - .../AG_Border_Switch_Border_Bottom_Color.java | 57 - ...rder_Switch_Border_Bottom_Left_Radius.java | 57 - ...der_Switch_Border_Bottom_Right_Radius.java | 57 - .../AG_Border_Switch_Border_Bottom_Width.java | 63 - .../TC_AG/AG_Border_Switch_Border_Color.java | 57 - .../AG_Border_Switch_Border_Left_Color.java | 57 - .../AG_Border_Switch_Border_Left_Width.java | 63 - .../TC_AG/AG_Border_Switch_Border_Radius.java | 57 - .../AG_Border_Switch_Border_Right_Color.java | 57 - .../AG_Border_Switch_Border_Right_Width.java | 63 - .../TC_AG/AG_Border_Switch_Border_Style.java | 63 - .../AG_Border_Switch_Border_Top_Color.java | 57 - ..._Border_Switch_Border_Top_Left_Radius.java | 57 - ...Border_Switch_Border_Top_Right_Radius.java | 57 - .../AG_Border_Switch_Border_Top_Width.java | 63 - .../TC_AG/AG_Border_Switch_Border_Width.java | 63 - .../AG_Border_Text_Border_Bottom_Color.java | 57 - ...Border_Text_Border_Bottom_Left_Radius.java | 57 - ...order_Text_Border_Bottom_Right_Radius.java | 57 - .../AG_Border_Text_Border_Bottom_Width.java | 63 - .../TC_AG/AG_Border_Text_Border_Color.java | 57 - .../AG_Border_Text_Border_Left_Color.java | 57 - .../AG_Border_Text_Border_Left_Width.java | 63 - .../TC_AG/AG_Border_Text_Border_Radius.java | 57 - .../AG_Border_Text_Border_Right_Color.java | 57 - .../AG_Border_Text_Border_Right_Width.java | 63 - .../TC_AG/AG_Border_Text_Border_Style.java | 63 - .../AG_Border_Text_Border_Top_Color.java | 57 - ...AG_Border_Text_Border_Top_Left_Radius.java | 57 - ...G_Border_Text_Border_Top_Right_Radius.java | 57 - .../AG_Border_Text_Border_Top_Width.java | 63 - .../TC_AG/AG_Border_Text_Border_Width.java | 63 - .../AG_Border_Video_Border_Bottom_Color.java | 57 - ...order_Video_Border_Bottom_Left_Radius.java | 57 - ...rder_Video_Border_Bottom_Right_Radius.java | 57 - .../AG_Border_Video_Border_Bottom_Width.java | 63 - .../TC_AG/AG_Border_Video_Border_Color.java | 57 - .../AG_Border_Video_Border_Left_Color.java | 57 - .../AG_Border_Video_Border_Left_Width.java | 63 - .../TC_AG/AG_Border_Video_Border_Radius.java | 57 - .../AG_Border_Video_Border_Right_Color.java | 57 - .../AG_Border_Video_Border_Right_Width.java | 63 - .../TC_AG/AG_Border_Video_Border_Style.java | 63 - .../AG_Border_Video_Border_Top_Color.java | 57 - ...G_Border_Video_Border_Top_Left_Radius.java | 57 - ..._Border_Video_Border_Top_Right_Radius.java | 57 - .../AG_Border_Video_Border_Top_Width.java | 63 - .../TC_AG/AG_Border_Video_Border_Width.java | 63 - .../AG_Border_Web_Border_Bottom_Color.java | 57 - ..._Border_Web_Border_Bottom_Left_Radius.java | 57 - ...Border_Web_Border_Bottom_Right_Radius.java | 57 - .../AG_Border_Web_Border_Bottom_Width.java | 63 - .../TC_AG/AG_Border_Web_Border_Color.java | 57 - .../AG_Border_Web_Border_Left_Color.java | 57 - .../AG_Border_Web_Border_Left_Width.java | 63 - .../TC_AG/AG_Border_Web_Border_Radius.java | 57 - .../AG_Border_Web_Border_Right_Color.java | 57 - .../AG_Border_Web_Border_Right_Width.java | 63 - .../TC_AG/AG_Border_Web_Border_Style.java | 63 - .../TC_AG/AG_Border_Web_Border_Top_Color.java | 57 - .../AG_Border_Web_Border_Top_Left_Radius.java | 57 - ...AG_Border_Web_Border_Top_Right_Radius.java | 57 - .../TC_AG/AG_Border_Web_Border_Top_Width.java | 64 - .../TC_AG/AG_Border_Web_Border_Width.java | 63 - .../uitest/TC_AG/AG_CommonAttribute_A_If.java | 57 - .../TC_AG/AG_CommonAttribute_Div_If.java | 57 - .../TC_AG/AG_CommonAttribute_Image_If.java | 57 - .../TC_AG/AG_CommonAttribute_Input_If.java | 57 - .../TC_AG/AG_CommonAttribute_Switch_If.java | 57 - .../TC_AG/AG_CommonAttribute_Text_If.java | 57 - .../TC_AG/AG_CommonAttribute_Video_If.java | 57 - .../TC_AG/AG_CommonAttribute_Web_If.java | 57 - .../TC_AG/AG_CommonEvent_A_Onclick.java | 45 - .../TC_AG/AG_CommonEvent_Div_Onclick.java | 45 - .../TC_AG/AG_CommonEvent_Image_Onclick.java | 45 - .../TC_AG/AG_CommonEvent_Input_Onclick.java | 45 - .../TC_AG/AG_CommonEvent_Switch_Onclick.java | 45 - .../TC_AG/AG_CommonEvent_Text_Onclick.java | 45 - .../TC_AG/AG_CommonEvent_Video_Onclick.java | 45 - .../TC_AG/AG_CommonEvent_Web_Onclick.java | 45 - .../AG_CommonStyle_A_Background_Color.java | 57 - .../AG_CommonStyle_A_Widthandheight.java | 69 - .../AG_CommonStyle_Div_Background_Color.java | 57 - .../AG_CommonStyle_Div_Widthandheight.java | 69 - ...AG_CommonStyle_Image_Background_Color.java | 57 - .../AG_CommonStyle_Image_Widthandheight.java | 69 - ...AG_CommonStyle_Input_Background_Color.java | 57 - .../AG_CommonStyle_Input_Widthandheight.java | 69 - ...G_CommonStyle_Switch_Background_Color.java | 57 - .../AG_CommonStyle_Switch_Widthandheight.java | 69 - .../AG_CommonStyle_Text_Background_Color.java | 57 - .../AG_CommonStyle_Text_Widthandheight.java | 69 - ...AG_CommonStyle_Video_Background_Color.java | 57 - .../AG_CommonStyle_Video_Widthandheight.java | 69 - .../AG_CommonStyle_Web_Background_Color.java | 57 - .../AG_CommonStyle_Web_Widthandheight.java | 69 - .../uitest/TC_AG/AG_Gesture_Div_Click.java | 45 - .../uitest/TC_AG/AG_Gesture_Div_Conflict.java | 45 - .../TC_AG/AG_Gesture_Div_Longpress.java | 45 - .../weex/uitest/TC_AG/AG_Gesture_Div_Pan.java | 45 - .../uitest/TC_AG/AG_Gesture_Div_Swipe.java | 45 - .../uitest/TC_AG/AG_Gesture_Div_Touch.java | 45 - .../uitest/TC_AG/AG_Image_Image_Onload.java | 45 - .../uitest/TC_AG/AG_Image_Image_Resize.java | 63 - .../weex/uitest/TC_AG/AG_Image_Image_Src.java | 57 - .../TC_AG/AG_Input_Input_Autofocus.java | 57 - .../uitest/TC_AG/AG_Input_Input_Color.java | 57 - .../uitest/TC_AG/AG_Input_Input_Disabled.java | 57 - .../uitest/TC_AG/AG_Input_Input_Event.java | 45 - .../TC_AG/AG_Input_Input_Font_Size.java | 57 - .../TC_AG/AG_Input_Input_Font_Style.java | 57 - .../TC_AG/AG_Input_Input_Font_Weight.java | 57 - .../TC_AG/AG_Input_Input_Placeholder.java | 57 - .../AG_Input_Input_Placeholder_Color.java | 57 - .../TC_AG/AG_Input_Input_Text_Align.java | 63 - .../uitest/TC_AG/AG_Input_Input_Type.java | 75 - .../uitest/TC_AG/AG_Input_Input_Value.java | 63 - .../weex/uitest/TC_AG/AG_Margin_A_Margin.java | 57 - .../TC_AG/AG_Margin_A_Margin_Bottom.java | 57 - .../uitest/TC_AG/AG_Margin_A_Margin_Left.java | 57 - .../TC_AG/AG_Margin_A_Margin_Right.java | 57 - .../uitest/TC_AG/AG_Margin_A_Margin_Top.java | 57 - .../uitest/TC_AG/AG_Margin_Div_Margin.java | 57 - .../TC_AG/AG_Margin_Div_Margin_Bottom.java | 57 - .../TC_AG/AG_Margin_Div_Margin_Left.java | 57 - .../TC_AG/AG_Margin_Div_Margin_Right.java | 57 - .../TC_AG/AG_Margin_Div_Margin_Top.java | 57 - .../uitest/TC_AG/AG_Margin_Image_Margin.java | 57 - .../TC_AG/AG_Margin_Image_Margin_Bottom.java | 57 - .../TC_AG/AG_Margin_Image_Margin_Left.java | 57 - .../TC_AG/AG_Margin_Image_Margin_Right.java | 57 - .../TC_AG/AG_Margin_Image_Margin_Top.java | 57 - .../uitest/TC_AG/AG_Margin_Input_Margin.java | 57 - .../TC_AG/AG_Margin_Input_Margin_Bottom.java | 57 - .../TC_AG/AG_Margin_Input_Margin_Left.java | 57 - .../TC_AG/AG_Margin_Input_Margin_Right.java | 57 - .../TC_AG/AG_Margin_Input_Margin_Top.java | 57 - .../uitest/TC_AG/AG_Margin_Switch_Margin.java | 57 - .../TC_AG/AG_Margin_Switch_Margin_Bottom.java | 57 - .../TC_AG/AG_Margin_Switch_Margin_Left.java | 57 - .../TC_AG/AG_Margin_Switch_Margin_Right.java | 57 - .../TC_AG/AG_Margin_Switch_Margin_Top.java | 57 - .../uitest/TC_AG/AG_Margin_Text_Margin.java | 57 - .../TC_AG/AG_Margin_Text_Margin_Bottom.java | 57 - .../TC_AG/AG_Margin_Text_Margin_Left.java | 57 - .../TC_AG/AG_Margin_Text_Margin_Right.java | 57 - .../TC_AG/AG_Margin_Text_Margin_Top.java | 57 - .../uitest/TC_AG/AG_Margin_Video_Margin.java | 57 - .../TC_AG/AG_Margin_Video_Margin_Bottom.java | 57 - .../TC_AG/AG_Margin_Video_Margin_Left.java | 57 - .../TC_AG/AG_Margin_Video_Margin_Right.java | 57 - .../TC_AG/AG_Margin_Video_Margin_Top.java | 57 - .../uitest/TC_AG/AG_Margin_Web_Margin.java | 57 - .../TC_AG/AG_Margin_Web_Margin_Bottom.java | 57 - .../TC_AG/AG_Margin_Web_Margin_Left.java | 57 - .../TC_AG/AG_Margin_Web_Margin_Right.java | 57 - .../TC_AG/AG_Margin_Web_Margin_Top.java | 57 - .../TC_AG/AG_Switch_Switch_Checked.java | 57 - .../TC_AG/AG_Switch_Switch_Onchange.java | 45 - .../weex/uitest/TC_AG/AG_Text_Text_Color.java | 57 - .../uitest/TC_AG/AG_Text_Text_Font_Size.java | 57 - .../uitest/TC_AG/AG_Text_Text_Font_Style.java | 57 - .../TC_AG/AG_Text_Text_Font_Weight.java | 57 - .../TC_AG/AG_Text_Text_Line_Height.java | 69 - .../uitest/TC_AG/AG_Text_Text_Text_Align.java | 63 - .../TC_AG/AG_Text_Text_Text_Decoration.java | 63 - .../TC_AG/AG_Text_Text_Text_Overflow.java | 75 - .../weex/uitest/TC_AG/AG_Text_Text_Value.java | 63 - .../TC_AG/AG_Video_Video_Auto_Play.java | 57 - .../uitest/TC_AG/AG_Video_Video_Event.java | 45 - .../TC_AG/AG_Video_Video_Play_Status.java | 57 - .../weex/uitest/TC_AG/AG_Video_Video_Src.java | 57 - .../weex/uitest/TC_AG/AG_Web_Web_Event.java | 45 - .../weex/uitest/TC_AG/AG_Web_Web_Src.java | 57 - .../TC_AHref/WeexUiTestCaseTCAHrefEvent.java | 296 -- .../TC_AHref/WeexUiTestCaseTCAHrefStyle.java | 267 -- .../TC_AHref/WeexUiTestCaseTCAHrefUpdate.java | 318 -- .../weex/uitest/TC_Animation/.gitignore | 0 .../weex/uitest/TC_AppendTree/.gitignore | 0 .../weex/uitest/TC_BizComponet/.gitignore | 0 .../weex/uitest/TC_BizModule/.gitignore | 0 .../TC_Color/WeexUiTestCaseTcColorType.java | 237 -- .../TC_Color/WeexUiTestCaseTcColorUpdate.java | 258 -- .../weex/uitest/TC_DataBind/.gitignore | 0 .../WeexUiTestCaseTcDowngradeAppVFalse.java | 219 -- .../WeexUiTestCaseTcDowngradeAppVTrue.java | 226 -- .../WeexUiTestCaseTcDowngradeDevMFalse.java | 226 -- .../WeexUiTestCaseTcDowngradeDevMTrue.java | 225 -- .../WeexUiTestCaseTcDowngradeOSVFalse.java | 225 -- .../WeexUiTestCaseTcDowngradeOSVTrue.java | 226 -- .../WeexUiTestCaseTcDowngradeWeexVFalse.java | 225 -- .../WeexUiTestCaseTcDowngradeWeexVTrue.java | 224 -- .../alibaba/weex/uitest/TC_Gesture/.gitignore | 0 .../TC_Image/WeexUiTestCaseTcImageUpdate.java | 572 --- .../TC_Input/WeexUiTestCaseTcInputEvent.java | 393 -- .../WeexUiTestCaseTcInputPlaceholder.java | 235 -- .../TC_Input/WeexUiTestCaseTcInputStyle.java | 236 -- .../TC_Input/WeexUiTestCaseTcInputType.java | 236 -- .../alibaba/weex/uitest/TC_List/.gitignore | 0 .../alibaba/weex/uitest/TC_Monitor/.gitignore | 0 .../alibaba/weex/uitest/TC_PopBox/.gitignore | 0 .../weex/uitest/TC_Scroller/.gitignore | 0 .../alibaba/weex/uitest/TC_Select/.gitignore | 0 .../TC_Slider/WeexUiTestCaseTcSlider.java | 284 -- .../alibaba/weex/uitest/TC_Style/.gitignore | 0 .../alibaba/weex/uitest/TC_Switch/.gitignore | 0 .../WeexUiTestCaseTcTextStyleColumn.java | 266 -- .../TC_Text/WeexUiTestCaseTcTextStyleOwn.java | 236 -- .../TC_Text/WeexUiTestCaseTcTextStyleRow.java | 266 -- .../TC_Text/WeexUiTestCaseTcTextType.java | 236 -- .../alibaba/weex/uitest/TC_Video/.gitignore | 0 .../com/alibaba/weex/uitest/TC_Web/.gitignore | 0 .../uitest/WeexUiTestCaseTcElementOpt.java | 470 --- .../java/com/alibaba/weex/util/Falcon.java | 330 -- .../com/alibaba/weex/util/ScreenShot.java | 390 -- .../com/alibaba/weex/util/SdCardHelper.java | 41 - .../java/com/alibaba/weex/util/TestFlow.java | 448 --- .../java/com/alibaba/weex/util/ViewUtil.java | 166 - .../app/src/main/AndroidManifest.xml | 143 - .../app/src/main/assets/about.weex.js | 3309 ----------------- .../app/src/main/assets/examples.weex.js | 2598 ------------- .../app/src/main/assets/guide.weex.js | 3191 ---------------- .../app/src/main/assets/landing.weex.js | 2319 ------------ .../src/main/assets/lite_template/card.wasm | Bin 8629 -> 0 bytes .../app/src/main/assets/lite_template/case.js | 469 --- .../app/src/main/assets/news.weex.js | 2266 ----------- .../app/src/main/assets/videoplus.js | 298 -- .../src/main/assets/weex_config_search.json | 36 - .../app/src/main/ic_launcher-web.png | Bin 19935 -> 0 bytes .../com/alibaba/weex/BenchmarkActivity.java | 224 -- .../java/com/alibaba/weex/IndexActivity.java | 199 - .../com/alibaba/weex/SliceTestActivity.java | 519 --- .../java/com/alibaba/weex/SplashActivity.java | 64 - .../main/java/com/alibaba/weex/Utility.java | 91 - .../java/com/alibaba/weex/WXApplication.java | 207 -- .../java/com/alibaba/weex/WXBaseActivity.java | 31 - .../java/com/alibaba/weex/WXPageActivity.java | 674 ---- .../com/alibaba/weex/WXPreLoadManager.java | 93 - .../com/alibaba/weex/constants/Constants.java | 34 - .../extend/WXInstanceStatisticsListener.java | 82 - .../weex/extend/adapter/ApmGenerator.java | 33 - .../DefaultAccessibilityRoleAdapter.java | 62 - .../extend/adapter/DefaultConfigAdapter.java | 32 - .../adapter/InterceptWXHttpAdapter.java | 80 - .../adapter/WXAnalyzerDemoListener.java | 38 - .../extend/adapter/WXInstanceApmAdapter.java | 167 - .../weex/extend/component/RichText.java | 54 - .../extend/component/WXComponentSyncTest.java | 47 - .../alibaba/weex/extend/component/WXMask.java | 169 - .../weex/extend/component/WXParallax.java | 364 -- .../weex/extend/module/GeolocationModule.java | 159 - .../alibaba/weex/extend/module/MyModule.java | 32 - .../weex/extend/module/RenderModule.java | 33 - .../weex/extend/module/SyncTestModule.java | 71 - .../weex/extend/module/WXEventModule.java | 138 - .../weex/extend/module/WXTitleBar.java | 127 - .../weex/extend/module/WXWsonTestModule.java | 101 - .../module/location/DefaultLocation.java | 373 -- .../extend/module/location/ILocatable.java | 94 - .../module/location/LocationFactory.java | 30 - .../alibaba/weex/extend/view/WXMaskView.java | 34 - .../alibaba/weex/https/HotRefreshManager.java | 119 - .../com/alibaba/weex/https/WXHttpManager.java | 60 - .../alibaba/weex/https/WXHttpResponse.java | 25 - .../com/alibaba/weex/https/WXHttpTask.java | 26 - .../weex/https/WXOkHttpDispatcher.java | 103 - .../alibaba/weex/https/WXRequestListener.java | 26 - .../weex/update/CheckForUpdateUtil.java | 167 - .../com/alibaba/weex/update/Downloader.java | 130 - .../alibaba/weex/update/UpdateService.java | 126 - .../alibaba/weex/util/CoverageDataDumper.java | 36 - .../alibaba/weex/util/JacocoCodeCoverage.java | 93 - .../client/android/AmbientLightManager.java | 87 - .../zxing/client/android/BeepManager.java | 133 - .../zxing/client/android/CaptureActivity.java | 780 ---- .../android/CaptureActivityHandler.java | 164 - .../google/zxing/client/android/Contents.java | 115 - .../client/android/DecodeFormatManager.java | 106 - .../zxing/client/android/DecodeHandler.java | 132 - .../client/android/DecodeHintManager.java | 236 -- .../zxing/client/android/DecodeThread.java | 113 - .../zxing/client/android/FinishListener.java | 49 - .../zxing/client/android/HelpActivity.java | 68 - .../zxing/client/android/HttpHelper.java | 228 -- .../zxing/client/android/InactivityTimer.java | 116 - .../zxing/client/android/IntentSource.java | 26 - .../google/zxing/client/android/Intents.java | 278 -- .../zxing/client/android/LocaleManager.java | 188 - .../client/android/PreferencesActivity.java | 72 - .../client/android/PreferencesFragment.java | 129 - .../android/ScanFromWebPageManager.java | 77 - .../ViewfinderResultPointCallback.java | 35 - .../zxing/client/android/ViewfinderView.java | 191 - .../android/book/BrowseBookListener.java | 62 - .../book/SearchBookContentsActivity.java | 274 -- .../book/SearchBookContentsAdapter.java | 61 - .../book/SearchBookContentsListItem.java | 85 - .../book/SearchBookContentsResult.java | 66 - .../android/camera/AutoFocusManager.java | 132 - .../camera/CameraConfigurationManager.java | 252 -- .../camera/CameraConfigurationUtils.java | 447 --- .../client/android/camera/CameraManager.java | 338 -- .../client/android/camera/FrontLightMode.java | 43 - .../android/camera/PreviewCallback.java | 56 - .../android/camera/open/CameraFacing.java | 24 - .../android/camera/open/OpenCamera.java | 52 - .../camera/open/OpenCameraInterface.java | 95 - .../android/clipboard/ClipboardInterface.java | 58 - .../client/android/encode/ContactEncoder.java | 96 - .../client/android/encode/EncodeActivity.java | 242 -- .../client/android/encode/Formatter.java | 33 - .../android/encode/MECARDContactEncoder.java | 97 - .../client/android/encode/QRCodeEncoder.java | 389 -- .../android/encode/VCardContactEncoder.java | 155 - .../android/encode/VCardFieldFormatter.java | 79 - .../encode/VCardTelDisplayFormatter.java | 73 - .../client/android/history/DBHelper.java | 60 - .../android/history/HistoryActivity.java | 163 - .../client/android/history/HistoryItem.java | 50 - .../android/history/HistoryItemAdapter.java | 72 - .../android/history/HistoryManager.java | 366 -- .../result/AddressBookResultHandler.java | 219 -- .../android/result/CalendarResultHandler.java | 186 - .../result/EmailAddressResultHandler.java | 71 - .../android/result/GeoResultHandler.java | 67 - .../android/result/ISBNResultHandler.java | 76 - .../android/result/ProductResultHandler.java | 83 - .../android/result/ResultButtonListener.java | 40 - .../client/android/result/ResultHandler.java | 513 --- .../android/result/ResultHandlerFactory.java | 64 - .../android/result/SMSResultHandler.java | 85 - .../android/result/TelResultHandler.java | 82 - .../android/result/TextResultHandler.java | 76 - .../android/result/URIResultHandler.java | 105 - .../android/result/WifiResultHandler.java | 92 - .../supplement/BookResultInfoRetriever.java | 106 - .../ProductResultInfoRetriever.java | 83 - .../supplement/SupplementalInfoRetriever.java | 181 - .../result/supplement/TitleRetriever.java | 71 - .../supplement/URIResultInfoRetriever.java | 64 - .../zxing/client/android/share/AppInfo.java | 65 - .../android/share/AppPickerActivity.java | 64 - .../client/android/share/BookMarkColumns.java | 68 - .../client/android/share/BookmarkAdapter.java | 84 - .../android/share/BookmarkPickerActivity.java | 89 - .../android/share/LoadPackagesAsyncTask.java | 116 - .../client/android/share/ShareActivity.java | 299 -- .../client/android/wifi/NetworkType.java | 41 - .../android/wifi/WifiConfigManager.java | 226 -- .../res/drawable-hdpi/ic_action_refresh.png | Bin 663 -> 0 bytes .../main/res/drawable-hdpi/ic_action_scan.png | Bin 304 -> 0 bytes .../res/drawable-mdpi/ic_action_refresh.png | Bin 508 -> 0 bytes .../main/res/drawable-mdpi/ic_action_scan.png | Bin 191 -> 0 bytes .../main/res/drawable-v21/ic_menu_camera.xml | 30 - .../main/res/drawable-v21/ic_menu_gallery.xml | 27 - .../main/res/drawable-v21/ic_menu_manage.xml | 27 - .../main/res/drawable-v21/ic_menu_send.xml | 27 - .../main/res/drawable-v21/ic_menu_share.xml | 27 - .../res/drawable-v21/ic_menu_slideshow.xml | 27 - .../res/drawable-xhdpi/ic_action_refresh.png | Bin 895 -> 0 bytes .../res/drawable-xhdpi/ic_action_scan.png | Bin 344 -> 0 bytes .../res/drawable-xxhdpi/ic_action_refresh.png | Bin 1239 -> 0 bytes .../res/drawable-xxhdpi/ic_action_scan.png | Bin 588 -> 0 bytes .../src/main/res/drawable/side_nav_bar.xml | 27 - .../src/main/res/layout/activity_index.xml | 46 - .../main/res/layout/activity_slice_test.xml | 32 - .../src/main/res/layout/activity_splash.xml | 36 - .../src/main/res/layout/activity_wxpage.xml | 79 - .../app/src/main/res/layout/app_bar_main.xml | 53 - .../main/res/layout/app_picker_list_item.xml | 38 - .../res/layout/bookmark_picker_list_item.xml | 38 - .../app/src/main/res/layout/camera.xml | 36 - .../app/src/main/res/layout/capture.xml | 204 - .../app/src/main/res/layout/catalog_item.xml | 32 - .../layout/common_update_notify_dialog.xml | 24 - .../app/src/main/res/layout/content_main.xml | 32 - .../src/main/res/layout/content_wx_main.xml | 42 - .../app/src/main/res/layout/encode.xml | 53 - .../app/src/main/res/layout/hello_weex.xml | 37 - .../app/src/main/res/layout/help.xml | 21 - .../src/main/res/layout/history_list_item.xml | 38 - .../app/src/main/res/layout/id_stub.xml | 75 - .../main/res/layout/search_book_contents.xml | 54 - .../layout/search_book_contents_header.xml | 24 - .../layout/search_book_contents_list_item.xml | 40 - .../app/src/main/res/layout/share.xml | 95 - .../app/src/main/res/menu/capture.xml | 38 - .../app/src/main/res/menu/encode.xml | 28 - .../app/src/main/res/menu/history.xml | 28 - .../playground/app/src/main/res/menu/main.xml | 32 - .../app/src/main/res/menu/main_scan.xml | 27 - .../app/src/main/res/menu/refresh.xml | 27 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 1755 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1221 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 2451 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 3939 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 5608 -> 0 bytes .../playground/app/src/main/res/raw/beep.ogg | Bin 6401 -> 0 bytes .../app/src/main/res/values-v21/styles.xml | 31 - .../app/src/main/res/values-w820dp/dimens.xml | 24 - .../src/main/res/values-zh-rCN/strings.xml | 154 - .../app/src/main/res/values/attrs.xml | 35 - .../app/src/main/res/values/colors.xml | 26 - .../app/src/main/res/values/dimens.xml | 28 - .../app/src/main/res/values/drawables.xml | 26 - .../src/main/res/values/scan_code_arrays.xml | 62 - .../src/main/res/values/scan_code_colors.xml | 29 - .../src/main/res/values/scan_code_dimens.xml | 20 - .../app/src/main/res/values/scan_code_ids.xml | 25 - .../src/main/res/values/scan_code_strings.xml | 140 - .../src/main/res/values/scan_code_styles.xml | 48 - .../app/src/main/res/values/strings.xml | 51 - .../app/src/main/res/values/styles.xml | 52 - .../app/src/main/res/values/themes.xml | 24 - .../app/src/main/res/xml/filepaths.xml | 6 - .../app/src/main/res/xml/preferences.xml | 133 - .../main/res/xml/scan_code_preferences.xml | 130 - android/playground/app/tools/weex.jks | Bin 2174 -> 0 bytes android/sdk/build.gradle | 16 + android/settings.gradle | 19 +- weex-playground | 1 + 521 files changed, 68 insertions(+), 58223 deletions(-) create mode 100644 .gitmodules delete mode 100644 android/commons/build.gradle delete mode 100644 android/commons/proguard-rules.pro delete mode 100644 android/commons/src/androidTest/java/com/alibaba/weex/commons/ApplicationTest.java delete mode 100644 android/commons/src/main/AndroidManifest.xml delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/AbstractWeexActivity.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/SimpleWeexActivity.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/WXAnalyzerDelegate.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/BlurTool.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/BlurTransformation.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapter.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapterFactory.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageAdapter.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageComponent.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageView.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/JSExceptionAdapter.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/util/AssertUtil.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/util/RequestIdGenerator.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/util/ScreenUtil.java delete mode 100644 android/commons/src/main/java/com/alibaba/weex/commons/util/WSEventReporter.java delete mode 100644 android/commons/src/main/res/values/strings.xml delete mode 100755 android/playground/app/build.gradle delete mode 100755 android/playground/app/proguard-rules.pro delete mode 100644 android/playground/app/src/androidTest/AndroidManifest.xml delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/ApplicationTest.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/WeappJsBaseTestCase.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/BenchmarkTest.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/BoxPlot.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/Repeat.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/RepeatRule.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/WeexNativeCompareTest.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_AHref_A_Href.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Left_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Left_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Right_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Right_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Left_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Left_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Right_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Right_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Left_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Left_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Right_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Right_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Left_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Left_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Right_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Right_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Left_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Left_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Right_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Right_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Left_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Left_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Right_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Right_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Left_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Left_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Right_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Right_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Left_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Left_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Right_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Right_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Left_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Right_Radius.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Width.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_A_If.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Div_If.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Image_If.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Input_If.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Switch_If.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Text_If.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Video_If.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Web_If.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_A_Onclick.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Div_Onclick.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Image_Onclick.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Input_Onclick.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Switch_Onclick.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Text_Onclick.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Video_Onclick.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Web_Onclick.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_A_Background_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_A_Widthandheight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Div_Background_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Div_Widthandheight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Image_Background_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Image_Widthandheight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Input_Background_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Input_Widthandheight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Switch_Background_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Switch_Widthandheight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Text_Background_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Text_Widthandheight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Video_Background_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Video_Widthandheight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Web_Background_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Web_Widthandheight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Click.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Conflict.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Longpress.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Pan.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Swipe.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Touch.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Onload.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Resize.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Src.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Autofocus.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Disabled.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Event.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Size.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Weight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Placeholder.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Placeholder_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Text_Align.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Type.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Value.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Bottom.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Left.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Right.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Top.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Bottom.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Left.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Right.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Top.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Bottom.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Left.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Right.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Top.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Bottom.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Left.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Right.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Top.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Bottom.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Left.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Right.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Top.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Bottom.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Left.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Right.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Top.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Bottom.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Left.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Right.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Top.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Bottom.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Left.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Right.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Top.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Switch_Switch_Checked.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Switch_Switch_Onchange.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Color.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Size.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Style.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Weight.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Line_Height.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Align.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Decoration.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Overflow.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Value.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Auto_Play.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Event.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Play_Status.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Src.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Web_Web_Event.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Web_Web_Src.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AHref/WeexUiTestCaseTCAHrefEvent.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AHref/WeexUiTestCaseTCAHrefStyle.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AHref/WeexUiTestCaseTCAHrefUpdate.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Animation/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AppendTree/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_BizComponet/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_BizModule/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Color/WeexUiTestCaseTcColorType.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Color/WeexUiTestCaseTcColorUpdate.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_DataBind/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Downgrade/WeexUiTestCaseTcDowngradeAppVFalse.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Downgrade/WeexUiTestCaseTcDowngradeAppVTrue.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Downgrade/WeexUiTestCaseTcDowngradeDevMFalse.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Downgrade/WeexUiTestCaseTcDowngradeDevMTrue.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Downgrade/WeexUiTestCaseTcDowngradeOSVFalse.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Downgrade/WeexUiTestCaseTcDowngradeOSVTrue.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Downgrade/WeexUiTestCaseTcDowngradeWeexVFalse.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Downgrade/WeexUiTestCaseTcDowngradeWeexVTrue.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Gesture/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Image/WeexUiTestCaseTcImageUpdate.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Input/WeexUiTestCaseTcInputEvent.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Input/WeexUiTestCaseTcInputPlaceholder.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Input/WeexUiTestCaseTcInputStyle.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Input/WeexUiTestCaseTcInputType.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_List/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Monitor/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_PopBox/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Scroller/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Select/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Slider/WeexUiTestCaseTcSlider.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Style/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Switch/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Text/WeexUiTestCaseTcTextStyleColumn.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Text/WeexUiTestCaseTcTextStyleOwn.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Text/WeexUiTestCaseTcTextStyleRow.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Text/WeexUiTestCaseTcTextType.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Video/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_Web/.gitignore delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/WeexUiTestCaseTcElementOpt.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/util/Falcon.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/util/ScreenShot.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/util/SdCardHelper.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/util/TestFlow.java delete mode 100644 android/playground/app/src/androidTest/java/com/alibaba/weex/util/ViewUtil.java delete mode 100755 android/playground/app/src/main/AndroidManifest.xml delete mode 100644 android/playground/app/src/main/assets/about.weex.js delete mode 100644 android/playground/app/src/main/assets/examples.weex.js delete mode 100644 android/playground/app/src/main/assets/guide.weex.js delete mode 100644 android/playground/app/src/main/assets/landing.weex.js delete mode 100644 android/playground/app/src/main/assets/lite_template/card.wasm delete mode 100644 android/playground/app/src/main/assets/lite_template/case.js delete mode 100644 android/playground/app/src/main/assets/news.weex.js delete mode 100644 android/playground/app/src/main/assets/videoplus.js delete mode 100644 android/playground/app/src/main/assets/weex_config_search.json delete mode 100644 android/playground/app/src/main/ic_launcher-web.png delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/BenchmarkActivity.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/SliceTestActivity.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/SplashActivity.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/Utility.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/WXBaseActivity.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/WXPreLoadManager.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/constants/Constants.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/WXInstanceStatisticsListener.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/ApmGenerator.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/DefaultAccessibilityRoleAdapter.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/DefaultConfigAdapter.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/InterceptWXHttpAdapter.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/WXAnalyzerDemoListener.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/WXInstanceApmAdapter.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/component/RichText.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXComponentSyncTest.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXMask.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXParallax.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/GeolocationModule.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/MyModule.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/RenderModule.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/SyncTestModule.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXEventModule.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXTitleBar.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXWsonTestModule.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/DefaultLocation.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/ILocatable.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/LocationFactory.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/extend/view/WXMaskView.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/https/HotRefreshManager.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpManager.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpResponse.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpTask.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/https/WXOkHttpDispatcher.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/https/WXRequestListener.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/update/CheckForUpdateUtil.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/update/Downloader.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/update/UpdateService.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/util/CoverageDataDumper.java delete mode 100644 android/playground/app/src/main/java/com/alibaba/weex/util/JacocoCodeCoverage.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/AmbientLightManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/BeepManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/CaptureActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/CaptureActivityHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/Contents.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeFormatManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeHintManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeThread.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/FinishListener.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/HelpActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/HttpHelper.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/InactivityTimer.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/IntentSource.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/Intents.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/LocaleManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/PreferencesActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/PreferencesFragment.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ScanFromWebPageManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ViewfinderResultPointCallback.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ViewfinderView.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/BrowseBookListener.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsAdapter.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsListItem.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsResult.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/AutoFocusManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraConfigurationManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraConfigurationUtils.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/FrontLightMode.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/PreviewCallback.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/CameraFacing.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/OpenCamera.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/OpenCameraInterface.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/clipboard/ClipboardInterface.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/ContactEncoder.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/EncodeActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/Formatter.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/MECARDContactEncoder.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/QRCodeEncoder.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardContactEncoder.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardFieldFormatter.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardTelDisplayFormatter.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/DBHelper.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryItem.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryItemAdapter.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryManager.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/AddressBookResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/CalendarResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/EmailAddressResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/GeoResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ISBNResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ProductResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultButtonListener.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultHandlerFactory.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/SMSResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/TelResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/TextResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/URIResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/WifiResultHandler.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/BookResultInfoRetriever.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/ProductResultInfoRetriever.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/SupplementalInfoRetriever.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/TitleRetriever.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/URIResultInfoRetriever.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/AppInfo.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/AppPickerActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookMarkColumns.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookmarkAdapter.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookmarkPickerActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/LoadPackagesAsyncTask.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/ShareActivity.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/wifi/NetworkType.java delete mode 100755 android/playground/app/src/main/java_zxing/com/google/zxing/client/android/wifi/WifiConfigManager.java delete mode 100755 android/playground/app/src/main/res/drawable-hdpi/ic_action_refresh.png delete mode 100755 android/playground/app/src/main/res/drawable-hdpi/ic_action_scan.png delete mode 100755 android/playground/app/src/main/res/drawable-mdpi/ic_action_refresh.png delete mode 100755 android/playground/app/src/main/res/drawable-mdpi/ic_action_scan.png delete mode 100755 android/playground/app/src/main/res/drawable-v21/ic_menu_camera.xml delete mode 100755 android/playground/app/src/main/res/drawable-v21/ic_menu_gallery.xml delete mode 100755 android/playground/app/src/main/res/drawable-v21/ic_menu_manage.xml delete mode 100755 android/playground/app/src/main/res/drawable-v21/ic_menu_send.xml delete mode 100755 android/playground/app/src/main/res/drawable-v21/ic_menu_share.xml delete mode 100755 android/playground/app/src/main/res/drawable-v21/ic_menu_slideshow.xml delete mode 100755 android/playground/app/src/main/res/drawable-xhdpi/ic_action_refresh.png delete mode 100755 android/playground/app/src/main/res/drawable-xhdpi/ic_action_scan.png delete mode 100755 android/playground/app/src/main/res/drawable-xxhdpi/ic_action_refresh.png delete mode 100755 android/playground/app/src/main/res/drawable-xxhdpi/ic_action_scan.png delete mode 100755 android/playground/app/src/main/res/drawable/side_nav_bar.xml delete mode 100755 android/playground/app/src/main/res/layout/activity_index.xml delete mode 100644 android/playground/app/src/main/res/layout/activity_slice_test.xml delete mode 100755 android/playground/app/src/main/res/layout/activity_splash.xml delete mode 100755 android/playground/app/src/main/res/layout/activity_wxpage.xml delete mode 100755 android/playground/app/src/main/res/layout/app_bar_main.xml delete mode 100755 android/playground/app/src/main/res/layout/app_picker_list_item.xml delete mode 100755 android/playground/app/src/main/res/layout/bookmark_picker_list_item.xml delete mode 100755 android/playground/app/src/main/res/layout/camera.xml delete mode 100755 android/playground/app/src/main/res/layout/capture.xml delete mode 100755 android/playground/app/src/main/res/layout/catalog_item.xml delete mode 100644 android/playground/app/src/main/res/layout/common_update_notify_dialog.xml delete mode 100755 android/playground/app/src/main/res/layout/content_main.xml delete mode 100755 android/playground/app/src/main/res/layout/content_wx_main.xml delete mode 100755 android/playground/app/src/main/res/layout/encode.xml delete mode 100644 android/playground/app/src/main/res/layout/hello_weex.xml delete mode 100755 android/playground/app/src/main/res/layout/help.xml delete mode 100755 android/playground/app/src/main/res/layout/history_list_item.xml delete mode 100644 android/playground/app/src/main/res/layout/id_stub.xml delete mode 100755 android/playground/app/src/main/res/layout/search_book_contents.xml delete mode 100755 android/playground/app/src/main/res/layout/search_book_contents_header.xml delete mode 100755 android/playground/app/src/main/res/layout/search_book_contents_list_item.xml delete mode 100755 android/playground/app/src/main/res/layout/share.xml delete mode 100755 android/playground/app/src/main/res/menu/capture.xml delete mode 100755 android/playground/app/src/main/res/menu/encode.xml delete mode 100755 android/playground/app/src/main/res/menu/history.xml delete mode 100755 android/playground/app/src/main/res/menu/main.xml delete mode 100755 android/playground/app/src/main/res/menu/main_scan.xml delete mode 100755 android/playground/app/src/main/res/menu/refresh.xml delete mode 100755 android/playground/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100755 android/playground/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100755 android/playground/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100755 android/playground/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100755 android/playground/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100755 android/playground/app/src/main/res/raw/beep.ogg delete mode 100755 android/playground/app/src/main/res/values-v21/styles.xml delete mode 100755 android/playground/app/src/main/res/values-w820dp/dimens.xml delete mode 100755 android/playground/app/src/main/res/values-zh-rCN/strings.xml delete mode 100755 android/playground/app/src/main/res/values/attrs.xml delete mode 100755 android/playground/app/src/main/res/values/colors.xml delete mode 100755 android/playground/app/src/main/res/values/dimens.xml delete mode 100755 android/playground/app/src/main/res/values/drawables.xml delete mode 100755 android/playground/app/src/main/res/values/scan_code_arrays.xml delete mode 100755 android/playground/app/src/main/res/values/scan_code_colors.xml delete mode 100755 android/playground/app/src/main/res/values/scan_code_dimens.xml delete mode 100755 android/playground/app/src/main/res/values/scan_code_ids.xml delete mode 100755 android/playground/app/src/main/res/values/scan_code_strings.xml delete mode 100755 android/playground/app/src/main/res/values/scan_code_styles.xml delete mode 100755 android/playground/app/src/main/res/values/strings.xml delete mode 100755 android/playground/app/src/main/res/values/styles.xml delete mode 100755 android/playground/app/src/main/res/values/themes.xml delete mode 100644 android/playground/app/src/main/res/xml/filepaths.xml delete mode 100755 android/playground/app/src/main/res/xml/preferences.xml delete mode 100755 android/playground/app/src/main/res/xml/scan_code_preferences.xml delete mode 100644 android/playground/app/tools/weex.jks create mode 160000 weex-playground diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..95368a3c8e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "weex-playground"] + path = weex-playground + url = https://github.com/apache/incubator-weex-playground.git + branch = master diff --git a/android/README.md b/android/README.md index 70c809bcd3..29507f808e 100644 --- a/android/README.md +++ b/android/README.md @@ -3,4 +3,21 @@ See https://gradle.org/install#with-a-package-manager ## Build Weex run `gradle build` -Playground app artifact will be under 'playground/app/build' +Playground app artifact will be under 'playground/build' +## The submodule weex-playground +[Weex Playground](https://github.com/apache/incubator-weex-playground) can be used to test and preview weex pages on Android and it has been added as a submodule. +### Relationship between weex and playground +* The playground submodule will be cloned and updated automatically when developers clone the ‘incubator-weex’ repo and build it.In this case, playground project will implement the source code of weex-sdk. +* When developer directly clone the 'weex-playground' repo and run it separately, the playground project will implement a corresponding aar version of weex-sdk. +### When to publish SNAPSHOT +When some commits of playground rely on unpublished features of weex-sdk,a SNAPSHOT of weex-sdk will be needed to support it. +### How to publish SNAPSHOT + `cd android ` +`./gradlew clean install ArtifactoryPublish -PweexVersion=$PUBLISH_VERSION -PbintrayUser=alibabaweex -PbintrayApiKey=$JCENTER_TOKEN ` + +* Explanation for variable: +$PUBLISH_VERSION The version of snapshot, like 0.26.1.3-SNAPSHOT +$JCENTER_TOKEN The private key for JCenter (https://bintray.com/alibabaweex/maven/weex_sdk/), which is the distribution channel for Android + + + diff --git a/android/build.gradle b/android/build.gradle index 57fd47b95e..b8646ac359 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -49,18 +49,20 @@ subprojects { } } } - ext { - compileSdkVersion=26 - buildToolsVersion="26.0.3" - minSdkVersion=14 - targetSdkVersion=26 - supportLibVersion="26.0.2" - fastjsonLibVersion="1.1.46.android" - //Default value for buildCpp is true - buildCpp = !project.hasProperty("buildCpp") || buildCpp.equals("true") - //Default value for disableCov is false - disableCov = project.hasProperty("disableCov") && disableCov.equals("true") - } +} +ext { + compileSdkVersion=26 + buildToolsVersion="26.0.3" + minSdkVersion=14 + targetSdkVersion=26 + supportLibVersion="26.0.2" + fastjsonLibVersion="1.1.46.android" + //Default value for buildCpp is true + buildCpp = !project.hasProperty("buildCpp") || buildCpp.equals("true") + //Default value for disableCov is false + disableCov = project.hasProperty("disableCov") && disableCov.equals("true") + implementFromWeex = true + } //task clean(type: Delete) { diff --git a/android/commons/build.gradle b/android/commons/build.gradle deleted file mode 100644 index d6d07ebf20..0000000000 --- a/android/commons/build.gradle +++ /dev/null @@ -1,77 +0,0 @@ -plugins { - id "com.github.hierynomus.license" version "0.14.0" -} - -apply plugin: 'com.android.library' - -android { - - compileSdkVersion project.compileSdkVersion -// buildToolsVersion project.buildToolsVersion - resourcePrefix "weexcomm" - - defaultConfig { - minSdkVersion project.minSdkVersion - targetSdkVersion project.targetSdkVersion - versionCode 1 - versionName "1.0" - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 - } - - lintOptions { - abortOnError false - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - - debug { - jniDebuggable true - debuggable true - - } - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(':weex_sdk') - implementation "com.android.support:support-v4:${project.supportLibVersion}" - implementation "com.android.support:appcompat-v7:${project.supportLibVersion}" - // implementation project(':weex_sdk') - implementation 'com.squareup.picasso:picasso:2.5.2' - implementation 'com.facebook.fresco:fresco:0.10.0' - implementation 'com.taobao.android.weex_inspection:protocol:1.1.4.1' - - compileOnly 'com.taobao.android:weex_analyzer:0.1.0.5' - compileOnly 'com.squareup.okhttp:okhttp:2.3.0' - compileOnly 'com.squareup.okhttp:okhttp-ws:2.3.0' - compileOnly "com.alibaba:fastjson:${project.fastjsonLibVersion}" - - testImplementation 'junit:junit:4.12' - testImplementation 'org.hamcrest:hamcrest-core:1.3' - testImplementation 'org.javassist:javassist:3.20.0-GA' - testImplementation 'org.mockito:mockito-core:1.10.19' - testImplementation 'org.objenesis:objenesis:2.1' - testImplementation 'org.powermock:powermock-core:1.6.4' - testImplementation 'org.powermock:powermock-api-mockito:1.6.4' - testImplementation 'org.powermock:powermock-module-junit4-common:1.6.4' - testImplementation 'org.powermock:powermock-module-junit4:1.6.4' - testImplementation 'org.powermock:powermock-module-junit4-legacy:1.6.4' - testImplementation 'org.powermock:powermock-module-testng:1.6.4' - testImplementation 'org.robolectric:robolectric:3.0-rc3' -} - -if(file('../license/LICENSE').exists()){ - license { - header = file('../license/LICENSE') - } - preBuild.dependsOn licenseFormat -} \ No newline at end of file diff --git a/android/commons/proguard-rules.pro b/android/commons/proguard-rules.pro deleted file mode 100644 index 4acd43d8c3..0000000000 --- a/android/commons/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /Users/sospartan/sdks/android_sdk20130219/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/android/commons/src/androidTest/java/com/alibaba/weex/commons/ApplicationTest.java b/android/commons/src/androidTest/java/com/alibaba/weex/commons/ApplicationTest.java deleted file mode 100644 index d8cab6d87c..0000000000 --- a/android/commons/src/androidTest/java/com/alibaba/weex/commons/ApplicationTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} diff --git a/android/commons/src/main/AndroidManifest.xml b/android/commons/src/main/AndroidManifest.xml deleted file mode 100644 index af187432aa..0000000000 --- a/android/commons/src/main/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/AbstractWeexActivity.java b/android/commons/src/main/java/com/alibaba/weex/commons/AbstractWeexActivity.java deleted file mode 100644 index 8854ce2072..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/AbstractWeexActivity.java +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons; - -import android.graphics.PixelFormat; -import android.graphics.Rect; -import android.os.Bundle; -import android.support.annotation.CallSuper; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup; - -import com.alibaba.fastjson.JSONObject; -import com.alibaba.weex.commons.util.AssertUtil; -import com.alibaba.weex.commons.util.ScreenUtil; -import com.taobao.weex.IWXRenderListener; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.common.Constants; -import com.taobao.weex.common.WXRenderStrategy; -import com.taobao.weex.utils.WXUtils; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; - -/** - * Created by sospartan on 5/30/16. - */ -public abstract class AbstractWeexActivity extends AppCompatActivity implements IWXRenderListener { - private static final String TAG = "AbstractWeexActivity"; - - private ViewGroup mContainer; - private WXSDKInstance mInstance; - - protected WXAnalyzerDelegate mWxAnalyzerDelegate; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - createWeexInstance(); - mInstance.onActivityCreate(); - - mWxAnalyzerDelegate = new WXAnalyzerDelegate(this); - mWxAnalyzerDelegate.onCreate(); - getWindow().setFormat(PixelFormat.TRANSLUCENT); - } - - protected final void setContainer(ViewGroup container){ - mContainer = container; - } - - protected final ViewGroup getContainer(){ - return mContainer; - } - - protected void destoryWeexInstance(){ - if(mInstance != null){ - mInstance.registerRenderListener(null); - mInstance.destroy(); - mInstance = null; - } - } - - protected void createWeexInstance(){ - destoryWeexInstance(); - - Rect outRect = new Rect(); - getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect); - - mInstance = new WXSDKInstance(this); - mInstance.registerRenderListener(this); - } - - protected void renderPage(String template,String source){ - renderPage(template,source,null); - } - - protected void renderPage(String template,String source,String jsonInitData){ - AssertUtil.throwIfNull(mContainer,new RuntimeException("Can't render page, container is null")); - Map options = new HashMap<>(); - options.put(WXSDKInstance.BUNDLE_URL, source); - // Set options.bundleDigest - try { - String banner = WXUtils.getBundleBanner(template); - JSONObject jsonObj = JSONObject.parseObject(banner); - String digest = null; - if (jsonObj != null) { - digest = jsonObj.getString(Constants.CodeCache.BANNER_DIGEST); - } - if (digest != null) { - options.put(Constants.CodeCache.DIGEST, digest); - } - } catch (Throwable t) {} - //Set options.codeCachePath - String path = WXEnvironment.getFilesDir(getApplicationContext()); - path += File.separator; - path += Constants.CodeCache.SAVE_PATH; - path += File.separator; - options.put(Constants.CodeCache.PATH, path); - - mInstance.setTrackComponent(true); - mInstance.render( - getPageName(), - template, - options, - jsonInitData, - WXRenderStrategy.APPEND_ASYNC); - } - - protected void renderPageByURL(String url){ - renderPageByURL(url,null); - } - - protected void renderPageByURL(String url,String jsonInitData){ - AssertUtil.throwIfNull(mContainer,new RuntimeException("Can't render page, container is null")); - Map options = new HashMap<>(); - options.put(WXSDKInstance.BUNDLE_URL, url); - mInstance.setTrackComponent(true); - mInstance.renderByUrl( - getPageName(), - url, - options, - jsonInitData, - WXRenderStrategy.APPEND_ASYNC); - } - - protected String getPageName(){ - return TAG; - } - - @Override - public void onStart() { - super.onStart(); - if(mInstance!=null){ - mInstance.onActivityStart(); - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onStart(); - } - } - - @Override - public void onResume() { - super.onResume(); - if(mInstance!=null){ - mInstance.onActivityResume(); - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onResume(); - } - } - - @Override - public void onPause() { - super.onPause(); - if(mInstance!=null){ - mInstance.onActivityPause(); - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onPause(); - } - } - - @Override - public void onStop() { - super.onStop(); - if(mInstance!=null){ - mInstance.onActivityStop(); - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onStop(); - } - } - - @Override - public void onDestroy() { - super.onDestroy(); - if(mInstance!=null){ - mInstance.onActivityDestroy(); - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onDestroy(); - } - } - - @Override - public void onViewCreated(WXSDKInstance wxsdkInstance, View view) { - View wrappedView = null; - if(mWxAnalyzerDelegate != null){ - wrappedView = mWxAnalyzerDelegate.onWeexViewCreated(wxsdkInstance,view); - } - if(wrappedView != null){ - view = wrappedView; - } - if (mContainer != null) { - mContainer.removeAllViews(); - mContainer.addView(view); - } - } - - - - @Override - public void onRefreshSuccess(WXSDKInstance wxsdkInstance, int i, int i1) { - - } - - @Override - @CallSuper - public void onRenderSuccess(WXSDKInstance instance, int width, int height) { - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onWeexRenderSuccess(instance); - } - } - - @Override - @CallSuper - public void onException(WXSDKInstance instance, String errCode, String msg) { - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onException(instance,errCode,msg); - } - } - - @Override - @CallSuper - public boolean onKeyUp(int keyCode, KeyEvent event) { - return (mWxAnalyzerDelegate != null && mWxAnalyzerDelegate.onKeyUp(keyCode,event)) || super.onKeyUp(keyCode, event); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (mInstance != null) { - mInstance.onRequestPermissionsResult(requestCode, permissions, grantResults); - } - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/SimpleWeexActivity.java b/android/commons/src/main/java/com/alibaba/weex/commons/SimpleWeexActivity.java deleted file mode 100644 index 91e0d1a0a7..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/SimpleWeexActivity.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.ViewGroup; -import com.taobao.weex.WXSDKInstance; - -/** - * Basic Weex powered Activity. - * Created by sospartan on 5/31/16. - */ -public abstract class SimpleWeexActivity extends AbstractWeexActivity { - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContainer((ViewGroup) findViewById(android.R.id.content)); - } - - @Override - public void onRenderSuccess(WXSDKInstance instance, int width, int height) { - super.onRenderSuccess(instance,width,height); - } - - @Override - public void onException(WXSDKInstance instance, String errCode, String msg) { - super.onException(instance,errCode,msg); - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/WXAnalyzerDelegate.java b/android/commons/src/main/java/com/alibaba/weex/commons/WXAnalyzerDelegate.java deleted file mode 100644 index f9ad58e0fa..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/WXAnalyzerDelegate.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons; - -import android.content.Context; -import android.support.annotation.Nullable; -import android.text.TextUtils; -import android.view.KeyEvent; -import android.view.View; - -import com.taobao.weex.WXSDKInstance; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; - -/** - * Description: - *

- * Created by rowandjj(chuyi)
- * Date: 2016/10/27
- * Time: 下午7:01
- */ - -public final class WXAnalyzerDelegate { - private Object mWXAnalyzer; - - private static boolean ENABLE = false; - - @SuppressWarnings("unchecked") - public WXAnalyzerDelegate(@Nullable Context context) { - if(!ENABLE){ - return; - } - if(context == null){ - return; - } - try { - Class clazz = Class.forName("com.taobao.weex.analyzer.WeexDevOptions"); - Constructor constructor = clazz.getDeclaredConstructor(Context.class); - mWXAnalyzer = constructor.newInstance(context); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void onCreate() { - if (mWXAnalyzer == null) { - return; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onCreate"); - method.invoke(mWXAnalyzer); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public void onStart() { - if (mWXAnalyzer == null) { - return; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onStart"); - method.invoke(mWXAnalyzer); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void onResume() { - if (mWXAnalyzer == null) { - return; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onResume"); - method.invoke(mWXAnalyzer); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public void onPause() { - if (mWXAnalyzer == null) { - return; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onPause"); - method.invoke(mWXAnalyzer); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void onStop() { - if (mWXAnalyzer == null) { - return; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onStop"); - method.invoke(mWXAnalyzer); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void onDestroy() { - if (mWXAnalyzer == null) { - return; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onDestroy"); - method.invoke(mWXAnalyzer); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public void onWeexRenderSuccess(@Nullable WXSDKInstance instance) { - if (mWXAnalyzer == null || instance == null) { - return; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onWeexRenderSuccess", WXSDKInstance.class); - method.invoke(mWXAnalyzer, instance); - } catch (Exception e) { - e.printStackTrace(); - } - - } - - - public boolean onKeyUp(int keyCode, KeyEvent event) { - if (mWXAnalyzer == null) { - return false; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onKeyUp", int.class, KeyEvent.class); - return (boolean) method.invoke(mWXAnalyzer, keyCode, event); - } catch (Exception e) { - e.printStackTrace(); - return false; - } - } - - public void onException(WXSDKInstance instance, String errCode, String msg) { - if (mWXAnalyzer == null) { - return; - } - if (TextUtils.isEmpty(errCode) && TextUtils.isEmpty(msg)) { - return; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onException", WXSDKInstance.class, String.class, String.class); - method.invoke(mWXAnalyzer, instance, errCode, msg); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public View onWeexViewCreated(WXSDKInstance instance, View view) { - if (mWXAnalyzer == null || instance == null || view == null) { - return null; - } - try { - Method method = mWXAnalyzer.getClass().getDeclaredMethod("onWeexViewCreated", WXSDKInstance.class, View.class); - View retView = (View) method.invoke(mWXAnalyzer, instance, view); - return retView; - } catch (Exception e) { - e.printStackTrace(); - return view; - } - } - -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/BlurTool.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/BlurTool.java deleted file mode 100644 index 53eb456397..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/BlurTool.java +++ /dev/null @@ -1,325 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import android.graphics.Bitmap; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - -import com.taobao.weex.utils.WXLogUtils; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; - -/** - * Created by rowandjj(chuyi)
- */ - -public class BlurTool { - - public interface OnBlurCompleteListener { - /** - * blur complete event.(Notice:in sub thread) - * - * @param bitmap the blurred bitmap - * */ - void onBlurComplete(@NonNull Bitmap bitmap); - } - - private static ExecutorService sExecutorService = Executors.newCachedThreadPool(new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - return new Thread(r,"wx_blur_thread"); - } - }); - - private static final String TAG = "BlurTool"; - - /** - * radius in [0,10] - * */ - @NonNull - @SuppressWarnings("unused") - public static Bitmap blur(@NonNull Bitmap originalImage, int radius) { - long start = System.currentTimeMillis(); - radius = Math.min(10, Math.max(0,radius));//[0,10] - if(radius == 0) { - return originalImage; - } - int width = originalImage.getWidth(); - int height = originalImage.getHeight(); - - if(width <= 0 || height <= 0) { - return originalImage; - } - - double sampling = calculateSampling(radius); - int retryTimes = 3; - Bitmap sampledImage = Bitmap.createScaledBitmap(originalImage,(int)(sampling*width),(int)(sampling*height),true); - for(int i = 0; i < retryTimes; i++) { - try { - if(radius == 0) { - return originalImage; - } - double s = calculateSampling(radius); - if(s != sampling) { - sampling = s; - sampledImage = Bitmap.createScaledBitmap(originalImage,(int)(sampling*width),(int)(sampling*height),true); - } - - Bitmap result = stackBlur(sampledImage,radius); - return result; - }catch (Exception e) { - WXLogUtils.e(TAG, "thrown exception when blurred image(times = " + i + "),"+ e.getMessage()); - radius -= 1; - radius = Math.max(0,radius); - } - } - WXLogUtils.d(TAG, "elapsed time on blurring image(radius:"+ radius + ",sampling: " + sampling + "): " + (System.currentTimeMillis() - start) + "ms"); - return originalImage; - } - - private static double calculateSampling(int radius){ - double sampling; - if(radius <= 3) { - sampling = 1/(double)2; - }else if(radius <= 8) { - sampling = 1/(double)4; - }else { - sampling = 1/(double)8; - } - - return sampling; - } - - @SuppressWarnings("unused") - public static void asyncBlur(@NonNull final Bitmap originalImage, final int radius, @Nullable final OnBlurCompleteListener listener) { - sExecutorService.execute(new Runnable() { - @Override - public void run() { - if(listener != null) { - listener.onBlurComplete(blur(originalImage,radius)); - } - } - }); - } - - private static Bitmap stackBlur(Bitmap sentBitmap, int radius) { - // Stack Blur Algorithm by Mario Klingemann - Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); - - if (radius < 1) { - return (null); - } - - int w = bitmap.getWidth(); - int h = bitmap.getHeight(); - - int[] pix = new int[w * h]; - bitmap.getPixels(pix, 0, w, 0, 0, w, h); - - int wm = w - 1; - int hm = h - 1; - int wh = w * h; - int div = radius + radius + 1; - - int r[] = new int[wh]; - int g[] = new int[wh]; - int b[] = new int[wh]; - int rsum, gsum, bsum, x, y, i, p, yp, yi, yw; - int vmin[] = new int[Math.max(w, h)]; - - int divsum = (div + 1) >> 1; - divsum *= divsum; - int dv[] = new int[256 * divsum]; - for (i = 0; i < 256 * divsum; i++) { - dv[i] = (i / divsum); - } - - yw = yi = 0; - - int[][] stack = new int[div][3]; - int stackpointer; - int stackstart; - int[] sir; - int rbs; - int r1 = radius + 1; - int routsum, goutsum, boutsum; - int rinsum, ginsum, binsum; - - for (y = 0; y < h; y++) { - rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; - for (i = -radius; i <= radius; i++) { - p = pix[yi + Math.min(wm, Math.max(i, 0))]; - sir = stack[i + radius]; - sir[0] = (p & 0xff0000) >> 16; - sir[1] = (p & 0x00ff00) >> 8; - sir[2] = (p & 0x0000ff); - rbs = r1 - Math.abs(i); - rsum += sir[0] * rbs; - gsum += sir[1] * rbs; - bsum += sir[2] * rbs; - if (i > 0) { - rinsum += sir[0]; - ginsum += sir[1]; - binsum += sir[2]; - } else { - routsum += sir[0]; - goutsum += sir[1]; - boutsum += sir[2]; - } - } - stackpointer = radius; - - for (x = 0; x < w; x++) { - - r[yi] = dv[rsum]; - g[yi] = dv[gsum]; - b[yi] = dv[bsum]; - - rsum -= routsum; - gsum -= goutsum; - bsum -= boutsum; - - stackstart = stackpointer - radius + div; - sir = stack[stackstart % div]; - - routsum -= sir[0]; - goutsum -= sir[1]; - boutsum -= sir[2]; - - if (y == 0) { - vmin[x] = Math.min(x + radius + 1, wm); - } - p = pix[yw + vmin[x]]; - - sir[0] = (p & 0xff0000) >> 16; - sir[1] = (p & 0x00ff00) >> 8; - sir[2] = (p & 0x0000ff); - - rinsum += sir[0]; - ginsum += sir[1]; - binsum += sir[2]; - - rsum += rinsum; - gsum += ginsum; - bsum += binsum; - - stackpointer = (stackpointer + 1) % div; - sir = stack[(stackpointer) % div]; - - routsum += sir[0]; - goutsum += sir[1]; - boutsum += sir[2]; - - rinsum -= sir[0]; - ginsum -= sir[1]; - binsum -= sir[2]; - - yi++; - } - yw += w; - } - for (x = 0; x < w; x++) { - rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; - yp = -radius * w; - for (i = -radius; i <= radius; i++) { - yi = Math.max(0, yp) + x; - - sir = stack[i + radius]; - - sir[0] = r[yi]; - sir[1] = g[yi]; - sir[2] = b[yi]; - - rbs = r1 - Math.abs(i); - - rsum += r[yi] * rbs; - gsum += g[yi] * rbs; - bsum += b[yi] * rbs; - - if (i > 0) { - rinsum += sir[0]; - ginsum += sir[1]; - binsum += sir[2]; - } else { - routsum += sir[0]; - goutsum += sir[1]; - boutsum += sir[2]; - } - - if (i < hm) { - yp += w; - } - } - yi = x; - stackpointer = radius; - for (y = 0; y < h; y++) { - // Preserve alpha channel: ( 0xff000000 & pix[yi] ) - pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum]; - - rsum -= routsum; - gsum -= goutsum; - bsum -= boutsum; - - stackstart = stackpointer - radius + div; - sir = stack[stackstart % div]; - - routsum -= sir[0]; - goutsum -= sir[1]; - boutsum -= sir[2]; - - if (x == 0) { - vmin[y] = Math.min(y + r1, hm) * w; - } - p = x + vmin[y]; - - sir[0] = r[p]; - sir[1] = g[p]; - sir[2] = b[p]; - - rinsum += sir[0]; - ginsum += sir[1]; - binsum += sir[2]; - - rsum += rinsum; - gsum += ginsum; - bsum += binsum; - - stackpointer = (stackpointer + 1) % div; - sir = stack[stackpointer]; - - routsum += sir[0]; - goutsum += sir[1]; - boutsum += sir[2]; - - rinsum -= sir[0]; - ginsum -= sir[1]; - binsum -= sir[2]; - - yi += w; - } - } - - bitmap.setPixels(pix, 0, w, 0, 0, w, h); - - return (bitmap); - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/BlurTransformation.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/BlurTransformation.java deleted file mode 100644 index b530b927ab..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/BlurTransformation.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import android.graphics.Bitmap; - -import com.squareup.picasso.Transformation; - -public class BlurTransformation implements Transformation { - - private int mRadius; - - public BlurTransformation(int radius) { - mRadius = radius; - } - - @Override public Bitmap transform(Bitmap source) { - if(mRadius <= 0) { - return source; - } - Bitmap bitmap; - try { - bitmap = BlurTool.blur(source, mRadius); - }catch (Exception e){ - bitmap = source; - } - if(bitmap != source) { - source.recycle(); - } - return bitmap; - } - - @Override public String key() { - return "BlurTransformation(radius=" + mRadius + ")"; - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapter.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapter.java deleted file mode 100644 index 22810dcec6..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapter.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import android.support.annotation.Nullable; - -import com.alibaba.weex.commons.util.WSEventReporter; -import com.squareup.okhttp.Headers; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; -import com.squareup.okhttp.ws.WebSocket; -import com.squareup.okhttp.ws.WebSocketCall; -import com.squareup.okhttp.ws.WebSocketListener; -import com.taobao.weex.appfram.websocket.IWebSocketAdapter; -import com.taobao.weex.appfram.websocket.WebSocketCloseCodes; -import com.taobao.weex.http.Status; - -import java.io.EOFException; -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -import okio.Buffer; -import okio.BufferedSource; - -/** - * Created by moxun on 16/12/27. - */ - -public class DefaultWebSocketAdapter implements IWebSocketAdapter { - - private WebSocket ws; - private EventListener eventListener; - private WSEventReporter wsEventReporter; - - @Override - public void connect(String url, @Nullable final String protocol, EventListener listener) { - this.eventListener = listener; - this.wsEventReporter = WSEventReporter.newInstance(); - OkHttpClient okHttpClient = new OkHttpClient(); - - Request.Builder builder = new Request.Builder(); - - if (protocol != null) { - builder.addHeader(HEADER_SEC_WEBSOCKET_PROTOCOL, protocol); - } - - builder.url(url); - wsEventReporter.created(url); - - Request wsRequest = builder.build(); - WebSocketCall webSocketCall = WebSocketCall.create(okHttpClient, wsRequest); - - try { - Field field = WebSocketCall.class.getDeclaredField("request"); - field.setAccessible(true); - Request realRequest = (Request) field.get(webSocketCall); - Headers wsHeaders = realRequest.headers(); - Map headers = new HashMap<>(); - for (String name : wsHeaders.names()) { - headers.put(name, wsHeaders.values(name).toString()); - } - wsEventReporter.willSendHandshakeRequest(headers, null); - - } catch (Exception e) { - e.printStackTrace(); - } - - - webSocketCall.enqueue(new WebSocketListener() { - @Override - public void onOpen(WebSocket webSocket, Request request, Response response) throws IOException { - ws = webSocket; - eventListener.onOpen(); - Headers wsHeaders = response.headers(); - Map headers = new HashMap<>(); - for (String name : wsHeaders.names()) { - headers.put(name, wsHeaders.values(name).toString()); - } - wsEventReporter.handshakeResponseReceived(response.code(), - Status.getStatusText(String.valueOf(response.code())), - headers); - } - - @Override - public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException { - if (type == WebSocket.PayloadType.BINARY) { - wsEventReporter.frameReceived(payload.readByteArray()); - } else { - String message = payload.readUtf8(); - eventListener.onMessage(message); - wsEventReporter.frameReceived(message); - } - payload.close(); - } - - @Override - public void onPong(Buffer payload) { - - } - - @Override - public void onClose(int code, String reason) { - eventListener.onClose(code, reason, true); - wsEventReporter.closed(); - } - - @Override - public void onFailure(IOException e) { - e.printStackTrace(); - if (e instanceof EOFException) { - eventListener.onClose(WebSocketCloseCodes.CLOSE_NORMAL.getCode(), WebSocketCloseCodes.CLOSE_NORMAL.name(), true); - wsEventReporter.closed(); - } else { - eventListener.onError(e.getMessage()); - wsEventReporter.frameError(e.getMessage()); - } - } - }); - } - - @Override - public void send(String data) { - if (ws != null) { - try { - Buffer buffer = new Buffer().writeUtf8(data); - ws.sendMessage(WebSocket.PayloadType.TEXT, buffer.buffer()); - buffer.flush(); - buffer.close(); - - wsEventReporter.frameSent(data); - } catch (Exception e) { - e.printStackTrace(); - reportError(e.getMessage()); - wsEventReporter.frameError(e.getMessage()); - } - } else { - reportError("WebSocket is not ready"); - } - } - - @Override - public void close(int code, String reason) { - if (ws != null) { - try { - ws.close(code, reason); - } catch (Exception e) { - e.printStackTrace(); - reportError(e.getMessage()); - } - } - } - - @Override - public void destroy() { - if (ws != null) { - try { - ws.close(WebSocketCloseCodes.CLOSE_GOING_AWAY.getCode(), WebSocketCloseCodes.CLOSE_GOING_AWAY.name()); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - private void reportError(String message) { - if (eventListener != null) { - eventListener.onError(message); - } - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapterFactory.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapterFactory.java deleted file mode 100644 index a2cd4ec1d4..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/DefaultWebSocketAdapterFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import com.taobao.weex.appfram.websocket.IWebSocketAdapter; -import com.taobao.weex.appfram.websocket.IWebSocketAdapterFactory; - -/** - * Created by moxun on 16/12/28. - */ - -public class DefaultWebSocketAdapterFactory implements IWebSocketAdapterFactory { - @Override - public IWebSocketAdapter createWebSocketAdapter() { - return new DefaultWebSocketAdapter(); - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageAdapter.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageAdapter.java deleted file mode 100644 index bc4ab429cc..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageAdapter.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import android.graphics.Color; -import android.graphics.drawable.Animatable; -import android.net.Uri; -import android.support.annotation.Nullable; -import android.text.TextUtils; -import android.util.Log; -import android.widget.ImageView; - -import com.facebook.common.executors.UiThreadImmediateExecutorService; -import com.facebook.common.internal.Preconditions; -import com.facebook.common.logging.FLog; -import com.facebook.common.references.CloseableReference; -import com.facebook.datasource.BaseDataSubscriber; -import com.facebook.datasource.DataSource; -import com.facebook.datasource.DataSubscriber; -import com.facebook.drawee.backends.pipeline.Fresco; -import com.facebook.drawee.controller.BaseControllerListener; -import com.facebook.drawee.controller.ControllerListener; -import com.facebook.drawee.interfaces.DraweeController; -import com.facebook.drawee.view.DraweeView; -import com.facebook.imagepipeline.common.ImageDecodeOptions; -import com.facebook.imagepipeline.core.ImagePipeline; -import com.facebook.imagepipeline.image.CloseableImage; -import com.facebook.imagepipeline.image.CloseableStaticBitmap; -import com.facebook.imagepipeline.image.ImageInfo; -import com.facebook.imagepipeline.image.QualityInfo; -import com.facebook.imagepipeline.request.ImageRequest; -import com.facebook.imagepipeline.request.ImageRequestBuilder; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.adapter.IWXImgLoaderAdapter; -import com.taobao.weex.common.WXImageStrategy; -import com.taobao.weex.dom.WXImageQuality; - -public class FrescoImageAdapter implements IWXImgLoaderAdapter { - - public FrescoImageAdapter() { - } - - @Override - public void setImage(final String url, final ImageView view, - WXImageQuality quality, WXImageStrategy strategy) { - - WXSDKManager.getInstance().postOnUiThread(new Runnable() { - - @Override - public void run() { - if (view == null || view.getLayoutParams() == null) { - return; - } - if (TextUtils.isEmpty(url)) { - view.setImageBitmap(null); - return; - } - String temp = url; - if (url.startsWith("//")) { - temp = "http:" + url; - } - if (view.getLayoutParams().width <= 0 || view.getLayoutParams().height <= 0) { - return; - } - - Uri uri = Uri.parse(temp); - - ImageDecodeOptions decodeOptions = ImageDecodeOptions.newBuilder() - .setBackgroundColor(Color.GREEN) - .build(); - - ImageRequest request = ImageRequestBuilder - .newBuilderWithSource(uri) - .setImageDecodeOptions(decodeOptions) - .setAutoRotateEnabled(true) - .setLocalThumbnailPreviewsEnabled(true) - .setLowestPermittedRequestLevel(ImageRequest.RequestLevel.FULL_FETCH) - .setProgressiveRenderingEnabled(false) - .build(); - - if(view instanceof DraweeView){ - Log.d("FrescoImageAdapter","load: "+url); - ControllerListener controllerListener = new BaseControllerListener() { - @Override - public void onFinalImageSet( - String id, - @Nullable ImageInfo imageInfo, - @Nullable Animatable anim) { - if (imageInfo == null) { - return; - } - QualityInfo qualityInfo = imageInfo.getQualityInfo(); - FLog.d("Final image received! " + - "Size %d x %d", - "Quality level %d, good enough: %s, full quality: %s", - imageInfo.getWidth(), - imageInfo.getHeight(), - qualityInfo.getQuality(), - qualityInfo.isOfGoodEnoughQuality(), - qualityInfo.isOfFullQuality()); - } - - @Override - public void onIntermediateImageSet(String id, @Nullable ImageInfo imageInfo) { - FLog.d("","Intermediate image received"); - } - - @Override - public void onFailure(String id, Throwable throwable) { - FLog.e(getClass(), throwable, "Error loading %s", id); - } - }; - DraweeController controller = Fresco.newDraweeControllerBuilder() - .setAutoPlayAnimations(true) - .setControllerListener(controllerListener) - .setUri(uri) - .setImageRequest(request) - .build(); - ((DraweeView)view).setController(controller); - - }else { - ImagePipeline imagePipeline = Fresco.getImagePipeline(); - DataSource> - dataSource = imagePipeline.fetchDecodedImage(request, new Object()); - DataSubscriber dataSubscriber = - new BaseDataSubscriber>() { - @Override - public void onNewResultImpl(DataSource> dataSource) { - - CloseableReference imageReference = dataSource.getResult(); - if (imageReference != null) { - try { - // do something with the image - Preconditions.checkState(CloseableReference.isValid(imageReference)); - CloseableImage closeableImage = imageReference.get(); - if (closeableImage instanceof CloseableStaticBitmap) { - CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) closeableImage; - view.setImageBitmap(closeableStaticBitmap.getUnderlyingBitmap()); - // boolean hasResult = null != closeableStaticBitmap.getUnderlyingBitmap(); - } else { - throw new UnsupportedOperationException("Unrecognized image class: " + closeableImage); - } - } finally { - imageReference.close(); - } - } - } - - @Override - public void onFailureImpl(DataSource dataSource) { - } - }; - - dataSource.subscribe(dataSubscriber, UiThreadImmediateExecutorService.getInstance()); - } - } - }, 0); - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageComponent.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageComponent.java deleted file mode 100644 index 56e9a253c2..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageComponent.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import android.content.Context; -import android.support.annotation.NonNull; -import android.widget.ImageView; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.ui.action.BasicComponentData; -import com.taobao.weex.ui.component.WXImage; -import com.taobao.weex.ui.component.WXVContainer; - -/** - * Created by sospartan on 8/19/16. - */ -public class FrescoImageComponent extends WXImage { - - public FrescoImageComponent(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) { - super(instance, parent, basicComponentData); - } - - @Override - protected ImageView initComponentHostView(@NonNull Context context) { - FrescoImageView view = new FrescoImageView(context); - view.setScaleType(ImageView.ScaleType.FIT_XY); - - return view; - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageView.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageView.java deleted file mode 100644 index 9227a90734..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/FrescoImageView.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import android.content.Context; -import android.graphics.*; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.support.annotation.NonNull; -import android.util.AttributeSet; -import android.view.MotionEvent; -import com.facebook.drawee.view.DraweeView; -import com.facebook.drawee.view.SimpleDraweeView; -import com.taobao.weex.ui.view.border.BorderDrawable; -import com.taobao.weex.ui.view.gesture.WXGesture; -import com.taobao.weex.ui.view.gesture.WXGestureObservable; -import com.taobao.weex.utils.WXViewUtils; - -/** - * Created by sospartan on 8/19/16. - */ -public class FrescoImageView extends SimpleDraweeView implements WXGestureObservable { - public FrescoImageView(Context context) { - super(context); - } - - public FrescoImageView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public FrescoImageView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - public FrescoImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - - private WXGesture wxGesture; - - @Override - public void registerGestureListener(WXGesture wxGesture) { - this.wxGesture = wxGesture; - } - - @Override - public WXGesture getGestureListener() { - return wxGesture; - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - boolean result = super.onTouchEvent(event); - if (wxGesture != null) { - result |= wxGesture.onTouch(this, event); - } - return result; - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java deleted file mode 100644 index 77dc4fcbb6..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/ImageAdapter.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import android.net.Uri; -import android.os.Looper; -import android.text.TextUtils; -import android.widget.ImageView; - -import com.squareup.picasso.Callback; -import com.squareup.picasso.Picasso; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.adapter.IWXImgLoaderAdapter; -import com.taobao.weex.common.WXImageStrategy; -import com.taobao.weex.dom.WXImageQuality; -import com.taobao.weex.ui.IFComponentHolder; - -public class ImageAdapter implements IWXImgLoaderAdapter { - - public ImageAdapter() { - } - - @Override - public void setImage(final String url, final ImageView view, - WXImageQuality quality, final WXImageStrategy strategy) { - Runnable runnable = new Runnable() { - - @Override - public void run() { - if(view==null||view.getLayoutParams()==null){ - return; - } - if (TextUtils.isEmpty(url)) { - view.setImageBitmap(null); - return; - } - if (null != strategy){ - recordImgLoadAction(strategy.instanceId); - } - - String temp = url; - if (url.startsWith("//")) { - temp = "http:" + url; - } - - if(!TextUtils.isEmpty(strategy.placeHolder)){ - Picasso.Builder builder=new Picasso.Builder(WXEnvironment.getApplication()); - Picasso picasso=builder.build(); - picasso.load(Uri.parse(strategy.placeHolder)).into(view); - - view.setTag(strategy.placeHolder.hashCode(),picasso); - } - - Picasso.with(WXEnvironment.getApplication()) - .load(temp) - .transform(new BlurTransformation(strategy.blurRadius)) - .into(view, new Callback() { - @Override - public void onSuccess() { - if(strategy.getImageListener()!=null){ - strategy.getImageListener().onImageFinish(url,view,true,null); - } - recordImgLoadResult(strategy.instanceId,true,null); - - if(!TextUtils.isEmpty(strategy.placeHolder)){ - ((Picasso) view.getTag(strategy.placeHolder.hashCode())).cancelRequest(view); - } - } - - @Override - public void onError() { - if(strategy.getImageListener()!=null){ - strategy.getImageListener().onImageFinish(url,view,false,null); - } - recordImgLoadResult(strategy.instanceId,false,null); - } - }); - } - }; - if(Thread.currentThread() == Looper.getMainLooper().getThread()){ - runnable.run(); - }else { - WXSDKManager.getInstance().postOnUiThread(runnable, 0); - } - } - private void recordImgLoadAction(String instanceId){ - WXSDKInstance instance = WXSDKManager.getInstance().getAllInstanceMap().get(instanceId); - if (null == instance || instance.isDestroy()){ - return; - } - instance.getApmForInstance().actionLoadImg(); - } - - private void recordImgLoadResult(String instanceId,boolean succeed,String errorCode){ - WXSDKInstance instance = WXSDKManager.getInstance().getAllInstanceMap().get(instanceId); - if (null == instance || instance.isDestroy()){ - return; - } - instance.getApmForInstance().actionLoadImgResult(succeed,errorCode); - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/JSExceptionAdapter.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/JSExceptionAdapter.java deleted file mode 100644 index 3c6c2ff050..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/JSExceptionAdapter.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.adapter.IWXJSExceptionAdapter; -import com.taobao.weex.common.WXJSExceptionInfo; -import com.taobao.weex.utils.WXLogUtils; - -/** - */ - -public class JSExceptionAdapter implements IWXJSExceptionAdapter { - - @Override - public void onJSException(WXJSExceptionInfo exception) { - if (exception != null && WXEnvironment.isApkDebugable()) { - WXLogUtils.d(exception.toString()); - } - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java b/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java deleted file mode 100644 index a642dc77c9..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/adapter/PicassoBasedDrawableLoader.java +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.adapter; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.ColorFilter; -import android.graphics.PixelFormat; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.view.Gravity; - -import com.squareup.picasso.Picasso; -import com.squareup.picasso.Target; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.adapter.DrawableStrategy; -import com.taobao.weex.adapter.IDrawableLoader; - -public class PicassoBasedDrawableLoader implements IDrawableLoader { - - private Context mContext; - - public PicassoBasedDrawableLoader(Context context) { - mContext = context; - } - - @Override - public void setDrawable(final String url, - final DrawableTarget drawableTarget, - final DrawableStrategy drawableStrategy) { - WXSDKManager.getInstance().postOnUiThread(new Runnable() { - @Override - public void run() { - String temp = url; - if (url.startsWith("//")) { - temp = "http:" + url; - } - - /** This is a hack for picasso, as Picasso hold weakReference to Target. - * http://stackoverflow.com/questions/24180805/onbitmaploaded-of-target-object-not-called-on-first-load - */ - class PlaceHolderDrawableTarget extends Drawable implements Target { - - @Override - public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { - BitmapDrawable bitmapDrawable = new BitmapDrawable(mContext.getResources(), bitmap); - bitmapDrawable.setGravity(Gravity.FILL); - drawableTarget.setDrawable(bitmapDrawable, true); - } - - @Override - public void onBitmapFailed(Drawable errorDrawable) { - - } - - @Override - public void onPrepareLoad(Drawable placeHolderDrawable) { - drawableTarget.setDrawable(this, true); - } - - @Override - public void draw(Canvas canvas) { - - } - - @Override - public void setAlpha(int alpha) { - - } - - @Override - public void setColorFilter(ColorFilter colorFilter) { - - } - - @Override - public int getOpacity() { - return PixelFormat.UNKNOWN; - } - } - Picasso. - with(mContext). - load(temp). - resize(drawableStrategy.width, drawableStrategy.height). - onlyScaleDown(). - into(new PlaceHolderDrawableTarget()); - } - }, 0); - - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/util/AssertUtil.java b/android/commons/src/main/java/com/alibaba/weex/commons/util/AssertUtil.java deleted file mode 100644 index 07ec3b9749..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/util/AssertUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.util; - -/** - * Created by sospartan on 5/31/16. - */ -public class AssertUtil { - public static void throwIfNull(Object object,T e) throws T { - if(object == null){ - throw e; - } - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/util/RequestIdGenerator.java b/android/commons/src/main/java/com/alibaba/weex/commons/util/RequestIdGenerator.java deleted file mode 100644 index 8f4f169fb2..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/util/RequestIdGenerator.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.util; - -import java.util.concurrent.atomic.AtomicInteger; - -/** - * Created by moxun on 17/4/20. - */ - -public class RequestIdGenerator { - private static final AtomicInteger sIdGenerator = new AtomicInteger(0); - - public static int nextRequestId() { - return sIdGenerator.getAndIncrement(); - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/util/ScreenUtil.java b/android/commons/src/main/java/com/alibaba/weex/commons/util/ScreenUtil.java deleted file mode 100644 index e2caed3770..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/util/ScreenUtil.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.util; - -import android.content.res.TypedArray; -import android.graphics.Point; -import android.os.Build; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.util.Log; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class ScreenUtil { - private static final String TAG = "WXTBUtil"; - - private static boolean isSupportSmartBar = false; - - static { - isSupportSmartBar = isSupportSmartBar(); - } - public static int getDisplayWidth(AppCompatActivity activity){ - int width=0; - if (activity != null && activity.getWindowManager() != null && activity.getWindowManager().getDefaultDisplay() != null) { - Point point=new Point(); - activity.getWindowManager().getDefaultDisplay().getSize(point); - width = point.x; - } - return width; - } - - public static int getDisplayHeight(AppCompatActivity activity) { - int height = 0; - if (activity != null && activity.getWindowManager() != null && activity.getWindowManager().getDefaultDisplay() != null) { - Point point=new Point(); - activity.getWindowManager().getDefaultDisplay().getSize(point); - height=point.y; - } - - Log.e(TAG, "isSupportSmartBar:" + isSupportSmartBar); - - if (isSupportSmartBar) { - int smartBarHeight = getSmartBarHeight(activity); - Log.e(TAG, "smartBarHeight:" + smartBarHeight); - height -= smartBarHeight; - } - - if (activity.getSupportActionBar() != null) { - int actionbar= activity.getSupportActionBar().getHeight(); - if(actionbar==0){ - TypedArray actionbarSizeTypedArray=activity.obtainStyledAttributes(new int[]{android.R.attr.actionBarSize}); - actionbar= (int) actionbarSizeTypedArray.getDimension(0,0); - } - Log.d(TAG, "actionbar:" + actionbar); - height -= actionbar; - } - - int status = getStatusBarHeight(activity); - Log.d(TAG, "status:" + status); - - height -= status; - - Log.d(TAG,"height:"+height); - return height; - } - - private static int getStatusBarHeight(AppCompatActivity activity) { - Class c; - Object obj; - Field field; - int x; - int statusBarHeight = 0; - try { - c = Class.forName("com.android.internal.R$dimen"); - obj = c.newInstance(); - field = c.getField("status_bar_height"); - x = Integer.parseInt(field.get(obj).toString()); - statusBarHeight = activity.getResources().getDimensionPixelSize(x); - } catch (Exception e1) { - e1.printStackTrace(); - } - return statusBarHeight; - } - - private static int getSmartBarHeight(AppCompatActivity activity) { - ActionBar actionbar = activity.getSupportActionBar(); - if (actionbar != null) - try { - Class c = Class.forName("com.android.internal.R$dimen"); - Object obj = c.newInstance(); - Field field = c.getField("mz_action_button_min_height"); - int height = Integer.parseInt(field.get(obj).toString()); - return activity.getResources().getDimensionPixelSize(height); - } catch (Exception e) { - e.printStackTrace(); - actionbar.getHeight(); - } - return 0; - } - - private static boolean isSupportSmartBar() { - try { - final Method method = Build.class.getMethod("hasSmartBar"); - return method != null; - } catch (final Exception e) { - return false; - } - } -} diff --git a/android/commons/src/main/java/com/alibaba/weex/commons/util/WSEventReporter.java b/android/commons/src/main/java/com/alibaba/weex/commons/util/WSEventReporter.java deleted file mode 100644 index aba09c1816..0000000000 --- a/android/commons/src/main/java/com/alibaba/weex/commons/util/WSEventReporter.java +++ /dev/null @@ -1,210 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.commons.util; - -import android.support.annotation.Nullable; -import android.util.Pair; - -import com.taobao.weex.devtools.inspector.network.NetworkEventReporter; -import com.taobao.weex.devtools.inspector.network.NetworkEventReporterManager; -import com.taobao.weex.devtools.inspector.network.SimpleBinaryInspectorWebSocketFrame; -import com.taobao.weex.devtools.inspector.network.SimpleTextInspectorWebSocketFrame; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Created by moxun on 17/4/20. - */ - -public class WSEventReporter { - - private String requestId; - private NetworkEventReporter reporter; - private WSRequest request; - - public static WSEventReporter newInstance() { - return new WSEventReporter(); - } - - private WSEventReporter() { - requestId = String.valueOf(RequestIdGenerator.nextRequestId()); - reporter = NetworkEventReporterManager.get(); - } - - public void created(String url) { - if (reporter != null) { - reporter.webSocketCreated(requestId, url); - } - } - - public void closed() { - if (reporter != null) { - reporter.webSocketClosed(requestId); - } - } - - public void willSendHandshakeRequest(Map headers, @Nullable String friendlyName) { - if (reporter != null) { - request = new WSRequest(requestId, friendlyName, headers); - reporter.webSocketWillSendHandshakeRequest(request); - } - } - - public void handshakeResponseReceived(int code, String phrase, Map responseHeaders) { - if (reporter != null) { - reporter.webSocketHandshakeResponseReceived(new WSResponse(requestId, code, phrase, responseHeaders, request)); - } - } - - public void frameSent(String frame) { - if (reporter != null) { - reporter.webSocketFrameSent(new SimpleTextInspectorWebSocketFrame(requestId, frame)); - } - } - - public void frameSent(byte[] frame) { - if (reporter != null) { - reporter.webSocketFrameSent(new SimpleBinaryInspectorWebSocketFrame(requestId, frame)); - } - } - - public void frameReceived(String frame) { - if (reporter != null) { - reporter.webSocketFrameReceived(new SimpleTextInspectorWebSocketFrame(requestId, frame)); - } - } - - public void frameReceived(byte[] frame) { - if (reporter != null) { - reporter.webSocketFrameReceived(new SimpleBinaryInspectorWebSocketFrame(requestId, frame)); - } - } - - public void frameError(String msg) { - if (reporter != null) { - reporter.webSocketFrameError(requestId, msg); - } - } - - private static class WSRequest extends WSHeaderCommon implements NetworkEventReporter.InspectorWebSocketRequest { - - private String id; - private String name; - - public WSRequest(String id, String name, Map headers) { - attachHeaders(headers); - this.id = id; - this.name = name; - if (this.name == null) { - this.name = "WS Connection " + id; - } - } - - @Override - public String id() { - return id; - } - - @Override - public String friendlyName() { - return name; - } - } - - private static class WSResponse extends WSHeaderCommon implements NetworkEventReporter.InspectorWebSocketResponse { - - private String id; - private int code; - private String phrase; - private WSHeaderCommon headers; - - public WSResponse(String id, int code, String phrase, Map responseHeaders, WSHeaderCommon headers) { - attachHeaders(responseHeaders); - this.id = id; - this.code = code; - this.phrase = phrase; - this.headers = headers; - } - - @Override - public String requestId() { - return id; - } - - @Override - public int statusCode() { - return code; - } - - @Override - public String reasonPhrase() { - return phrase; - } - - @Nullable - @Override - public NetworkEventReporter.InspectorHeaders requestHeaders() { - return headers; - } - } - - private static class WSHeaderCommon implements NetworkEventReporter.InspectorHeaders { - - private List> headerList = new ArrayList<>(); - - public void attachHeaders(Map headers) { - for (Map.Entry entry : headers.entrySet()) { - headerList.add(new Pair<>(entry.getKey(), entry.getValue())); - } - } - - public void addHeader(String key, String value) { - headerList.add(new Pair<>(key, value)); - } - - - @Override - public int headerCount() { - return headerList.size(); - } - - @Override - public String headerName(int index) { - return headerList.get(index).first; - } - - @Override - public String headerValue(int index) { - return headerList.get(index).second; - } - - @Nullable - @Override - public String firstHeaderValue(String name) { - for (Pair pair : headerList) { - if (pair.first.equals(name)) { - return pair.second; - } - } - return null; - } - } -} diff --git a/android/commons/src/main/res/values/strings.xml b/android/commons/src/main/res/values/strings.xml deleted file mode 100644 index be8deaea2e..0000000000 --- a/android/commons/src/main/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - My Module - diff --git a/android/playground/app/build.gradle b/android/playground/app/build.gradle deleted file mode 100755 index 30fe1ad231..0000000000 --- a/android/playground/app/build.gradle +++ /dev/null @@ -1,136 +0,0 @@ -plugins { - id "com.github.hierynomus.license" version "0.14.0" -} - -apply plugin: 'com.android.application' - -android { - compileSdkVersion project.compileSdkVersion - defaultConfig { - applicationId "com.alibaba.weex" - minSdkVersion project.minSdkVersion - targetSdkVersion project.targetSdkVersion - versionCode 20 - versionName "0.20.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - multiDexEnabled true - ndk{ - abiFilters "arm64-v8a", "armeabi-v7a", "x86" - } - if(!getBuildConfigFields()?.containsKey('externalLibraryName')) { - buildConfigField "String", "externalLibraryName", "\"\"" - } - } - applicationVariants.all { variant -> - variant.outputs.each { output -> - def outputFile = output.outputFile - if (outputFile != null && outputFile.name.equals('app-debug.apk')) { - def fileName = outputFile.name.replace("app-debug.apk", "playground.apk") - output.outputFile = new File(outputFile.parent, fileName) - } - } - } - signingConfigs { - debug { - storeFile file("tools/weex.jks") - storePassword "123456" - keyAlias "weex" - keyPassword "123456" - } - } - buildTypes { - debug { - jniDebuggable true - debuggable true - } - } - sourceSets { - main { - jniLibs.srcDir(['libs']) - java { - srcDirs = ["src/main/java", "src/main/java_zxing"]; - } - } - } - lintOptions { - abortOnError false - } - - packagingOptions { - exclude 'LICENSE.txt' - } - testOptions { - reportDir = "$project.buildDir/test/report" - } - dexOptions { - preDexLibraries false - } - aaptOptions { - noCompress 'wasm' - } -} - - -dependencies { - implementation fileTree(include: ['*.jar'], dir: 'libs') - androidTestImplementation "com.android.support:support-annotations:${project.supportLibVersion}" - androidTestImplementation 'junit:junit:4.12' - androidTestImplementation 'org.awaitility:awaitility:3.0.0' - androidTestImplementation 'org.awaitility:awaitility-proxy:3.0.0' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2' - androidTestImplementation('com.android.support.test.espresso:espresso-contrib:2.2.2', { - exclude group: 'com.android.support', module: 'support-annotations' - exclude group: 'com.android.support', module: 'support-v4' - exclude group: 'com.android.support', module: 'design' - exclude group: 'com.android.support', module: 'appcompat-v7' - exclude group: 'com.android.support', module: 'recyclerview-v7' - }) - androidTestImplementation 'com.android.support.test:runner:0.5' - androidTestImplementation 'com.squareup.picasso:picasso:2.5.2' - androidTestImplementation 'org.hamcrest:hamcrest-library:1.3' - androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' - /*source dependency*/ - - implementation project(':commons') - implementation project(':weex_sdk') - // implementation project(':HeronAndroid') - //https://github.com/weexteam/weex-analyzer-android - //Weex-Analyzer provides several convenient tools such as Memory Monitor - // to optimize your application. It's not available by default,you can - // set WXAnalyzerDelegate#DEBUG==true to enable it - debugImplementation 'com.taobao.android:weex_analyzer:0.1.0.5' - - - implementation 'com.loopj.android:android-async-http:1.4.9@aar' - implementation 'com.facebook.fresco:fresco:0.12.0+' - implementation 'com.facebook.fresco:animated-gif:0.12.0' - - implementation 'com.google.zxing:core:3.3.3' - - implementation 'com.squareup.okhttp:okhttp:2.3.0' - implementation 'com.squareup.okhttp:okhttp-ws:2.3.0' - implementation 'com.squareup.okio:okio:1.0.1' - implementation "com.alibaba:fastjson:${project.fastjsonLibVersion}" - implementation "com.android.support:support-v4:${project.supportLibVersion}" - implementation "com.android.support:appcompat-v7:${project.supportLibVersion}" - implementation "com.android.support:design:${project.supportLibVersion}" - implementation "com.android.support:support-annotations:${project.supportLibVersion}" - implementation 'com.jakewharton.scalpel:scalpel:1.1.2' - implementation 'com.taobao.android.weex_inspection:urlconnection_interceptor:1.0.0' - implementation 'com.taobao.android.weex_inspection:protocol:1.1.4.1' - implementation 'com.android.support.test.espresso:espresso-idling-resource:2.2.2' - implementation 'com.taobao.android:weex_inspector:0.24.2.4' - //implementation project(":weex_inspector") - - // Bind actions to effects. See https://alibaba.github.io/bindingx/ - implementation 'com.alibaba.android:bindingx-core:1.1.1.2@aar' - implementation 'com.alibaba.android:bindingx_weex_plugin:1.1.1@aar' -} - -if(file('../../license/LICENSE').exists()){ - license { - header = file('../../license/LICENSE') - excludes(["com/google/zxing/**/*.java","**/*.xml"]) - } - preBuild.dependsOn licenseFormat -} diff --git a/android/playground/app/proguard-rules.pro b/android/playground/app/proguard-rules.pro deleted file mode 100755 index d3079ee597..0000000000 --- a/android/playground/app/proguard-rules.pro +++ /dev/null @@ -1,32 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /Users/lixinke/Tool/android-eclipse/adt-bundle-mac-x86_64-20140702/sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} -##weex --keep class com.taobao.weex.bridge.**{*;} --keep class com.taobao.weex.dom.**{*;} --keep class com.taobao.weex.adapter.**{*;} --keep class com.taobao.weex.common.**{*;} --keep class * implements com.taobao.weex.IWXObject{*;} --keep class com.taobao.weex.ui.**{*;} --keep class com.taobao.weex.ui.component.**{*;} --keep class com.taobao.weex.utils.**{ - public ; - public ; - } --keep class com.taobao.weex.view.**{*;} --keep class com.taobao.weex.module.**{*;} --keep public class * extends com.taobao.weex.common.WXModule{*;} \ No newline at end of file diff --git a/android/playground/app/src/androidTest/AndroidManifest.xml b/android/playground/app/src/androidTest/AndroidManifest.xml deleted file mode 100644 index 29b33cd90e..0000000000 --- a/android/playground/app/src/androidTest/AndroidManifest.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - - \ No newline at end of file diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/ApplicationTest.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/ApplicationTest.java deleted file mode 100644 index 5f22786263..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/ApplicationTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/WeappJsBaseTestCase.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/WeappJsBaseTestCase.java deleted file mode 100644 index 242856e152..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/WeappJsBaseTestCase.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.content.Context; -import android.test.ApplicationTestCase; - -import com.taobao.weex.WXSDKEngine; -import com.taobao.weex.WXSDKInstance; - -/** - */ -public class WeappJsBaseTestCase extends ApplicationTestCase { - - public final String ComponentCountDownDir = "tc/countdown"; - public final String ComponentImageDir = "tc/image"; - public final String ComponentMarqueeDir = "tc/marquee"; - public final String ComponentScrollerDir = "tc/scroller"; - public final String ComponentSliderDir = "tc/slider"; - public final String ComponentTabheaderDir = "tc/tabheader"; - public final String ComponentTextrDir = "tc/text"; - // private final String ComponentJSSelfTestDir = "tc/js"; - public final String PathSep = "/"; - - Context testCtx = null; - WXApplication testApplication = null; - private WXSDKInstance mWaEngine; - - public WeappJsBaseTestCase() { - super(WXApplication.class); - } - - public void setUp() throws Exception { - - if (testApplication == null){ - createApplication(); // 创建 application - testApplication = getApplication(); - - WXSDKEngine.init(testApplication, null); -// WXSDKEngine.registerComponent("latestVisitView", WXLatestVisitView.class); -// WXSDKEngine.registerComponent("marquee", WXMarquee.class); -// WXSDKEngine.registerComponent("countdown", WXCountDown.class); -// WXSDKEngine.registerComponent("tabheader", WXTabHeader.class); - } - -// assertNotNull(testApplication); - - } - -// /** -// * Test basic startup/shutdown of Application -// */ -// @MediumTest -// public void testSimpleCreate() { -//// createApplication(); -// } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/BenchmarkTest.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/BenchmarkTest.java deleted file mode 100644 index 7c5abaac1b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/BenchmarkTest.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex.benchmark; - -import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.matcher.ViewMatchers.withClassName; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.awaitility.Awaitility.await; -import static org.hamcrest.MatcherAssert.assertThat; -import android.support.annotation.NonNull; -import android.support.test.InstrumentationRegistry; -import android.support.test.filters.SdkSuppress; -import android.support.test.rule.ActivityTestRule; -import android.support.test.runner.AndroidJUnit4; -import android.support.test.uiautomator.By; -import android.support.test.uiautomator.Direction; -import android.support.test.uiautomator.UiDevice; -import android.support.test.uiautomator.UiObject2; -import android.support.test.uiautomator.Until; -import android.support.test.espresso.contrib.RecyclerViewActions; -import android.text.TextUtils; -import android.util.Log; -import com.alibaba.weex.BenchmarkActivity; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.common.WXPerformance; -import com.taobao.weex.ui.view.listview.WXRecyclerView; -import com.taobao.weex.utils.WXLogUtils; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.TimeUnit; -import org.hamcrest.Matchers; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; - -@RunWith(AndroidJUnit4.class) -public class BenchmarkTest { - - private static final String TAG = "benchmark"; - private static final int TIMES = 50; - private static final int FLING_SPEED = 10000; - private static final int SCROLL_SPEED = 5000; - private static final int FRAMES = 120; - private static final long WAIT_TIMEOUT = 10000; - private static final float FPS = 30; - private static final float FIRST_SCREEN_RENDER_TIME = 5000F; - private static List firstScreenRenderTime = new LinkedList<>(); - private static List firstScreenLayoutTime = new LinkedList<>(); - private static List flingFrameSeconds = new LinkedList<>(); - private static List scrollFrameSeconds = new LinkedList<>(); - private static final String DUMP_START = "QueueBufferDuration,\n"; - private static final String DUMP_END = "---PROFILEDATA---"; - private static final String DUMP_COMMAND = "dumpsys gfxinfo com.alibaba.weex framestats reset"; - - @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule(BenchmarkActivity.class); - @Rule - public RepeatRule repeatRule = new RepeatRule(); - private UiDevice mUiDevice; - - @Before - public void init() { - WXEnvironment.isPerf = true; - mUiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); - } - - @Test - public void testFirstScreenPerformance() { - List localTotalTime = new ArrayList<>(TIMES); - List localLayoutTime = new ArrayList<>(TIMES); - for (int i = 0; i < TIMES; i++) { - WXPerformance performance = fetchPerformance(); - long currentTime = performance.screenRenderTime; - long layoutTime = performance.cssLayoutTime; - localTotalTime.add(currentTime); - localLayoutTime.add(layoutTime); - Log.d(TAG, "FIRST_SCREEN_RENDER_TIME (activity not kill) " + currentTime + "ms"); - Log.d(TAG, "FIRST_SCREEN_LAYOUT_TIME (activity not kill) " + layoutTime + "ms"); - } - BoxPlot render = new BoxPlot(localTotalTime); - BoxPlot layout = new BoxPlot(localLayoutTime); - Log.i(TAG, "Average firstScreenRenderTime (activity not kill) " + render.draw()); - Log.i(TAG, "Average firstScreenLayoutTime (activity not kill) " + layout.draw()); - assertThat(render.getAverage(), Matchers.lessThan(FIRST_SCREEN_RENDER_TIME)); - } - - @Repeat(TIMES) - @Test - public void testFirstFirstScreenPerformance() { - WXPerformance performance = fetchPerformance(); - long currentTime = performance.screenRenderTime; - long layoutTime = performance.cssLayoutTime; - firstScreenRenderTime.add(currentTime); - firstScreenLayoutTime.add(layoutTime); - Log.d(TAG, "FIRST_SCREEN_RENDER_TIME (activity killed) " + currentTime + " ms"); - Log.d(TAG, "FIRST_SCREEN_Layout_TIME (activity killed) " + layoutTime + " ms"); - } - - @Repeat(TIMES) - //@Test - @SdkSuppress(minSdkVersion = 23) - public void testFlingFPS() { - UiObject2 uiObject2 = loadPageForFPS(); - if (uiObject2 != null) { - uiObject2.fling(Direction.DOWN, FLING_SPEED); - uiObject2.fling(Direction.DOWN, FLING_SPEED); - uiObject2.fling(Direction.DOWN, FLING_SPEED); - uiObject2.fling(Direction.DOWN, FLING_SPEED); - processGfxInfo(flingFrameSeconds); - } - } - - @Repeat(TIMES) - //@Test - @SdkSuppress(minSdkVersion = 23) - public void testScrollFPS() { - UiObject2 uiObject2 = loadPageForFPS(); - if (uiObject2 != null) { - uiObject2.scroll(Direction.DOWN, 6, SCROLL_SPEED); - processGfxInfo(scrollFrameSeconds); - } - } - - @AfterClass - public static void count() { - BoxPlot boxPlot = new BoxPlot(firstScreenRenderTime); - Log.i(TAG, "Average firstScreenRenderTime (activity killed) " + boxPlot.draw()); - assertThat(boxPlot.getAverage(), Matchers.lessThan(FIRST_SCREEN_RENDER_TIME)); - BoxPlot layout = new BoxPlot(firstScreenLayoutTime); - Log.i(TAG, "Average firstScreenLayoutTime (activity killed) " + layout.draw()); - if (!flingFrameSeconds.isEmpty()) { - BoxPlot flingPlot = new BoxPlot(flingFrameSeconds); - Log.i(TAG, "Average Fling FPS : " + flingPlot.draw()); - assertThat(1000 / flingPlot.getMedian(), Matchers.greaterThan(FPS)); - } - if (!scrollFrameSeconds.isEmpty()) { - BoxPlot scrollPlot = new BoxPlot(scrollFrameSeconds); - Log.i(TAG, "Average Scroll FPS : " + scrollPlot.draw()); - assertThat(1000 / scrollPlot.getMedian(), Matchers.greaterThan(FPS)); - } - } - - private UiObject2 loadPageForFPS() { - BenchmarkActivity benchmarkActivity = loadWeexPage(); - return mUiDevice.wait(Until.findObject(By.desc(BenchmarkActivity.ROOT)), WAIT_TIMEOUT); - } - - private void processGfxInfo(List container) { - try { - String line; - String[] columns; - long timeStart, timeEnd, duration; - String result = mUiDevice.executeShellCommand(DUMP_COMMAND); - result = result.substring(result.indexOf(DUMP_START), result.lastIndexOf(DUMP_END)); - result = result.substring(DUMP_START.length()); - BufferedReader bufferedReader = new BufferedReader(new StringReader(result)); - List list = createList(bufferedReader); - container.addAll(list); - BoxPlot boxPlot = new BoxPlot(list); - boxPlot.draw(); - Log.d(TAG, "FPS : " + boxPlot.getMedian() + " ms"); - } catch (IOException e) { - WXLogUtils.e(TAG, WXLogUtils.getStackTrace(e)); - } - } - - private List createList(BufferedReader bufferedReader) throws IOException { - String line; - String[] columns; - long timeStart, timeEnd, duration; - List list = new ArrayList<>(FRAMES); - while (!TextUtils.isEmpty(line = bufferedReader.readLine())) { - columns = line.split(","); - if (Long.parseLong(columns[0]) == 0) { - timeStart = Long.parseLong(columns[1]); - timeEnd = Long.parseLong(columns[columns.length - 1]); - duration = timeEnd - timeStart; - if (duration > 0) { - list.add(TimeUnit.MILLISECONDS.convert(duration, TimeUnit.NANOSECONDS)); - } - } - } - return list; - } - - private long calcTime() { - BenchmarkActivity benchmarkActivity = mActivityRule.getActivity(); - benchmarkActivity.loadWeexPage("http://30.8.53.163:8080/complicated.js"); - onView(withClassName(Matchers.is(WXRecyclerView.class.getName()))).perform - (RecyclerViewActions.scrollToPosition(0)); - return benchmarkActivity.getWXInstance().getWXPerformance().screenRenderTime; - } - - private WXPerformance fetchPerformance() { - return loadWeexPage().getWXInstance().getWXPerformance(); - } - - @NonNull - private BenchmarkActivity loadWeexPage() { - final BenchmarkActivity benchmarkActivity = mActivityRule.getActivity(); - benchmarkActivity.loadWeexPage(); - await().atMost(WAIT_TIMEOUT, TimeUnit.MILLISECONDS).until(new Callable() { - @Override - public Boolean call() throws Exception { - return benchmarkActivity.isRenderFinish(); - } - }); - return benchmarkActivity; - } -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/BoxPlot.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/BoxPlot.java deleted file mode 100644 index 7a3f4463c1..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/BoxPlot.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex.benchmark; - -import java.util.Collections; -import java.util.List; - -public class BoxPlot { - - private static final String LINE = "–"; - - private List array; - - private float average, max, min, median, q1, q3; - - public BoxPlot(List array) { - this.array = array; - } - - public void clear() { - if (array != null) { - array.clear(); - } - } - - public float getAverage(){ - return average; - } - - public float getMedian(){ - return median; - } - - public String draw() { - StringBuilder stringBuilder = new StringBuilder(); - if(array!=null) { - calcValues(); - stringBuilder.append("Average: "); - stringBuilder.append(average); - stringBuilder.append(", min: "); - stringBuilder.append(min); - stringBuilder.append(", q1: "); - stringBuilder.append(q1); - stringBuilder.append(", median: "); - stringBuilder.append(median); - stringBuilder.append(", q3: "); - stringBuilder.append(q3); - stringBuilder.append(", max: "); - stringBuilder.append(max); - } - return stringBuilder.toString(); - } - - private void calcValues() { - long sum = 0; - Collections.sort(array); - max = Collections.max(array); - min = Collections.min(array); - median = array.get(array.size() / 2); - q1 = array.get(array.size() / 4); - q3 = array.get(array.size() / 4 * 3); - for (Long value : array) { - sum += value; - } - average = sum / (float)array.size(); - } -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/Repeat.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/Repeat.java deleted file mode 100644 index 01ae222634..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/Repeat.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex.benchmark; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import static java.lang.annotation.ElementType.ANNOTATION_TYPE; -import static java.lang.annotation.ElementType.METHOD; - -@Retention( RetentionPolicy.RUNTIME ) -@Target({ METHOD, ANNOTATION_TYPE }) -public @interface Repeat { - int value() default 1; -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/RepeatRule.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/RepeatRule.java deleted file mode 100644 index dc7e33dd2d..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/RepeatRule.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex.benchmark; - -import org.junit.rules.TestRule; -import org.junit.runner.Description; -import org.junit.runners.model.Statement; - -public class RepeatRule implements TestRule { - - private static class RepeatStatement extends Statement { - private final Statement statement; - private final int repeat; - - public RepeatStatement(Statement statement, int repeat) { - this.statement = statement; - this.repeat = repeat; - } - - @Override - public void evaluate() throws Throwable { - for (int i = 0; i < repeat; i++) { - statement.evaluate(); - } - } - - } - - @Override - public Statement apply(Statement statement, Description description) { - Statement result = statement; - Repeat repeat = description.getAnnotation(Repeat.class); - if (repeat != null) { - int times = repeat.value(); - result = new RepeatStatement(statement, times); - } - return result; - } -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/WeexNativeCompareTest.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/WeexNativeCompareTest.java deleted file mode 100644 index 31085deb6d..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/benchmark/WeexNativeCompareTest.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex.benchmark; - -import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.matcher.ViewMatchers.withClassName; - -import android.support.test.InstrumentationRegistry; -import android.support.test.espresso.action.ViewActions; -import android.support.test.rule.ActivityTestRule; -import android.support.test.runner.AndroidJUnit4; -import android.support.test.uiautomator.UiDevice; -import android.text.TextUtils; -import android.util.Log; -import android.widget.TextView; -import com.alibaba.weex.BenchmarkActivity; -import com.taobao.weex.ui.view.WXFrameLayout; -import com.taobao.weex.utils.WXLogUtils; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; -import org.hamcrest.Matchers; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; - -@RunWith(AndroidJUnit4.class) -public class WeexNativeCompareTest { - private static final String TAG = "benchmark"; - private static final int TIMES = 40; - private static final int FRAMES = 120; - private static final float FIRST_SCREEN_RENDER_TIME = 600F; - private static final String DUMP_START = "Flags,IntendedVsync,Vsync,OldestInputEvent,NewestInputEvent," - + "HandleInputStart,AnimationStart,PerformTraversalsStart,DrawStart," - + "SyncQueued,SyncStart,IssueDrawCommandsStart,SwapBuffers,FrameCompleted,\n"; - private static final String DUMP_END = "---PROFILEDATA---"; - private static final String DUMP_COMMAND = "dumpsys gfxinfo com.alibaba.weex framestats reset"; - - @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule( - BenchmarkActivity.class); - @Rule - public RepeatRule repeatRule = new RepeatRule(); - private UiDevice mUiDevice; - - @Before - public void init() { - mUiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); - } - - @Test - public void testWeexPerformance() { - List localTotalTime = new ArrayList<>(TIMES); - for (int i = 0; i < TIMES; i++) { - long currentTime = calcTime(true); - localTotalTime.add(currentTime); - Log.d(TAG, "Weex render time: " + currentTime + "ms"); - } - BoxPlot boxPlot = new BoxPlot(localTotalTime); - Log.i(TAG, "Average Weex render time: " + boxPlot.draw()); - } - - @Test - public void testNativePerformance(){ - List localTotalTime = new ArrayList<>(TIMES); - for (int i = 0; i < TIMES; i++) { - long currentTime = calcTime(false); - localTotalTime.add(currentTime); - Log.d(TAG, "Native render time: " + currentTime + "ms"); - } - BoxPlot boxPlot = new BoxPlot(localTotalTime); - Log.i(TAG, "Average native render time: " + boxPlot.draw()); - } - - private long calcTime(boolean weex) { - BenchmarkActivity benchmarkActivity = mActivityRule.getActivity(); - benchmarkActivity.loadWeexPage(weex); - if(weex) { - onView(withClassName(Matchers.is(WXFrameLayout.class.getName()))).perform - (ViewActions.swipeDown()); - } - else{ - onView(withClassName(Matchers.is(TextView.class.getName()))).perform - (ViewActions.swipeDown()); - } - return benchmarkActivity.getDuration(); - //.getWXInstance().getWXPerformance().screenRenderTime; - } - - private void processGfxInfo(List container) { - try { - String line; - String[] columns; - long timeStart, timeEnd, duration; - String result = mUiDevice.executeShellCommand(DUMP_COMMAND); - result = result.substring(result.indexOf(DUMP_START), result.lastIndexOf(DUMP_END)); - result = result.substring(DUMP_START.length()); - BufferedReader bufferedReader = new BufferedReader(new StringReader(result)); - List list = createList(bufferedReader); - container.addAll(list); - BoxPlot boxPlot = new BoxPlot(list); - boxPlot.draw(); - Log.d(TAG, "FPS : " + boxPlot.getMedian() + " ms"); - } catch (IOException e) { - WXLogUtils.e(TAG, WXLogUtils.getStackTrace(e)); - } - } - - private List createList(BufferedReader bufferedReader) throws IOException { - String line; - String[] columns; - long timeStart, timeEnd, duration; - List list = new ArrayList<>(FRAMES); - while (!TextUtils.isEmpty(line = bufferedReader.readLine())) { - columns = line.split(","); - if (Long.parseLong(columns[0]) == 0) { - timeStart = Long.parseLong(columns[1]); - timeEnd = Long.parseLong(columns[columns.length - 1]); - duration = timeEnd - timeStart; - if (duration > 0) { - list.add(TimeUnit.MILLISECONDS.convert(duration, TimeUnit.NANOSECONDS)); - } - } - } - return list; - } -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_AHref_A_Href.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_AHref_A_Href.java deleted file mode 100644 index 72f768eb87..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_AHref_A_Href.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_AHref_A_Href extends TestFlow { - public AG_AHref_A_Href() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_AHref"); - testMap.put("testChildCaseInit", "AG_AHref_A_Href"); - testMap.put("step1",new TreeMap(){ - { - put("click", "href0"); - put("screenshot", "AG_AHref_A_Href_01_href0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "href1"); - put("screenshot", "AG_AHref_A_Href_02_href1"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Color.java deleted file mode 100644 index 9898adc2a8..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Bottom_Color extends TestFlow { - public AG_Border_A_Border_Bottom_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Bottom_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_A_Border_Bottom_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_A_Border_Bottom_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Left_Radius.java deleted file mode 100644 index 400a876c4f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Bottom_Left_Radius extends TestFlow { - public AG_Border_A_Border_Bottom_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Bottom_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_A_Border_Bottom_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_A_Border_Bottom_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Right_Radius.java deleted file mode 100644 index fece5d5190..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Bottom_Right_Radius extends TestFlow { - public AG_Border_A_Border_Bottom_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Bottom_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_A_Border_Bottom_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_A_Border_Bottom_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Width.java deleted file mode 100644 index 0ac666fe62..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Bottom_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Bottom_Width extends TestFlow { - public AG_Border_A_Border_Bottom_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Bottom_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_A_Border_Bottom_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_A_Border_Bottom_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_A_Border_Bottom_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Color.java deleted file mode 100644 index ab2d0378a3..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Color extends TestFlow { - public AG_Border_A_Border_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_A_Border_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_A_Border_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Left_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Left_Color.java deleted file mode 100644 index f01c7d6be9..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Left_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Left_Color extends TestFlow { - public AG_Border_A_Border_Left_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Left_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_A_Border_Left_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_A_Border_Left_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Left_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Left_Width.java deleted file mode 100644 index 99601f1865..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Left_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Left_Width extends TestFlow { - public AG_Border_A_Border_Left_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Left_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_A_Border_Left_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_A_Border_Left_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_A_Border_Left_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Radius.java deleted file mode 100644 index 81beb75ae5..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Radius extends TestFlow { - public AG_Border_A_Border_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_A_Border_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_A_Border_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Right_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Right_Color.java deleted file mode 100644 index 1bb9bd6612..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Right_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Right_Color extends TestFlow { - public AG_Border_A_Border_Right_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Right_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_A_Border_Right_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_A_Border_Right_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Right_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Right_Width.java deleted file mode 100644 index c2a1fbff2d..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Right_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Right_Width extends TestFlow { - public AG_Border_A_Border_Right_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Right_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_A_Border_Right_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_A_Border_Right_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_A_Border_Right_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Style.java deleted file mode 100644 index 193defd06e..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Style.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Style extends TestFlow { - public AG_Border_A_Border_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "solid"); - put("screenshot", "AG_Border_A_Border_Style_01_solid"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "dashed"); - put("screenshot", "AG_Border_A_Border_Style_02_dashed"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "dotted"); - put("screenshot", "AG_Border_A_Border_Style_03_dotted"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Color.java deleted file mode 100644 index 8e1f0147eb..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Top_Color extends TestFlow { - public AG_Border_A_Border_Top_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Top_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_A_Border_Top_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_A_Border_Top_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Left_Radius.java deleted file mode 100644 index cde98335bb..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Top_Left_Radius extends TestFlow { - public AG_Border_A_Border_Top_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Top_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_A_Border_Top_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_A_Border_Top_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Right_Radius.java deleted file mode 100644 index f40b3b7612..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Top_Right_Radius extends TestFlow { - public AG_Border_A_Border_Top_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Top_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_A_Border_Top_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_A_Border_Top_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Width.java deleted file mode 100644 index a22a55db8f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Top_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Top_Width extends TestFlow { - public AG_Border_A_Border_Top_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Top_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_A_Border_Top_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_A_Border_Top_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_A_Border_Top_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Width.java deleted file mode 100644 index f26d1f5a35..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_A_Border_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_A_Border_Width extends TestFlow { - public AG_Border_A_Border_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_A_Border_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_A_Border_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_A_Border_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_A_Border_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Color.java deleted file mode 100644 index 64c3ad1473..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Bottom_Color extends TestFlow { - public AG_Border_Div_Border_Bottom_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Bottom_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Div_Border_Bottom_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Div_Border_Bottom_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Left_Radius.java deleted file mode 100644 index 627cb4f753..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Bottom_Left_Radius extends TestFlow { - public AG_Border_Div_Border_Bottom_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Bottom_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Div_Border_Bottom_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Div_Border_Bottom_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Right_Radius.java deleted file mode 100644 index b47675075d..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Bottom_Right_Radius extends TestFlow { - public AG_Border_Div_Border_Bottom_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Bottom_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Div_Border_Bottom_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Div_Border_Bottom_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Width.java deleted file mode 100644 index 842e6a6a74..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Bottom_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Bottom_Width extends TestFlow { - public AG_Border_Div_Border_Bottom_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Bottom_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Div_Border_Bottom_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Div_Border_Bottom_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Div_Border_Bottom_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Color.java deleted file mode 100644 index 2309a33d72..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Color extends TestFlow { - public AG_Border_Div_Border_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Div_Border_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Div_Border_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Left_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Left_Color.java deleted file mode 100644 index cfcbf7f7aa..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Left_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Left_Color extends TestFlow { - public AG_Border_Div_Border_Left_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Left_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Div_Border_Left_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Div_Border_Left_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Left_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Left_Width.java deleted file mode 100644 index e4884eec05..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Left_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Left_Width extends TestFlow { - public AG_Border_Div_Border_Left_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Left_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Div_Border_Left_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Div_Border_Left_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Div_Border_Left_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Radius.java deleted file mode 100644 index 217e02bb2a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Radius extends TestFlow { - public AG_Border_Div_Border_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Div_Border_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Div_Border_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Right_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Right_Color.java deleted file mode 100644 index ee5017932c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Right_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Right_Color extends TestFlow { - public AG_Border_Div_Border_Right_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Right_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Div_Border_Right_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Div_Border_Right_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Right_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Right_Width.java deleted file mode 100644 index e84210f5b8..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Right_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Right_Width extends TestFlow { - public AG_Border_Div_Border_Right_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Right_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Div_Border_Right_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Div_Border_Right_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Div_Border_Right_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Style.java deleted file mode 100644 index ed84cc66c9..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Style.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Style extends TestFlow { - public AG_Border_Div_Border_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "solid"); - put("screenshot", "AG_Border_Div_Border_Style_01_solid"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "dashed"); - put("screenshot", "AG_Border_Div_Border_Style_02_dashed"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "dotted"); - put("screenshot", "AG_Border_Div_Border_Style_03_dotted"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Color.java deleted file mode 100644 index f136dfc866..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Top_Color extends TestFlow { - public AG_Border_Div_Border_Top_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Top_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Div_Border_Top_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Div_Border_Top_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Left_Radius.java deleted file mode 100644 index 75602a529b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Top_Left_Radius extends TestFlow { - public AG_Border_Div_Border_Top_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Top_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Div_Border_Top_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Div_Border_Top_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Right_Radius.java deleted file mode 100644 index e084c53c9b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Top_Right_Radius extends TestFlow { - public AG_Border_Div_Border_Top_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Top_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Div_Border_Top_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Div_Border_Top_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Width.java deleted file mode 100644 index feb9f82d17..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Top_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Top_Width extends TestFlow { - public AG_Border_Div_Border_Top_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Top_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Div_Border_Top_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Div_Border_Top_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Div_Border_Top_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Width.java deleted file mode 100644 index 7d8195dc0a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Div_Border_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Div_Border_Width extends TestFlow { - public AG_Border_Div_Border_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Div_Border_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Div_Border_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Div_Border_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Div_Border_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Color.java deleted file mode 100644 index 8b37598e87..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Bottom_Color extends TestFlow { - public AG_Border_Image_Border_Bottom_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Bottom_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Image_Border_Bottom_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Image_Border_Bottom_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Left_Radius.java deleted file mode 100644 index ab4df8f52e..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Bottom_Left_Radius extends TestFlow { - public AG_Border_Image_Border_Bottom_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Bottom_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Image_Border_Bottom_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Image_Border_Bottom_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Right_Radius.java deleted file mode 100644 index 1f736d75d1..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Bottom_Right_Radius extends TestFlow { - public AG_Border_Image_Border_Bottom_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Bottom_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Image_Border_Bottom_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Image_Border_Bottom_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Width.java deleted file mode 100644 index d2e627166c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Bottom_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Bottom_Width extends TestFlow { - public AG_Border_Image_Border_Bottom_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Bottom_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Image_Border_Bottom_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Image_Border_Bottom_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Image_Border_Bottom_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Color.java deleted file mode 100644 index 8bdc586349..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Color extends TestFlow { - public AG_Border_Image_Border_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Image_Border_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Image_Border_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Left_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Left_Color.java deleted file mode 100644 index 2306009259..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Left_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Left_Color extends TestFlow { - public AG_Border_Image_Border_Left_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Left_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Image_Border_Left_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Image_Border_Left_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Left_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Left_Width.java deleted file mode 100644 index ec49562c4c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Left_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Left_Width extends TestFlow { - public AG_Border_Image_Border_Left_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Left_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Image_Border_Left_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Image_Border_Left_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Image_Border_Left_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Radius.java deleted file mode 100644 index bd1b1fa5b3..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Radius extends TestFlow { - public AG_Border_Image_Border_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Image_Border_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Image_Border_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Right_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Right_Color.java deleted file mode 100644 index c64bd488c7..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Right_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Right_Color extends TestFlow { - public AG_Border_Image_Border_Right_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Right_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Image_Border_Right_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Image_Border_Right_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Right_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Right_Width.java deleted file mode 100644 index a7611a4bd5..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Right_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Right_Width extends TestFlow { - public AG_Border_Image_Border_Right_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Right_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Image_Border_Right_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Image_Border_Right_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Image_Border_Right_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Style.java deleted file mode 100644 index ce8b05b436..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Style.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Style extends TestFlow { - public AG_Border_Image_Border_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "solid"); - put("screenshot", "AG_Border_Image_Border_Style_01_solid"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "dashed"); - put("screenshot", "AG_Border_Image_Border_Style_02_dashed"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "dotted"); - put("screenshot", "AG_Border_Image_Border_Style_03_dotted"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Color.java deleted file mode 100644 index be08a5f013..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Top_Color extends TestFlow { - public AG_Border_Image_Border_Top_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Top_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Image_Border_Top_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Image_Border_Top_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Left_Radius.java deleted file mode 100644 index 0f3ff95d45..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Top_Left_Radius extends TestFlow { - public AG_Border_Image_Border_Top_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Top_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Image_Border_Top_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Image_Border_Top_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Right_Radius.java deleted file mode 100644 index a894281a75..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Top_Right_Radius extends TestFlow { - public AG_Border_Image_Border_Top_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Top_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Image_Border_Top_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Image_Border_Top_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Width.java deleted file mode 100644 index 9597c4531f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Top_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Top_Width extends TestFlow { - public AG_Border_Image_Border_Top_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Top_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Image_Border_Top_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Image_Border_Top_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Image_Border_Top_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Width.java deleted file mode 100644 index 7eaa4b3283..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Image_Border_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Image_Border_Width extends TestFlow { - public AG_Border_Image_Border_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Image_Border_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Image_Border_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Image_Border_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Image_Border_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Color.java deleted file mode 100644 index df1ed78a59..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Bottom_Color extends TestFlow { - public AG_Border_Input_Border_Bottom_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Bottom_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Input_Border_Bottom_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Input_Border_Bottom_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Left_Radius.java deleted file mode 100644 index 459082412f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Bottom_Left_Radius extends TestFlow { - public AG_Border_Input_Border_Bottom_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Bottom_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Input_Border_Bottom_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Input_Border_Bottom_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Right_Radius.java deleted file mode 100644 index 6fa2284ae3..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Bottom_Right_Radius extends TestFlow { - public AG_Border_Input_Border_Bottom_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Bottom_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Input_Border_Bottom_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Input_Border_Bottom_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Width.java deleted file mode 100644 index ce4a46b952..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Bottom_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Bottom_Width extends TestFlow { - public AG_Border_Input_Border_Bottom_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Bottom_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Input_Border_Bottom_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Input_Border_Bottom_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Input_Border_Bottom_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Color.java deleted file mode 100644 index ff1763e0a2..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Color extends TestFlow { - public AG_Border_Input_Border_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Input_Border_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Input_Border_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Left_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Left_Color.java deleted file mode 100644 index 7537213021..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Left_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Left_Color extends TestFlow { - public AG_Border_Input_Border_Left_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Left_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Input_Border_Left_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Input_Border_Left_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Left_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Left_Width.java deleted file mode 100644 index f682725c56..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Left_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Left_Width extends TestFlow { - public AG_Border_Input_Border_Left_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Left_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Input_Border_Left_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Input_Border_Left_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Input_Border_Left_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Radius.java deleted file mode 100644 index 0f8441da9c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Radius extends TestFlow { - public AG_Border_Input_Border_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Input_Border_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Input_Border_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Right_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Right_Color.java deleted file mode 100644 index a6c472ef8c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Right_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Right_Color extends TestFlow { - public AG_Border_Input_Border_Right_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Right_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Input_Border_Right_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Input_Border_Right_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Right_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Right_Width.java deleted file mode 100644 index 2b4a8ef6a9..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Right_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Right_Width extends TestFlow { - public AG_Border_Input_Border_Right_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Right_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Input_Border_Right_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Input_Border_Right_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Input_Border_Right_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Style.java deleted file mode 100644 index 6fb9c1bad7..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Style.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Style extends TestFlow { - public AG_Border_Input_Border_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "solid"); - put("screenshot", "AG_Border_Input_Border_Style_01_solid"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "dashed"); - put("screenshot", "AG_Border_Input_Border_Style_02_dashed"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "dotted"); - put("screenshot", "AG_Border_Input_Border_Style_03_dotted"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Color.java deleted file mode 100644 index 2156e681b2..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Top_Color extends TestFlow { - public AG_Border_Input_Border_Top_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Top_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Input_Border_Top_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Input_Border_Top_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Left_Radius.java deleted file mode 100644 index 67816c190b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Top_Left_Radius extends TestFlow { - public AG_Border_Input_Border_Top_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Top_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Input_Border_Top_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Input_Border_Top_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Right_Radius.java deleted file mode 100644 index a143813a6a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Top_Right_Radius extends TestFlow { - public AG_Border_Input_Border_Top_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Top_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Input_Border_Top_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Input_Border_Top_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Width.java deleted file mode 100644 index abdeee3f5f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Top_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Top_Width extends TestFlow { - public AG_Border_Input_Border_Top_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Top_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Input_Border_Top_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Input_Border_Top_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Input_Border_Top_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Width.java deleted file mode 100644 index df44ae5ceb..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Input_Border_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Input_Border_Width extends TestFlow { - public AG_Border_Input_Border_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Input_Border_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Input_Border_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Input_Border_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Input_Border_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Color.java deleted file mode 100644 index 6da173e027..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Bottom_Color extends TestFlow { - public AG_Border_Switch_Border_Bottom_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Bottom_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Left_Radius.java deleted file mode 100644 index 7327406d68..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Bottom_Left_Radius extends TestFlow { - public AG_Border_Switch_Border_Bottom_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Bottom_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Right_Radius.java deleted file mode 100644 index 5e8c07b162..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Bottom_Right_Radius extends TestFlow { - public AG_Border_Switch_Border_Bottom_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Bottom_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Width.java deleted file mode 100644 index d0e42fdb2c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Bottom_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Bottom_Width extends TestFlow { - public AG_Border_Switch_Border_Bottom_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Bottom_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Switch_Border_Bottom_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Color.java deleted file mode 100644 index 4c246222eb..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Color extends TestFlow { - public AG_Border_Switch_Border_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Switch_Border_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Switch_Border_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Left_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Left_Color.java deleted file mode 100644 index 0f37b89806..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Left_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Left_Color extends TestFlow { - public AG_Border_Switch_Border_Left_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Left_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Switch_Border_Left_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Switch_Border_Left_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Left_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Left_Width.java deleted file mode 100644 index fdee548fa9..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Left_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Left_Width extends TestFlow { - public AG_Border_Switch_Border_Left_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Left_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Switch_Border_Left_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Switch_Border_Left_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Switch_Border_Left_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Radius.java deleted file mode 100644 index 162c507834..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Radius extends TestFlow { - public AG_Border_Switch_Border_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Switch_Border_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Switch_Border_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Right_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Right_Color.java deleted file mode 100644 index 5a580d7705..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Right_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Right_Color extends TestFlow { - public AG_Border_Switch_Border_Right_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Right_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Switch_Border_Right_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Switch_Border_Right_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Right_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Right_Width.java deleted file mode 100644 index 1c89eda4e0..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Right_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Right_Width extends TestFlow { - public AG_Border_Switch_Border_Right_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Right_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Switch_Border_Right_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Switch_Border_Right_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Switch_Border_Right_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Style.java deleted file mode 100644 index c91c1ffde5..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Style.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Style extends TestFlow { - public AG_Border_Switch_Border_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "solid"); - put("screenshot", "AG_Border_Switch_Border_Style_01_solid"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "dashed"); - put("screenshot", "AG_Border_Switch_Border_Style_02_dashed"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "dotted"); - put("screenshot", "AG_Border_Switch_Border_Style_03_dotted"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Color.java deleted file mode 100644 index 135456af76..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Top_Color extends TestFlow { - public AG_Border_Switch_Border_Top_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Top_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Switch_Border_Top_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Switch_Border_Top_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Left_Radius.java deleted file mode 100644 index d01f61d45f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Top_Left_Radius extends TestFlow { - public AG_Border_Switch_Border_Top_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Top_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Switch_Border_Top_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Switch_Border_Top_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Right_Radius.java deleted file mode 100644 index e8941f7f69..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Top_Right_Radius extends TestFlow { - public AG_Border_Switch_Border_Top_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Top_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Switch_Border_Top_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Switch_Border_Top_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Width.java deleted file mode 100644 index 5c7ae67c4c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Top_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Top_Width extends TestFlow { - public AG_Border_Switch_Border_Top_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Top_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Switch_Border_Top_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Switch_Border_Top_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Switch_Border_Top_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Width.java deleted file mode 100644 index e982f97868..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Switch_Border_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Switch_Border_Width extends TestFlow { - public AG_Border_Switch_Border_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Switch_Border_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Switch_Border_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Switch_Border_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Switch_Border_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Color.java deleted file mode 100644 index 9ec2a075aa..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Bottom_Color extends TestFlow { - public AG_Border_Text_Border_Bottom_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Bottom_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Text_Border_Bottom_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Text_Border_Bottom_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Left_Radius.java deleted file mode 100644 index caf346addb..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Bottom_Left_Radius extends TestFlow { - public AG_Border_Text_Border_Bottom_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Bottom_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Text_Border_Bottom_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Text_Border_Bottom_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Right_Radius.java deleted file mode 100644 index cea73121a5..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Bottom_Right_Radius extends TestFlow { - public AG_Border_Text_Border_Bottom_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Bottom_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Text_Border_Bottom_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Text_Border_Bottom_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Width.java deleted file mode 100644 index 4770230843..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Bottom_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Bottom_Width extends TestFlow { - public AG_Border_Text_Border_Bottom_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Bottom_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Text_Border_Bottom_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Text_Border_Bottom_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Text_Border_Bottom_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Color.java deleted file mode 100644 index ff1d670f3c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Color extends TestFlow { - public AG_Border_Text_Border_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Text_Border_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Text_Border_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Left_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Left_Color.java deleted file mode 100644 index a59e398fb8..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Left_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Left_Color extends TestFlow { - public AG_Border_Text_Border_Left_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Left_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Text_Border_Left_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Text_Border_Left_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Left_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Left_Width.java deleted file mode 100644 index 429f8279a8..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Left_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Left_Width extends TestFlow { - public AG_Border_Text_Border_Left_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Left_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Text_Border_Left_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Text_Border_Left_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Text_Border_Left_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Radius.java deleted file mode 100644 index c4b169ee27..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Radius extends TestFlow { - public AG_Border_Text_Border_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Text_Border_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Text_Border_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Right_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Right_Color.java deleted file mode 100644 index 75152ce294..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Right_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Right_Color extends TestFlow { - public AG_Border_Text_Border_Right_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Right_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Text_Border_Right_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Text_Border_Right_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Right_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Right_Width.java deleted file mode 100644 index 9b637d5462..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Right_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Right_Width extends TestFlow { - public AG_Border_Text_Border_Right_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Right_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Text_Border_Right_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Text_Border_Right_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Text_Border_Right_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Style.java deleted file mode 100644 index 0de90b8efb..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Style.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Style extends TestFlow { - public AG_Border_Text_Border_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "solid"); - put("screenshot", "AG_Border_Text_Border_Style_01_solid"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "dashed"); - put("screenshot", "AG_Border_Text_Border_Style_02_dashed"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "dotted"); - put("screenshot", "AG_Border_Text_Border_Style_03_dotted"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Color.java deleted file mode 100644 index 87579b9ff5..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Top_Color extends TestFlow { - public AG_Border_Text_Border_Top_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Top_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Text_Border_Top_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Text_Border_Top_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Left_Radius.java deleted file mode 100644 index a052f7e326..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Top_Left_Radius extends TestFlow { - public AG_Border_Text_Border_Top_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Top_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Text_Border_Top_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Text_Border_Top_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Right_Radius.java deleted file mode 100644 index af5724a41d..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Top_Right_Radius extends TestFlow { - public AG_Border_Text_Border_Top_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Top_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Text_Border_Top_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Text_Border_Top_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Width.java deleted file mode 100644 index b0d21cc0d5..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Top_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Top_Width extends TestFlow { - public AG_Border_Text_Border_Top_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Top_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Text_Border_Top_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Text_Border_Top_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Text_Border_Top_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Width.java deleted file mode 100644 index 8f78d9e398..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Text_Border_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Text_Border_Width extends TestFlow { - public AG_Border_Text_Border_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Text_Border_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Text_Border_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Text_Border_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Text_Border_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Color.java deleted file mode 100644 index afea0cdfce..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Bottom_Color extends TestFlow { - public AG_Border_Video_Border_Bottom_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Bottom_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Video_Border_Bottom_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Video_Border_Bottom_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Left_Radius.java deleted file mode 100644 index a417ef4cad..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Bottom_Left_Radius extends TestFlow { - public AG_Border_Video_Border_Bottom_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Bottom_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Video_Border_Bottom_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Video_Border_Bottom_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Right_Radius.java deleted file mode 100644 index 6521b59254..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Bottom_Right_Radius extends TestFlow { - public AG_Border_Video_Border_Bottom_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Bottom_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Video_Border_Bottom_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Video_Border_Bottom_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Width.java deleted file mode 100644 index 5a416e0d2a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Bottom_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Bottom_Width extends TestFlow { - public AG_Border_Video_Border_Bottom_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Bottom_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Video_Border_Bottom_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Video_Border_Bottom_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Video_Border_Bottom_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Color.java deleted file mode 100644 index eafdec67f4..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Color extends TestFlow { - public AG_Border_Video_Border_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Video_Border_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Video_Border_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Left_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Left_Color.java deleted file mode 100644 index 3c50a89d73..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Left_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Left_Color extends TestFlow { - public AG_Border_Video_Border_Left_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Left_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Video_Border_Left_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Video_Border_Left_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Left_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Left_Width.java deleted file mode 100644 index 5a77d67ca4..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Left_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Left_Width extends TestFlow { - public AG_Border_Video_Border_Left_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Left_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Video_Border_Left_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Video_Border_Left_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Video_Border_Left_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Radius.java deleted file mode 100644 index d88ec00629..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Radius extends TestFlow { - public AG_Border_Video_Border_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Video_Border_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Video_Border_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Right_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Right_Color.java deleted file mode 100644 index 949b790573..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Right_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Right_Color extends TestFlow { - public AG_Border_Video_Border_Right_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Right_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Video_Border_Right_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Video_Border_Right_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Right_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Right_Width.java deleted file mode 100644 index e8db7d1bdc..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Right_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Right_Width extends TestFlow { - public AG_Border_Video_Border_Right_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Right_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Video_Border_Right_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Video_Border_Right_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Video_Border_Right_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Style.java deleted file mode 100644 index cfaa57365e..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Style.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Style extends TestFlow { - public AG_Border_Video_Border_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "solid"); - put("screenshot", "AG_Border_Video_Border_Style_01_solid"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "dashed"); - put("screenshot", "AG_Border_Video_Border_Style_02_dashed"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "dotted"); - put("screenshot", "AG_Border_Video_Border_Style_03_dotted"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Color.java deleted file mode 100644 index 3686773310..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Top_Color extends TestFlow { - public AG_Border_Video_Border_Top_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Top_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Video_Border_Top_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Video_Border_Top_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Left_Radius.java deleted file mode 100644 index be3c07d22f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Top_Left_Radius extends TestFlow { - public AG_Border_Video_Border_Top_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Top_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Video_Border_Top_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Video_Border_Top_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Right_Radius.java deleted file mode 100644 index 0880893fb6..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Top_Right_Radius extends TestFlow { - public AG_Border_Video_Border_Top_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Top_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Video_Border_Top_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Video_Border_Top_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Width.java deleted file mode 100644 index 46ebf4b0fc..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Top_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Top_Width extends TestFlow { - public AG_Border_Video_Border_Top_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Top_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Video_Border_Top_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Video_Border_Top_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Video_Border_Top_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Width.java deleted file mode 100644 index 290a2087ea..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Video_Border_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Video_Border_Width extends TestFlow { - public AG_Border_Video_Border_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Video_Border_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Video_Border_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Video_Border_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Video_Border_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Color.java deleted file mode 100644 index e8daaabaca..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Bottom_Color extends TestFlow { - public AG_Border_Web_Border_Bottom_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Bottom_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Web_Border_Bottom_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Web_Border_Bottom_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Left_Radius.java deleted file mode 100644 index feb4ca3023..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Bottom_Left_Radius extends TestFlow { - public AG_Border_Web_Border_Bottom_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Bottom_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Web_Border_Bottom_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Web_Border_Bottom_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Right_Radius.java deleted file mode 100644 index 58aae0177b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Bottom_Right_Radius extends TestFlow { - public AG_Border_Web_Border_Bottom_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Bottom_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Web_Border_Bottom_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Web_Border_Bottom_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Width.java deleted file mode 100644 index 0f76e3e37a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Bottom_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Bottom_Width extends TestFlow { - public AG_Border_Web_Border_Bottom_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Bottom_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Web_Border_Bottom_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Web_Border_Bottom_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Web_Border_Bottom_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Color.java deleted file mode 100644 index 1246a6817a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Color extends TestFlow { - public AG_Border_Web_Border_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Web_Border_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Web_Border_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Left_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Left_Color.java deleted file mode 100644 index 85628b7de6..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Left_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Left_Color extends TestFlow { - public AG_Border_Web_Border_Left_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Left_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Web_Border_Left_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Web_Border_Left_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Left_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Left_Width.java deleted file mode 100644 index b3d16ae606..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Left_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Left_Width extends TestFlow { - public AG_Border_Web_Border_Left_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Left_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Web_Border_Left_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Web_Border_Left_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Web_Border_Left_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Radius.java deleted file mode 100644 index f394fe8821..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Radius extends TestFlow { - public AG_Border_Web_Border_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Web_Border_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Web_Border_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Right_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Right_Color.java deleted file mode 100644 index 5251309ed3..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Right_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Right_Color extends TestFlow { - public AG_Border_Web_Border_Right_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Right_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Web_Border_Right_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Web_Border_Right_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Right_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Right_Width.java deleted file mode 100644 index 1d4fa6aaf2..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Right_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Right_Width extends TestFlow { - public AG_Border_Web_Border_Right_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Right_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Web_Border_Right_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Web_Border_Right_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Web_Border_Right_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Style.java deleted file mode 100644 index 1409d17d05..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Style.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Style extends TestFlow { - public AG_Border_Web_Border_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "solid"); - put("screenshot", "AG_Border_Web_Border_Style_01_solid"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "dashed"); - put("screenshot", "AG_Border_Web_Border_Style_02_dashed"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "dotted"); - put("screenshot", "AG_Border_Web_Border_Style_03_dotted"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Color.java deleted file mode 100644 index bc11365a0d..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Top_Color extends TestFlow { - public AG_Border_Web_Border_Top_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Top_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Border_Web_Border_Top_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_Border_Web_Border_Top_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Left_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Left_Radius.java deleted file mode 100644 index c5d2222e88..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Left_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Top_Left_Radius extends TestFlow { - public AG_Border_Web_Border_Top_Left_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Top_Left_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Web_Border_Top_Left_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Web_Border_Top_Left_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Right_Radius.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Right_Radius.java deleted file mode 100644 index bcc10fd8a0..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Right_Radius.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Top_Right_Radius extends TestFlow { - public AG_Border_Web_Border_Top_Right_Radius() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Top_Right_Radius"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Border_Web_Border_Top_Right_Radius_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Border_Web_Border_Top_Right_Radius_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Width.java deleted file mode 100644 index adcae5c702..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Top_Width.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; - -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Top_Width extends TestFlow { - public AG_Border_Web_Border_Top_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Top_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Web_Border_Top_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Web_Border_Top_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Web_Border_Top_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Width.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Width.java deleted file mode 100644 index 628bc062e0..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Border_Web_Border_Width.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Border_Web_Border_Width extends TestFlow { - public AG_Border_Web_Border_Width() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Border"); - testMap.put("testChildCaseInit", "AG_Border_Web_Border_Width"); - testMap.put("step1",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Border_Web_Border_Width_01_0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Border_Web_Border_Width_02_1"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "3"); - put("screenshot", "AG_Border_Web_Border_Width_03_3"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_A_If.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_A_If.java deleted file mode 100644 index 33f165650a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_A_If.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonAttribute_A_If extends TestFlow { - public AG_CommonAttribute_A_If() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonAttribute"); - testMap.put("testChildCaseInit", "AG_CommonAttribute_A_If"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_CommonAttribute_A_If_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_CommonAttribute_A_If_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Div_If.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Div_If.java deleted file mode 100644 index 684e7179ba..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Div_If.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonAttribute_Div_If extends TestFlow { - public AG_CommonAttribute_Div_If() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonAttribute"); - testMap.put("testChildCaseInit", "AG_CommonAttribute_Div_If"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_CommonAttribute_Div_If_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_CommonAttribute_Div_If_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Image_If.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Image_If.java deleted file mode 100644 index a8ff83d5b6..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Image_If.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonAttribute_Image_If extends TestFlow { - public AG_CommonAttribute_Image_If() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonAttribute"); - testMap.put("testChildCaseInit", "AG_CommonAttribute_Image_If"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_CommonAttribute_Image_If_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_CommonAttribute_Image_If_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Input_If.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Input_If.java deleted file mode 100644 index c47f7440b5..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Input_If.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonAttribute_Input_If extends TestFlow { - public AG_CommonAttribute_Input_If() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonAttribute"); - testMap.put("testChildCaseInit", "AG_CommonAttribute_Input_If"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_CommonAttribute_Input_If_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_CommonAttribute_Input_If_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Switch_If.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Switch_If.java deleted file mode 100644 index d011213a44..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Switch_If.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonAttribute_Switch_If extends TestFlow { - public AG_CommonAttribute_Switch_If() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonAttribute"); - testMap.put("testChildCaseInit", "AG_CommonAttribute_Switch_If"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_CommonAttribute_Switch_If_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_CommonAttribute_Switch_If_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Text_If.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Text_If.java deleted file mode 100644 index 15e17c6482..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Text_If.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonAttribute_Text_If extends TestFlow { - public AG_CommonAttribute_Text_If() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonAttribute"); - testMap.put("testChildCaseInit", "AG_CommonAttribute_Text_If"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_CommonAttribute_Text_If_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_CommonAttribute_Text_If_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Video_If.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Video_If.java deleted file mode 100644 index 04a4a59f9a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Video_If.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonAttribute_Video_If extends TestFlow { - public AG_CommonAttribute_Video_If() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonAttribute"); - testMap.put("testChildCaseInit", "AG_CommonAttribute_Video_If"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_CommonAttribute_Video_If_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_CommonAttribute_Video_If_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Web_If.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Web_If.java deleted file mode 100644 index 05958c4b3f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonAttribute_Web_If.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonAttribute_Web_If extends TestFlow { - public AG_CommonAttribute_Web_If() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonAttribute"); - testMap.put("testChildCaseInit", "AG_CommonAttribute_Web_If"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_CommonAttribute_Web_If_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_CommonAttribute_Web_If_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_A_Onclick.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_A_Onclick.java deleted file mode 100644 index 7c9e0c8f52..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_A_Onclick.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonEvent_A_Onclick extends TestFlow { - public AG_CommonEvent_A_Onclick() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonEvent"); - testMap.put("testChildCaseInit", "AG_CommonEvent_A_Onclick"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Div_Onclick.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Div_Onclick.java deleted file mode 100644 index 4bdb5e7422..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Div_Onclick.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonEvent_Div_Onclick extends TestFlow { - public AG_CommonEvent_Div_Onclick() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonEvent"); - testMap.put("testChildCaseInit", "AG_CommonEvent_Div_Onclick"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Image_Onclick.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Image_Onclick.java deleted file mode 100644 index 4f5c5a1262..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Image_Onclick.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonEvent_Image_Onclick extends TestFlow { - public AG_CommonEvent_Image_Onclick() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonEvent"); - testMap.put("testChildCaseInit", "AG_CommonEvent_Image_Onclick"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Input_Onclick.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Input_Onclick.java deleted file mode 100644 index 00eb917aeb..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Input_Onclick.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonEvent_Input_Onclick extends TestFlow { - public AG_CommonEvent_Input_Onclick() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonEvent"); - testMap.put("testChildCaseInit", "AG_CommonEvent_Input_Onclick"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Switch_Onclick.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Switch_Onclick.java deleted file mode 100644 index 30d2d463ac..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Switch_Onclick.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonEvent_Switch_Onclick extends TestFlow { - public AG_CommonEvent_Switch_Onclick() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonEvent"); - testMap.put("testChildCaseInit", "AG_CommonEvent_Switch_Onclick"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Text_Onclick.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Text_Onclick.java deleted file mode 100644 index 74d27d611e..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Text_Onclick.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonEvent_Text_Onclick extends TestFlow { - public AG_CommonEvent_Text_Onclick() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonEvent"); - testMap.put("testChildCaseInit", "AG_CommonEvent_Text_Onclick"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Video_Onclick.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Video_Onclick.java deleted file mode 100644 index 6b699edb1e..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Video_Onclick.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonEvent_Video_Onclick extends TestFlow { - public AG_CommonEvent_Video_Onclick() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonEvent"); - testMap.put("testChildCaseInit", "AG_CommonEvent_Video_Onclick"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Web_Onclick.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Web_Onclick.java deleted file mode 100644 index 88a9f48ed4..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonEvent_Web_Onclick.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonEvent_Web_Onclick extends TestFlow { - public AG_CommonEvent_Web_Onclick() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonEvent"); - testMap.put("testChildCaseInit", "AG_CommonEvent_Web_Onclick"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_A_Background_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_A_Background_Color.java deleted file mode 100644 index 5d3d6f330b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_A_Background_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_A_Background_Color extends TestFlow { - public AG_CommonStyle_A_Background_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_A_Background_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_CommonStyle_A_Background_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_CommonStyle_A_Background_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_A_Widthandheight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_A_Widthandheight.java deleted file mode 100644 index 616a4a1e09..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_A_Widthandheight.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_A_Widthandheight extends TestFlow { - public AG_CommonStyle_A_Widthandheight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_A_Widthandheight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_A_Widthandheight_01_200"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_A_Widthandheight_02_400"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_A_Widthandheight_03_200"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_A_Widthandheight_04_400"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Div_Background_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Div_Background_Color.java deleted file mode 100644 index b652e74485..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Div_Background_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Div_Background_Color extends TestFlow { - public AG_CommonStyle_Div_Background_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Div_Background_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_CommonStyle_Div_Background_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_CommonStyle_Div_Background_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Div_Widthandheight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Div_Widthandheight.java deleted file mode 100644 index 89b86b9af1..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Div_Widthandheight.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Div_Widthandheight extends TestFlow { - public AG_CommonStyle_Div_Widthandheight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Div_Widthandheight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Div_Widthandheight_01_200"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Div_Widthandheight_02_400"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Div_Widthandheight_03_200"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Div_Widthandheight_04_400"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Image_Background_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Image_Background_Color.java deleted file mode 100644 index fcf5c75b80..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Image_Background_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Image_Background_Color extends TestFlow { - public AG_CommonStyle_Image_Background_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Image_Background_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_CommonStyle_Image_Background_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_CommonStyle_Image_Background_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Image_Widthandheight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Image_Widthandheight.java deleted file mode 100644 index d350152c26..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Image_Widthandheight.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Image_Widthandheight extends TestFlow { - public AG_CommonStyle_Image_Widthandheight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Image_Widthandheight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Image_Widthandheight_01_200"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Image_Widthandheight_02_400"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Image_Widthandheight_03_200"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Image_Widthandheight_04_400"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Input_Background_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Input_Background_Color.java deleted file mode 100644 index 6721685c6f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Input_Background_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Input_Background_Color extends TestFlow { - public AG_CommonStyle_Input_Background_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Input_Background_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_CommonStyle_Input_Background_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_CommonStyle_Input_Background_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Input_Widthandheight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Input_Widthandheight.java deleted file mode 100644 index e0af346560..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Input_Widthandheight.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Input_Widthandheight extends TestFlow { - public AG_CommonStyle_Input_Widthandheight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Input_Widthandheight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Input_Widthandheight_01_200"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Input_Widthandheight_02_400"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Input_Widthandheight_03_200"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Input_Widthandheight_04_400"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Switch_Background_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Switch_Background_Color.java deleted file mode 100644 index 3394336e11..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Switch_Background_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Switch_Background_Color extends TestFlow { - public AG_CommonStyle_Switch_Background_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Switch_Background_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_CommonStyle_Switch_Background_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_CommonStyle_Switch_Background_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Switch_Widthandheight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Switch_Widthandheight.java deleted file mode 100644 index abc76f6376..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Switch_Widthandheight.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Switch_Widthandheight extends TestFlow { - public AG_CommonStyle_Switch_Widthandheight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Switch_Widthandheight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Switch_Widthandheight_01_200"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Switch_Widthandheight_02_400"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Switch_Widthandheight_03_200"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Switch_Widthandheight_04_400"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Text_Background_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Text_Background_Color.java deleted file mode 100644 index 46fc85eb00..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Text_Background_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Text_Background_Color extends TestFlow { - public AG_CommonStyle_Text_Background_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Text_Background_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_CommonStyle_Text_Background_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_CommonStyle_Text_Background_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Text_Widthandheight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Text_Widthandheight.java deleted file mode 100644 index e35c9a6cab..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Text_Widthandheight.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Text_Widthandheight extends TestFlow { - public AG_CommonStyle_Text_Widthandheight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Text_Widthandheight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Text_Widthandheight_01_200"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Text_Widthandheight_02_400"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Text_Widthandheight_03_200"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Text_Widthandheight_04_400"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Video_Background_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Video_Background_Color.java deleted file mode 100644 index 8f03948831..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Video_Background_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Video_Background_Color extends TestFlow { - public AG_CommonStyle_Video_Background_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Video_Background_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_CommonStyle_Video_Background_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_CommonStyle_Video_Background_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Video_Widthandheight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Video_Widthandheight.java deleted file mode 100644 index 97a8df81ad..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Video_Widthandheight.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Video_Widthandheight extends TestFlow { - public AG_CommonStyle_Video_Widthandheight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Video_Widthandheight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Video_Widthandheight_01_200"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Video_Widthandheight_02_400"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Video_Widthandheight_03_200"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Video_Widthandheight_04_400"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Web_Background_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Web_Background_Color.java deleted file mode 100644 index 8d3c7de230..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Web_Background_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Web_Background_Color extends TestFlow { - public AG_CommonStyle_Web_Background_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Web_Background_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_CommonStyle_Web_Background_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#00FFFF"); - put("screenshot", "AG_CommonStyle_Web_Background_Color_02_#00FFFF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Web_Widthandheight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Web_Widthandheight.java deleted file mode 100644 index fde6ac9dcf..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_CommonStyle_Web_Widthandheight.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_CommonStyle_Web_Widthandheight extends TestFlow { - public AG_CommonStyle_Web_Widthandheight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_CommonStyle"); - testMap.put("testChildCaseInit", "AG_CommonStyle_Web_Widthandheight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Web_Widthandheight_01_200"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Web_Widthandheight_02_400"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "200"); - put("screenshot", "AG_CommonStyle_Web_Widthandheight_03_200"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "400"); - put("screenshot", "AG_CommonStyle_Web_Widthandheight_04_400"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Click.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Click.java deleted file mode 100644 index 91ff9aeadf..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Click.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Gesture_Div_Click extends TestFlow { - public AG_Gesture_Div_Click() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Gesture"); - testMap.put("testChildCaseInit", "AG_Gesture_Div_Click"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Conflict.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Conflict.java deleted file mode 100644 index 813c99c947..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Conflict.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Gesture_Div_Conflict extends TestFlow { - public AG_Gesture_Div_Conflict() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Gesture"); - testMap.put("testChildCaseInit", "AG_Gesture_Div_Conflict"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Longpress.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Longpress.java deleted file mode 100644 index 5845b09928..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Longpress.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Gesture_Div_Longpress extends TestFlow { - public AG_Gesture_Div_Longpress() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Gesture"); - testMap.put("testChildCaseInit", "AG_Gesture_Div_Longpress"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Pan.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Pan.java deleted file mode 100644 index 6a0229d95e..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Pan.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Gesture_Div_Pan extends TestFlow { - public AG_Gesture_Div_Pan() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Gesture"); - testMap.put("testChildCaseInit", "AG_Gesture_Div_Pan"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Swipe.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Swipe.java deleted file mode 100644 index c24c85dbb2..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Swipe.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Gesture_Div_Swipe extends TestFlow { - public AG_Gesture_Div_Swipe() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Gesture"); - testMap.put("testChildCaseInit", "AG_Gesture_Div_Swipe"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Touch.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Touch.java deleted file mode 100644 index 7e653867ba..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Gesture_Div_Touch.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Gesture_Div_Touch extends TestFlow { - public AG_Gesture_Div_Touch() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Gesture"); - testMap.put("testChildCaseInit", "AG_Gesture_Div_Touch"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Onload.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Onload.java deleted file mode 100644 index 63dd33ad66..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Onload.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Image_Image_Onload extends TestFlow { - public AG_Image_Image_Onload() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Image"); - testMap.put("testChildCaseInit", "AG_Image_Image_Onload"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Resize.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Resize.java deleted file mode 100644 index c379554b85..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Resize.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Image_Image_Resize extends TestFlow { - public AG_Image_Image_Resize() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Image"); - testMap.put("testChildCaseInit", "AG_Image_Image_Resize"); - testMap.put("step1",new TreeMap(){ - { - put("click", "stretch"); - put("screenshot", "AG_Image_Image_Resize_01_stretch"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "cover"); - put("screenshot", "AG_Image_Image_Resize_02_cover"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "contain"); - put("screenshot", "AG_Image_Image_Resize_03_contain"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Src.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Src.java deleted file mode 100644 index d4dce32d55..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Image_Image_Src.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Image_Image_Src extends TestFlow { - public AG_Image_Image_Src() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Image"); - testMap.put("testChildCaseInit", "AG_Image_Image_Src"); - testMap.put("step1",new TreeMap(){ - { - put("click", "src0"); - put("screenshot", "AG_Image_Image_Src_01_src0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "src1"); - put("screenshot", "AG_Image_Image_Src_02_src1"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Autofocus.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Autofocus.java deleted file mode 100644 index e560232528..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Autofocus.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Autofocus extends TestFlow { - public AG_Input_Input_Autofocus() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Autofocus"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_Input_Input_Autofocus_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_Input_Input_Autofocus_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Color.java deleted file mode 100644 index a1a68816f8..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Color extends TestFlow { - public AG_Input_Input_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Input_Input_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#FF00FF"); - put("screenshot", "AG_Input_Input_Color_02_#FF00FF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Disabled.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Disabled.java deleted file mode 100644 index 11ae61f99c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Disabled.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Disabled extends TestFlow { - public AG_Input_Input_Disabled() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Disabled"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_Input_Input_Disabled_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_Input_Input_Disabled_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Event.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Event.java deleted file mode 100644 index 7e90bb86f3..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Event.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Event extends TestFlow { - public AG_Input_Input_Event() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Event"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Size.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Size.java deleted file mode 100644 index 7feb07dafc..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Size.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Font_Size extends TestFlow { - public AG_Input_Input_Font_Size() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Font_Size"); - testMap.put("step1",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Input_Input_Font_Size_01_20"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "40"); - put("screenshot", "AG_Input_Input_Font_Size_02_40"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Style.java deleted file mode 100644 index bdb4f70535..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Style.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Font_Style extends TestFlow { - public AG_Input_Input_Font_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Font_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "normal"); - put("screenshot", "AG_Input_Input_Font_Style_01_normal"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "italic"); - put("screenshot", "AG_Input_Input_Font_Style_02_italic"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Weight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Weight.java deleted file mode 100644 index fab6656a82..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Font_Weight.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Font_Weight extends TestFlow { - public AG_Input_Input_Font_Weight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Font_Weight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "normal"); - put("screenshot", "AG_Input_Input_Font_Weight_01_normal"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "bold"); - put("screenshot", "AG_Input_Input_Font_Weight_02_bold"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Placeholder.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Placeholder.java deleted file mode 100644 index 20cdca8d06..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Placeholder.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Placeholder extends TestFlow { - public AG_Input_Input_Placeholder() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Placeholder"); - testMap.put("step1",new TreeMap(){ - { - put("click", ""); - put("screenshot", "AG_Input_Input_Placeholder_01_"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "placeholder"); - put("screenshot", "AG_Input_Input_Placeholder_02_placeholder"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Placeholder_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Placeholder_Color.java deleted file mode 100644 index 935edbdd9b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Placeholder_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Placeholder_Color extends TestFlow { - public AG_Input_Input_Placeholder_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Placeholder_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Input_Input_Placeholder_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#FF00FF"); - put("screenshot", "AG_Input_Input_Placeholder_Color_02_#FF00FF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Text_Align.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Text_Align.java deleted file mode 100644 index dafed3bff5..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Text_Align.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Text_Align extends TestFlow { - public AG_Input_Input_Text_Align() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Text_Align"); - testMap.put("step1",new TreeMap(){ - { - put("click", "left"); - put("screenshot", "AG_Input_Input_Text_Align_01_left"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "center"); - put("screenshot", "AG_Input_Input_Text_Align_02_center"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "right"); - put("screenshot", "AG_Input_Input_Text_Align_03_right"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Type.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Type.java deleted file mode 100644 index 3057b23b36..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Type.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Type extends TestFlow { - public AG_Input_Input_Type() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Type"); - testMap.put("step1",new TreeMap(){ - { - put("click", "text"); - put("screenshot", "AG_Input_Input_Type_01_text"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "password"); - put("screenshot", "AG_Input_Input_Type_02_password"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "tel"); - put("screenshot", "AG_Input_Input_Type_03_tel"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "email"); - put("screenshot", "AG_Input_Input_Type_04_email"); - } - }); - testMap.put("step5",new TreeMap(){ - { - put("click", "url"); - put("screenshot", "AG_Input_Input_Type_05_url"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Value.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Value.java deleted file mode 100644 index 5c5aee129c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Input_Input_Value.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Input_Input_Value extends TestFlow { - public AG_Input_Input_Value() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Input"); - testMap.put("testChildCaseInit", "AG_Input_Input_Value"); - testMap.put("step1",new TreeMap(){ - { - put("click", "AAA"); - put("screenshot", "AG_Input_Input_Value_01_AAA"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "BBB"); - put("screenshot", "AG_Input_Input_Value_02_BBB"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", ""); - put("screenshot", "AG_Input_Input_Value_03_"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin.java deleted file mode 100644 index 1dd5f47d7f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_A_Margin extends TestFlow { - public AG_Margin_A_Margin() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_A_Margin"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_A_Margin_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_A_Margin_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Bottom.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Bottom.java deleted file mode 100644 index a06c92a042..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Bottom.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_A_Margin_Bottom extends TestFlow { - public AG_Margin_A_Margin_Bottom() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_A_Margin_Bottom"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_A_Margin_Bottom_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_A_Margin_Bottom_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Left.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Left.java deleted file mode 100644 index 869115ed6c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Left.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_A_Margin_Left extends TestFlow { - public AG_Margin_A_Margin_Left() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_A_Margin_Left"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_A_Margin_Left_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_A_Margin_Left_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Right.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Right.java deleted file mode 100644 index f2b9ac050c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Right.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_A_Margin_Right extends TestFlow { - public AG_Margin_A_Margin_Right() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_A_Margin_Right"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_A_Margin_Right_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_A_Margin_Right_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Top.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Top.java deleted file mode 100644 index 2e86408e38..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_A_Margin_Top.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_A_Margin_Top extends TestFlow { - public AG_Margin_A_Margin_Top() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_A_Margin_Top"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_A_Margin_Top_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_A_Margin_Top_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin.java deleted file mode 100644 index 8168b0766a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Div_Margin extends TestFlow { - public AG_Margin_Div_Margin() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Div_Margin"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Div_Margin_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Div_Margin_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Bottom.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Bottom.java deleted file mode 100644 index 37341c24b2..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Bottom.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Div_Margin_Bottom extends TestFlow { - public AG_Margin_Div_Margin_Bottom() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Div_Margin_Bottom"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Div_Margin_Bottom_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Div_Margin_Bottom_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Left.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Left.java deleted file mode 100644 index 035ffb1a7b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Left.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Div_Margin_Left extends TestFlow { - public AG_Margin_Div_Margin_Left() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Div_Margin_Left"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Div_Margin_Left_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Div_Margin_Left_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Right.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Right.java deleted file mode 100644 index c4e25a8cf6..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Right.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Div_Margin_Right extends TestFlow { - public AG_Margin_Div_Margin_Right() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Div_Margin_Right"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Div_Margin_Right_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Div_Margin_Right_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Top.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Top.java deleted file mode 100644 index acc20e559a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Div_Margin_Top.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Div_Margin_Top extends TestFlow { - public AG_Margin_Div_Margin_Top() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Div_Margin_Top"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Div_Margin_Top_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Div_Margin_Top_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin.java deleted file mode 100644 index 2f49cf5d43..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Image_Margin extends TestFlow { - public AG_Margin_Image_Margin() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Image_Margin"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Image_Margin_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Image_Margin_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Bottom.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Bottom.java deleted file mode 100644 index 6455a29f7e..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Bottom.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Image_Margin_Bottom extends TestFlow { - public AG_Margin_Image_Margin_Bottom() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Image_Margin_Bottom"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Image_Margin_Bottom_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Image_Margin_Bottom_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Left.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Left.java deleted file mode 100644 index 7e133d6d7f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Left.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Image_Margin_Left extends TestFlow { - public AG_Margin_Image_Margin_Left() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Image_Margin_Left"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Image_Margin_Left_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Image_Margin_Left_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Right.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Right.java deleted file mode 100644 index 0f46ff0ee3..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Right.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Image_Margin_Right extends TestFlow { - public AG_Margin_Image_Margin_Right() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Image_Margin_Right"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Image_Margin_Right_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Image_Margin_Right_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Top.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Top.java deleted file mode 100644 index d570690cec..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Image_Margin_Top.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Image_Margin_Top extends TestFlow { - public AG_Margin_Image_Margin_Top() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Image_Margin_Top"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Image_Margin_Top_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Image_Margin_Top_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin.java deleted file mode 100644 index 5613ec235a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Input_Margin extends TestFlow { - public AG_Margin_Input_Margin() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Input_Margin"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Input_Margin_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Input_Margin_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Bottom.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Bottom.java deleted file mode 100644 index 5314ed3053..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Bottom.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Input_Margin_Bottom extends TestFlow { - public AG_Margin_Input_Margin_Bottom() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Input_Margin_Bottom"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Input_Margin_Bottom_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Input_Margin_Bottom_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Left.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Left.java deleted file mode 100644 index 4d836c573c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Left.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Input_Margin_Left extends TestFlow { - public AG_Margin_Input_Margin_Left() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Input_Margin_Left"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Input_Margin_Left_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Input_Margin_Left_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Right.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Right.java deleted file mode 100644 index 10f4406b51..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Right.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Input_Margin_Right extends TestFlow { - public AG_Margin_Input_Margin_Right() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Input_Margin_Right"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Input_Margin_Right_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Input_Margin_Right_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Top.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Top.java deleted file mode 100644 index 2e80986ad1..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Input_Margin_Top.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Input_Margin_Top extends TestFlow { - public AG_Margin_Input_Margin_Top() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Input_Margin_Top"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Input_Margin_Top_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Input_Margin_Top_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin.java deleted file mode 100644 index 4c4216f1a1..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Switch_Margin extends TestFlow { - public AG_Margin_Switch_Margin() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Switch_Margin"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Switch_Margin_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Switch_Margin_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Bottom.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Bottom.java deleted file mode 100644 index f5b1bf035c..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Bottom.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Switch_Margin_Bottom extends TestFlow { - public AG_Margin_Switch_Margin_Bottom() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Switch_Margin_Bottom"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Switch_Margin_Bottom_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Switch_Margin_Bottom_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Left.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Left.java deleted file mode 100644 index 7170d3fc8f..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Left.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Switch_Margin_Left extends TestFlow { - public AG_Margin_Switch_Margin_Left() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Switch_Margin_Left"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Switch_Margin_Left_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Switch_Margin_Left_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Right.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Right.java deleted file mode 100644 index bb084f47ee..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Right.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Switch_Margin_Right extends TestFlow { - public AG_Margin_Switch_Margin_Right() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Switch_Margin_Right"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Switch_Margin_Right_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Switch_Margin_Right_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Top.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Top.java deleted file mode 100644 index c62f248d27..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Switch_Margin_Top.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Switch_Margin_Top extends TestFlow { - public AG_Margin_Switch_Margin_Top() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Switch_Margin_Top"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Switch_Margin_Top_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Switch_Margin_Top_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin.java deleted file mode 100644 index 88ba7731d2..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Text_Margin extends TestFlow { - public AG_Margin_Text_Margin() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Text_Margin"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Text_Margin_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Text_Margin_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Bottom.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Bottom.java deleted file mode 100644 index 0ee08b8698..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Bottom.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Text_Margin_Bottom extends TestFlow { - public AG_Margin_Text_Margin_Bottom() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Text_Margin_Bottom"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Text_Margin_Bottom_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Text_Margin_Bottom_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Left.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Left.java deleted file mode 100644 index 8b17f82140..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Left.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Text_Margin_Left extends TestFlow { - public AG_Margin_Text_Margin_Left() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Text_Margin_Left"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Text_Margin_Left_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Text_Margin_Left_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Right.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Right.java deleted file mode 100644 index 56ef575a4d..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Right.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Text_Margin_Right extends TestFlow { - public AG_Margin_Text_Margin_Right() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Text_Margin_Right"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Text_Margin_Right_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Text_Margin_Right_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Top.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Top.java deleted file mode 100644 index 49e8ff4695..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Text_Margin_Top.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Text_Margin_Top extends TestFlow { - public AG_Margin_Text_Margin_Top() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Text_Margin_Top"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Text_Margin_Top_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Text_Margin_Top_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin.java deleted file mode 100644 index 5a2b07d824..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Video_Margin extends TestFlow { - public AG_Margin_Video_Margin() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Video_Margin"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Video_Margin_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Video_Margin_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Bottom.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Bottom.java deleted file mode 100644 index d229ce5796..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Bottom.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Video_Margin_Bottom extends TestFlow { - public AG_Margin_Video_Margin_Bottom() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Video_Margin_Bottom"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Video_Margin_Bottom_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Video_Margin_Bottom_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Left.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Left.java deleted file mode 100644 index bf75054229..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Left.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Video_Margin_Left extends TestFlow { - public AG_Margin_Video_Margin_Left() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Video_Margin_Left"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Video_Margin_Left_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Video_Margin_Left_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Right.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Right.java deleted file mode 100644 index 66370698ad..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Right.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Video_Margin_Right extends TestFlow { - public AG_Margin_Video_Margin_Right() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Video_Margin_Right"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Video_Margin_Right_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Video_Margin_Right_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Top.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Top.java deleted file mode 100644 index 9922efa911..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Video_Margin_Top.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Video_Margin_Top extends TestFlow { - public AG_Margin_Video_Margin_Top() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Video_Margin_Top"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Video_Margin_Top_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Video_Margin_Top_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin.java deleted file mode 100644 index a6e2f534cd..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Web_Margin extends TestFlow { - public AG_Margin_Web_Margin() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Web_Margin"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Web_Margin_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Web_Margin_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Bottom.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Bottom.java deleted file mode 100644 index d06b17ace1..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Bottom.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Web_Margin_Bottom extends TestFlow { - public AG_Margin_Web_Margin_Bottom() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Web_Margin_Bottom"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Web_Margin_Bottom_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Web_Margin_Bottom_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Left.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Left.java deleted file mode 100644 index 870ca4c4ef..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Left.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Web_Margin_Left extends TestFlow { - public AG_Margin_Web_Margin_Left() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Web_Margin_Left"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Web_Margin_Left_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Web_Margin_Left_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Right.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Right.java deleted file mode 100644 index 7b5e6eb303..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Right.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Web_Margin_Right extends TestFlow { - public AG_Margin_Web_Margin_Right() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Web_Margin_Right"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Web_Margin_Right_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Web_Margin_Right_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Top.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Top.java deleted file mode 100644 index ee7057184a..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Margin_Web_Margin_Top.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Margin_Web_Margin_Top extends TestFlow { - public AG_Margin_Web_Margin_Top() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Margin"); - testMap.put("testChildCaseInit", "AG_Margin_Web_Margin_Top"); - testMap.put("step1",new TreeMap(){ - { - put("click", "10"); - put("screenshot", "AG_Margin_Web_Margin_Top_01_10"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Margin_Web_Margin_Top_02_20"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Switch_Switch_Checked.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Switch_Switch_Checked.java deleted file mode 100644 index 1747ef1802..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Switch_Switch_Checked.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Switch_Switch_Checked extends TestFlow { - public AG_Switch_Switch_Checked() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Switch"); - testMap.put("testChildCaseInit", "AG_Switch_Switch_Checked"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_Switch_Switch_Checked_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_Switch_Switch_Checked_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Switch_Switch_Onchange.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Switch_Switch_Onchange.java deleted file mode 100644 index 2dac8595af..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Switch_Switch_Onchange.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Switch_Switch_Onchange extends TestFlow { - public AG_Switch_Switch_Onchange() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Switch"); - testMap.put("testChildCaseInit", "AG_Switch_Switch_Onchange"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Color.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Color.java deleted file mode 100644 index c775a76774..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Color.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Color extends TestFlow { - public AG_Text_Text_Color() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Color"); - testMap.put("step1",new TreeMap(){ - { - put("click", "#FF0000"); - put("screenshot", "AG_Text_Text_Color_01_#FF0000"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "#FF00FF"); - put("screenshot", "AG_Text_Text_Color_02_#FF00FF"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Size.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Size.java deleted file mode 100644 index ad07f3d046..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Size.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Font_Size extends TestFlow { - public AG_Text_Text_Font_Size() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Font_Size"); - testMap.put("step1",new TreeMap(){ - { - put("click", "20"); - put("screenshot", "AG_Text_Text_Font_Size_01_20"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "40"); - put("screenshot", "AG_Text_Text_Font_Size_02_40"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Style.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Style.java deleted file mode 100644 index 0f169150be..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Style.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Font_Style extends TestFlow { - public AG_Text_Text_Font_Style() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Font_Style"); - testMap.put("step1",new TreeMap(){ - { - put("click", "normal"); - put("screenshot", "AG_Text_Text_Font_Style_01_normal"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "italic"); - put("screenshot", "AG_Text_Text_Font_Style_02_italic"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Weight.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Weight.java deleted file mode 100644 index 083e8312f0..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Font_Weight.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Font_Weight extends TestFlow { - public AG_Text_Text_Font_Weight() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Font_Weight"); - testMap.put("step1",new TreeMap(){ - { - put("click", "normal"); - put("screenshot", "AG_Text_Text_Font_Weight_01_normal"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "bold"); - put("screenshot", "AG_Text_Text_Font_Weight_02_bold"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Line_Height.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Line_Height.java deleted file mode 100644 index dec09a7199..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Line_Height.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Line_Height extends TestFlow { - public AG_Text_Text_Line_Height() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Line_Height"); - testMap.put("step1",new TreeMap(){ - { - put("click", "-25"); - put("screenshot", "AG_Text_Text_Line_Height_01_-25"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Text_Text_Line_Height_02_0"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "25"); - put("screenshot", "AG_Text_Text_Line_Height_03_25"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "50"); - put("screenshot", "AG_Text_Text_Line_Height_04_50"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Align.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Align.java deleted file mode 100644 index 7a590fb6de..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Align.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Text_Align extends TestFlow { - public AG_Text_Text_Text_Align() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Text_Align"); - testMap.put("step1",new TreeMap(){ - { - put("click", "left"); - put("screenshot", "AG_Text_Text_Text_Align_01_left"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "center"); - put("screenshot", "AG_Text_Text_Text_Align_02_center"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "right"); - put("screenshot", "AG_Text_Text_Text_Align_03_right"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Decoration.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Decoration.java deleted file mode 100644 index 06074e3f6b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Decoration.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Text_Decoration extends TestFlow { - public AG_Text_Text_Text_Decoration() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Text_Decoration"); - testMap.put("step1",new TreeMap(){ - { - put("click", "none"); - put("screenshot", "AG_Text_Text_Text_Decoration_01_none"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "underline"); - put("screenshot", "AG_Text_Text_Text_Decoration_02_underline"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "line-through"); - put("screenshot", "AG_Text_Text_Text_Decoration_03_line-through"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Overflow.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Overflow.java deleted file mode 100644 index 132e3bd88b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Text_Overflow.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Text_Overflow extends TestFlow { - public AG_Text_Text_Text_Overflow() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Text_Overflow"); - testMap.put("step1",new TreeMap(){ - { - put("click", "clip"); - put("screenshot", "AG_Text_Text_Text_Overflow_01_clip"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "ellipsis"); - put("screenshot", "AG_Text_Text_Text_Overflow_02_ellipsis"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", "0"); - put("screenshot", "AG_Text_Text_Text_Overflow_03_0"); - } - }); - testMap.put("step4",new TreeMap(){ - { - put("click", "1"); - put("screenshot", "AG_Text_Text_Text_Overflow_04_1"); - } - }); - testMap.put("step5",new TreeMap(){ - { - put("click", "2"); - put("screenshot", "AG_Text_Text_Text_Overflow_05_2"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Value.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Value.java deleted file mode 100644 index 975efdb559..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Text_Text_Value.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Text_Text_Value extends TestFlow { - public AG_Text_Text_Value() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Text"); - testMap.put("testChildCaseInit", "AG_Text_Text_Value"); - testMap.put("step1",new TreeMap(){ - { - put("click", "AAA"); - put("screenshot", "AG_Text_Text_Value_01_AAA"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "BBB"); - put("screenshot", "AG_Text_Text_Value_02_BBB"); - } - }); - testMap.put("step3",new TreeMap(){ - { - put("click", ""); - put("screenshot", "AG_Text_Text_Value_03_"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Auto_Play.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Auto_Play.java deleted file mode 100644 index fdd77fe423..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Auto_Play.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Video_Video_Auto_Play extends TestFlow { - public AG_Video_Video_Auto_Play() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Video"); - testMap.put("testChildCaseInit", "AG_Video_Video_Auto_Play"); - testMap.put("step1",new TreeMap(){ - { - put("click", "true"); - put("screenshot", "AG_Video_Video_Auto_Play_01_true"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "false"); - put("screenshot", "AG_Video_Video_Auto_Play_02_false"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Event.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Event.java deleted file mode 100644 index 134ed0f286..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Event.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Video_Video_Event extends TestFlow { - public AG_Video_Video_Event() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Video"); - testMap.put("testChildCaseInit", "AG_Video_Video_Event"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Play_Status.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Play_Status.java deleted file mode 100644 index b760f53b72..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Play_Status.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Video_Video_Play_Status extends TestFlow { - public AG_Video_Video_Play_Status() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Video"); - testMap.put("testChildCaseInit", "AG_Video_Video_Play_Status"); - testMap.put("step1",new TreeMap(){ - { - put("click", "play"); - put("screenshot", "AG_Video_Video_Play_Status_01_play"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "pause"); - put("screenshot", "AG_Video_Video_Play_Status_02_pause"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Src.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Src.java deleted file mode 100644 index fd59a74deb..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Video_Video_Src.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Video_Video_Src extends TestFlow { - public AG_Video_Video_Src() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Video"); - testMap.put("testChildCaseInit", "AG_Video_Video_Src"); - testMap.put("step1",new TreeMap(){ - { - put("click", "src0"); - put("screenshot", "AG_Video_Video_Src_01_src0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "src1"); - put("screenshot", "AG_Video_Video_Src_02_src1"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Web_Web_Event.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Web_Web_Event.java deleted file mode 100644 index 02dc3571a4..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Web_Web_Event.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Web_Web_Event extends TestFlow { - public AG_Web_Web_Event() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Web"); - testMap.put("testChildCaseInit", "AG_Web_Web_Event"); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Web_Web_Src.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Web_Web_Src.java deleted file mode 100644 index c3e1fa3fec..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AG/AG_Web_Web_Src.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AG; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.util.TestFlow; -import java.util.TreeMap; -import org.junit.Before; -import org.junit.Test; - -public class AG_Web_Web_Src extends TestFlow { - public AG_Web_Web_Src() { - super(WXPageActivity.class); - } - - @Before - public void setUp() throws InterruptedException { - super.setUp(); - TreeMap testMap = new TreeMap(); - testMap.put("testComponet", "AG_Web"); - testMap.put("testChildCaseInit", "AG_Web_Web_Src"); - testMap.put("step1",new TreeMap(){ - { - put("click", "src0"); - put("screenshot", "AG_Web_Web_Src_01_src0"); - } - }); - testMap.put("step2",new TreeMap(){ - { - put("click", "src1"); - put("screenshot", "AG_Web_Web_Src_02_src1"); - } - }); - super.setTestMap(testMap); - } - - @Test - public void doTest(){ - super.testByTestMap(); - } - -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AHref/WeexUiTestCaseTCAHrefEvent.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AHref/WeexUiTestCaseTCAHrefEvent.java deleted file mode 100644 index aa4853b7fe..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/uitest/TC_AHref/WeexUiTestCaseTCAHrefEvent.java +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.uitest.TC_AHref; - -import android.app.Activity; -import android.app.Application; -import android.app.Instrumentation; -import android.content.Intent; -import android.test.ActivityInstrumentationTestCase2; -import android.test.InstrumentationTestCase; -import android.test.TouchUtils; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.EditText; -import android.widget.FrameLayout; - -import com.alibaba.weex.R; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.WeappJsBaseTestCase; -import com.alibaba.weex.constants.Constants; -import com.alibaba.weex.util.ScreenShot; -import com.alibaba.weex.util.ViewUtil; -import com.taobao.weex.ui.component.WXText; -import com.taobao.weex.ui.view.WXTextView; - -import java.io.IOException; -import java.util.ArrayList; - -/** - * Created by admin on 16/3/23. - */ -public class WeexUiTestCaseTCAHrefEvent extends ActivityInstrumentationTestCase2 { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public boolean targetComponetNotFound = false; - - public WeexUiTestCaseTCAHrefEvent() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG, "activity1=" + waTestPageActivity.toString()); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - setUpToFindComponet("TC_", this); - - Thread.sleep(3000); - } - - public void testAherf(){ - - findTargetComponetIfNotFound("TC_", this); - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_A")){ - Log.e(TAG, "TC_AHref find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_A_Event"); - Log.e(TAG, "TC_AHref_Event size== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_AHref_Event clcik!"); - } - }); - - sleep(3000); - Log.e(TAG, "TC_AHref_Event_01_init snap!"); - screenShot("TC_AHref_Event_01_init"); - sleep(3000); - } - - setActivity(WXPageActivity.wxPageActivityInstance); - activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView11 = new ArrayList(); - sleep(3000); - - inputListView11 = ViewUtil.getAllChildViews(myGroup); - - for(View view :inputListView11){ - if(view instanceof WXTextView){ - if(((WXTextView) view).getText().toString().contains("Hello Weex")){ - final FrameLayout aView = (FrameLayout)view.getParent(); - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - aView.requestFocus(); - aView.performClick(); - Log.e(TAG, "TC_AHref_Event_02_afterClick clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_AHref_Event_02_afterClick snap!"); - screenShot("TC_AHref_Event_02_afterClick"); - sleep(2000); - break; - } - } - } - } - else{ - targetComponetNotFound = true; - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - private boolean targetComponetNotFound; - - public WeexUiTestCaseTCAHrefStyle() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG, "activity1=" + waTestPageActivity.toString()); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - setUpToFindComponet("TC_", this); - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testAherfStyle(){ - - findTargetComponetIfNotFound("TC_", this); - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_A")){ - Log.e(TAG, "TC_AHref find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_A_Style"); - Log.e(TAG, "TC_AHref_Style size== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_AHref_Style clcik!"); - } - }); - - sleep(3000); - Log.e(TAG, "TC_AHref_Style snap!"); - screenShot("TC_AHref_Style"); - sleep(3000); - } - } - else{ - targetComponetNotFound = true; - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - private boolean targetComponetNotFound; - - public WeexUiTestCaseTCAHrefUpdate() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG, "activity1=" + waTestPageActivity.toString()); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - setUpToFindComponet("TC_", this); - Thread.sleep(2000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testAherf(){ - findTargetComponetIfNotFound("TC_", this); - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_A")){ - Log.e(TAG, "TC_AHref find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_A_Update"); - Log.e(TAG, "TC_AHref_Update size== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_AHref_Update clcik!"); - } - }); - - sleep(3000); - Log.e(TAG, "TC_AHref_Update_01_init snap!"); - screenShot("TC_AHref_Update_01_init"); - sleep(3000); - } - - setActivity(WXPageActivity.wxPageActivityInstance); - activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView11 = new ArrayList(); - sleep(3000); - - inputListView11 = ViewUtil.getAllChildViews(myGroup); - - String aherfText = ""; - for(View view :inputListView11){ - if(view instanceof WXTextView){ - aherfText = ((WXTextView) view).getText().toString(); - if(aherfText.contains("Change href")){ - final FrameLayout aView = (FrameLayout)view.getParent(); - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - aView.requestFocus(); - aView.performClick(); - Log.e(TAG, "TC_AHref_Update_02_changeHref clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_AHref_Update_02_changeHref snap!"); - screenShot("TC_AHref_Update_02_changeHref"); - sleep(2000); - } - - else if(aherfText.contains("Change width and height")){ - final FrameLayout aView = (FrameLayout)view.getParent(); - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - aView.requestFocus(); - aView.performClick(); - Log.e(TAG, "TC_AHref_Update_03_changeWH clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_AHref_Update_03_changeWH snap!"); - screenShot("TC_AHref_Update_03_changeWH"); - sleep(2000); - } - } - } - } - else{ - targetComponetNotFound = true; - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcColorType() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - addAllTargetView("TC_"); - sleep(1000); - - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testColorType(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Color")){ - Log.e(TAG, "TC_Color find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - Log.e(TAG, "TC_Color click!!"); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Color_Type"); - -// myGroup.findViewsWithText(inputListView, "TC_Color_Type", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Color_Type size== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Color_Type clcik!"); - - } - }); - - sleep(3000); - Log.e(TAG, "TC_Color_Type snap!"); - screenShot("TC_Color_Type"); - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - sleep(2000); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcColorUpdate() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - Thread.sleep(3000); - addAllTargetView("TC_"); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testColorUpdateType(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Color")){ - Log.e(TAG, "TC_Color find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); -// myGroup.findViewsWithText(inputListView, "TC_Color_Update", View.FIND_VIEWS_WITH_TEXT); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Color_Update"); - - Log.e(TAG, "TC_Color_Update size== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Color_Type clcik!"); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - ViewUtil viewContor = new ViewUtil(); - - sleep(1000); - Log.e(TAG, "TC_Color_Update_01_beforeClick snap!"); - screenShot("TC_Color_Update_01_beforeClick"); - - // 开始点击 - - ViewGroup vg = (ViewGroup)getActivity().findViewById(R.id.container); - List vgChildView = viewContor.getAllChildViews(vg); - Log.e(TAG, vgChildView.size() + " vgChildView do performClick !"); - for(final View child : vgChildView){ - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - child.requestFocus(); - child.performClick(); - Log.e(TAG, child.getClass().toString() + " do performClick !"); - } - }); - - sleep(1000); - } - Log.e(TAG, "TC_Color_Update_02_afterClick snap!"); - screenShot("TC_Color_Update_02_afterClick"); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i{ - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcDowngradeAppVFalse() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - - public void testDowngrade(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Downgrade")){ - Log.e(TAG, "TC_Downgrade find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Downgrade_appV_False"); - - Log.e(TAG, "TC_Downgrade_appV_False== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Downgrade_appV_False clcik!"); - } - }); - - sleep(3000); - screenShot("TC_Downgrade_appV_False"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_appV_False"); - Log.e(TAG, "TC_Downgrade_appV_False snap!"); - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WXPageActivity waTestPageActivity; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcDowngradeAppVTrue() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testDowngrade(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Downgrade")){ - Log.e(TAG, "TC_Downgrade find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Downgrade_appV_True"); - -// myGroup.findViewsWithText(inputListView, "TC_Downgrade_appV_True", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Downgrade_appV_True== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Downgrade_appV_True clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Downgrade_appV_True snap!"); -// screenShot("TC_Downgrade_appV_True"); - ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_appV_True"); - - sleep(2000); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WXPageActivity waTestPageActivity; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcDowngradeDevMFalse() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testDowngrade(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Downgrade")){ - Log.e(TAG, "TC_Downgrade find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Downgrade_devM_False"); - -// myGroup.findViewsWithText(inputListView, "TC_Downgrade_devM_False", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Downgrade_devM_False== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Downgrade_devM_False clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Downgrade_devM_False snap!"); - screenShot("TC_Downgrade_devM_False"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_devM_False"); - - sleep(2000); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WXPageActivity waTestPageActivity; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcDowngradeDevMTrue() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testDowngrade(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Downgrade")){ - Log.e(TAG, "TC_Downgrade find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Downgrade_devM_True"); -// myGroup.findViewsWithText(inputListView, "TC_Downgrade_devM_True", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Downgrade_devM_True== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Downgrade_devM_True clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Downgrade_devM_True snap!"); -// screenShot("TC_Downgrade_appV_True"); - ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_devM_True"); - - sleep(2000); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WXPageActivity waTestPageActivity; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcDowngradeOSVFalse() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testDowngrade(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Downgrade")){ - Log.e(TAG, "TC_Downgrade find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Downgrade_osV_False"); -// myGroup.findViewsWithText(inputListView, "TC_Downgrade_osV_False", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Downgrade_osV_False== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Downgrade_osV_False clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Downgrade_osV_False snap!"); - screenShot("TC_Downgrade_osV_False"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WXPageActivity waTestPageActivity; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcDowngradeOSVTrue() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testDowngrade(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Downgrade")){ - Log.e(TAG, "TC_Downgrade find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Downgrade_osV_True"); - -// myGroup.findViewsWithText(inputListView, "TC_Downgrade_osV_True", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Downgrade_osV_True== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Downgrade_osV_True clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Downgrade_osV_True snap!"); -// screenShot("TC_Downgrade_appV_True"); - ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_True"); - - sleep(2000); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WXPageActivity waTestPageActivity; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcDowngradeWeexVFalse() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testDowngrade(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Downgrade")){ - Log.e(TAG, "TC_Downgrade find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Downgrade_weexV_False"); -// myGroup.findViewsWithText(inputListView, "TC_Downgrade_weexV_False", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Downgrade_weexV_False== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Downgrade_weexV_False clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Downgrade_weexV_False snap!"); - screenShot("TC_Downgrade_weexV_False"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_weexV_False"); - - sleep(2000); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WXPageActivity waTestPageActivity; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcDowngradeWeexVTrue() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testDowngrade(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Downgrade")){ - Log.e(TAG, "TC_Downgrade find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView = new ArrayList(); -// myGroup.findViewsWithText(inputListView, "TC_Downgrade_weexV_True", View.FIND_VIEWS_WITH_TEXT); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Downgrade_weexV_True"); - Log.e(TAG, "TC_Downgrade_weexV_True== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Downgrade_weexV_True clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Downgrade_weexV_True snap!"); -// screenShot("TC_Downgrade_appV_True"); - ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_weexV_True"); - - sleep(2000); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WXPageActivity waTestPageActivity; - public WeappJsBaseTestCase weappApplication; - - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcImageUpdate() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp into!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - setActivity(WXPageActivity.wxPageActivityInstance); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testImageUpdate(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Image")){ - Log.e(TAG, "TC_Image find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Image_Update"); -// myGroup.findViewsWithText(inputListView, "TC_Image_Update", View.FIND_VIEWS_WITH_TEXT); - sleep(3000); - Log.e(TAG, "TC_Image_Update== " + inputListView.size()); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - Log.e(TAG, "inputTypeView text == " +inputTypeView.getText().toString()); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_01_init snap!"); - screenShot("TC_Image_Update_01_init"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - sleep(2000); - } - - setActivity(WXPageActivity.wxPageActivityInstance); - activity2 = getActivity(); - - myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "error src"); -// myGroup.findViewsWithText(inputListView, "点击我,图片无法显示", View.FIND_VIEWS_WITH_TEXT); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - Log.e(TAG, "inputTypeView text == " +inputTypeView.getText().toString()); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_02_errorSrc clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_02_errorSrc snap!"); - screenShot("TC_Image_Update_02_errorSrc"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "change src"); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - Log.e(TAG, "inputTypeView text == " +inputTypeView.getText().toString()); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_03_changeSrc clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_03_changeSrc snap!"); - screenShot("TC_Image_Update_03_changeSrc"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "origin src"); -// myGroup.findViewsWithText(inputListView, "点击我,图片正常显示", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_04_normalSrc clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_04_normalSrc snap!"); - screenShot("TC_Image_Update_04_normalSrc"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "pic opacity"); - -// myGroup.findViewsWithText(inputListView, "点击我,图片设置不透明", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_05_notTransparent clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_05_notTransparent snap!"); - screenShot("TC_Image_Update_05_notTransparent"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "pic transparency"); - -// myGroup.findViewsWithText(inputListView, "点击我,图片设置透明", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_06_transparent clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_06_transparent snap!"); - screenShot("TC_Image_Update_06_transparent"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "width large"); - -// myGroup.findViewsWithText(inputListView, "点击我,图片宽度变大", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_07_largeWidth clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_07_largeWidth snap!"); - screenShot("TC_Image_Update_07_largeWidth"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "width less"); - -// myGroup.findViewsWithText(inputListView, "点击我,图片宽度变小", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_08_smallWidth clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_08_smallWidth snap!"); - screenShot("TC_Image_Update_08_smallWidth"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "height large"); - -// myGroup.findViewsWithText(inputListView, "点击我,图片高度变大", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_09_largeHeight clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_09_largeHeight snap!"); - screenShot("TC_Image_Update_09_largeHeight"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "height less"); - -// myGroup.findViewsWithText(inputListView, "点击我,图片高度变小", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_10_smallHeight clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_10_smallHeight snap!"); - screenShot("TC_Image_Update_10_smallHeight"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "scale large"); - -// myGroup.findViewsWithText(inputListView, "点击我,图片等比例放大", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_11_largeScale clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_11_largeScale snap!"); - screenShot("TC_Image_Update_11_largeScale"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "scale smaller"); - -// myGroup.findViewsWithText(inputListView, "点击我,图片等比例缩小", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_12_smallScale clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_12_smallScale snap!"); - screenShot("TC_Image_Update_12_smallScale"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "resize cover"); - -// myGroup.findViewsWithText(inputListView, "点击我,恢复默认", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_13_recover clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_13_recover snap!"); - screenShot("TC_Image_Update_13_recover"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "resize contain"); - -// myGroup.findViewsWithText(inputListView, "点击我,恢复默认", View.FIND_VIEWS_WITH_TEXT); - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Image_Update_14_contain clcik!"); - - } - }); - - sleep(2000); - Log.e(TAG, "TC_Image_Update_14_contain snap!"); - screenShot("TC_Image_Update_14_contain"); -// ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False"); - - sleep(2000); - - } - - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcInputEvent() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG, "activity1=" + waTestPageActivity.toString()); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testInputEvent(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Input")){ - Log.e(TAG, "TC_Input find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Input_Event"); - -// myGroup.findViewsWithText(inputListView, "TC_Input_Event", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Input_Event size== " + inputListView.size()); - sleep(2000); - EditText inputTypeViewLoseFocus =null ; - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Input_Event clcik!"); - } - }); - - sleep(3000); - Log.e(TAG, "TC_Input_Event_01_init snap!"); - screenShot("TC_Input_Event_01_init"); - sleep(3000); - } - - setActivity(WXPageActivity.wxPageActivityInstance); - activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - ArrayList inputListView11 = new ArrayList(); - sleep(3000); - - inputListView11 = ViewUtil.getAllChildViews(myGroup); - ArrayList listEventView = new ArrayList(); - - for(View view :inputListView11){ - if(view instanceof android.support.v7.widget.RecyclerView){ - android.support.v7.widget.RecyclerView listView = - (android.support.v7.widget.RecyclerView) view; - int count = listView.getChildCount(); - Log.e(TAG, "listView count" + count); - listEventView = ViewUtil.getAllChildViews(listView); - } - - } - Log.e(TAG, "listEventView size== " + listEventView.size()); - if(listEventView.size()!=0){ - - for(View view :listEventView){ -// if (view instanceof WXTextView && null != view){ -// Log.e(TAG, "WXTextView get = " + ((WXTextView) view).getText().toString()); -// } - - String hintText = ""; - - if (view instanceof EditText){ - hintText = ((EditText) view).getHint().toString(); - Log.e(TAG, "EditText hint text = " + hintText); - if(hintText.equals("onclick")){ - - final EditText inputTypeView = (EditText)view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "EditText onclick clcik!"); - } - }); - sleep(3000); - - } - else if(hintText.equals("oninput")){ - - final EditText inputTypeView = (EditText)view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - inputTypeView.setText("input"); - Log.e(TAG, "EditText input clcik!"); - - } - }); - - sleep(1000); - screenShot("TC_Input_Event_02_input"); - Log.e(TAG, "TC_Input_Event_02_input snap!"); - sleep(1000); - - } - - else if(hintText.equals("onchange")){ - - final EditText inputTypeView = (EditText)view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - inputTypeView.setText("change"); - Log.e(TAG, "EditText change clcik!"); - - } - }); - - sleep(1000); - } - - else if(hintText.equals("失焦用途")){ - - inputTypeViewLoseFocus = (EditText)view; - final EditText inputTypeView = inputTypeViewLoseFocus; - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "失焦用途 clcik!"); - - } - }); - - sleep(1000); - } - else if(hintText.equals("onfocus")){ - - final EditText inputTypeView = (EditText)view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "onfocus clcik!"); - - } - }); - - sleep(1000); - } - - else if(hintText.equals("onblur")){ - - final EditText inputTypeView = (EditText)view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "onblur clcik!"); - - } - }); - - sleep(1000); - } - - } - - } - if(null != inputTypeViewLoseFocus){ - final EditText inputTypeView1 = inputTypeViewLoseFocus; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView1.requestFocus(); - inputTypeView1.performClick(); - Log.e(TAG, "失焦用途 clcik22!"); - - } - }); - - sleep(2000); - screenShot("TC_Input_Event_03_finish"); - Log.e(TAG, "TC_Input_Event_03_finish snap!"); - sleep(2000); - - } - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcInputPlaceholder() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000);//因为太快 - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testInputPlaceholder(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Input")){ - Log.e(TAG, "TC_Input find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Input_Placeholder"); - sleep(2000); -// myGroup.findViewsWithText(inputListView, "TC_Input_Placeholder", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Input_Placeholder size== " + inputListView.size()); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Input_Placeholder clcik!"); - - -// screenShot("TC_Input_Type"); - } - }); - - - sleep(3000); - Log.e(TAG, "TC_Input_Placeholder snap!"); - screenShot("TC_Input_Placeholder"); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcInputStyle() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testInputStyle(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Input")){ - Log.e(TAG, "TC_Input find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Input_Style"); - -// myGroup.findViewsWithText(inputListView, "TC_Input_Style", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Input_Style size== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Input_Style clcik!"); - - -// screenShot("TC_Input_Type"); - } - }); - - - sleep(3000); - Log.e(TAG, "TC_Input_Style snap!"); - screenShot("TC_Input_Style"); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcInputType() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testInputType(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Input")){ - Log.e(TAG, "TC_Input find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Input_Type"); - -// myGroup.findViewsWithText(inputListView, "TC_Input_Type", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Input_Type size== " + inputListView.size()); - sleep(2000); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "inputTypeView clcik!"); - - -// screenShot("TC_Input_Type"); - } - }); - - - sleep(3000); - Log.e(TAG, "TC_Input_Type snap!"); - screenShot("TC_Input_Type"); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public ViewGroup mViewGroup; - public Application mApplication; - // private int childViewCount; -// private int viewGroupHeight; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - - - public WeexUiTestCaseTcSlider() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - - //不会执行 如果不用@Test - public void testSlider(){ - // Todo nothing - - } - public void Slider(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Slider")){ - Log.e(TAG, "TC_Slider find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Slider_Event"); - -// myGroup.findViewsWithText(inputListView, "TC_Input_Style", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Slider_Event size== " + inputListView.size()); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Slider_Event clcik!"); - - -// screenShot("TC_Input_Type"); - } - }); - - - sleep(3000); - Log.e(TAG, "TC_Slider_Event snap!"); - screenShot("TC_Slider_Event"); - - } - } - } - } - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - -// mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); -// setViewGroup(mViewGroup); - ArrayList outViews = new ArrayList(); - - // 寻找 TC_测试 - for(int i=0 ; i fatherView, String caseText){ - if (fatherView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcTextStyleColumn() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - Thread.sleep(2000); - - TouchUtils.scrollToBottom(this, waTestPageActivity, mViewGroup); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testTextStyleColumn(){ - - for(final View caseView : mCaseListIndexView){ - String caseViewText = new String(""); - caseViewText = ((WXTextView)caseView).getText().toString(); - Log.e(TAG, "caseView==" + caseViewText); - if (((WXTextView)caseView).getText().toString().equals("TC_Text")){ - Log.e(TAG, "TC_Text find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Text_Style_Column"); -// myGroup.findViewsWithText(inputListView, "TC_Text_Style_Column", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Text_Style_Column size== " + inputListView.size()); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Text_Style_Column clcik!"); - - -// screenShot("TC_Input_Type"); - } - }); - - - sleep(2000); - Log.e(TAG, "TC_Text_Style_Column_01_beforeClick snap!"); - screenShot("TC_Text_Style_Column_01_beforeClick"); - sleep(2000); - } - setActivity(WXPageActivity.wxPageActivityInstance); - activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - inputListView = ViewUtil.getAllChildViews(myGroup); - for(View view :inputListView) { - if (view instanceof WXTextView || view instanceof WXTextView) { - final WXTextView inputTypeView = (WXTextView) view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Text_Style_Column_02_afterClick_text = " + inputTypeView.getText() + " clcik!"); - } - }); - - sleep(2000); - } - } - Log.e(TAG, "TC_Text_Style_Column_02_afterClick snap!"); - screenShot("TC_Text_Style_Column_02_afterClick"); - sleep(2000); - - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcTextStyleOwn() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - Thread.sleep(2000); - - TouchUtils.scrollToBottom(this, waTestPageActivity, mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testTextType(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Text")){ - Log.e(TAG, "TC_Text find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Text_Style_Own"); - -// myGroup.findViewsWithText(inputListView, "TC_Text_Style_Own", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Text_Style_Own size== " + inputListView.size()); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Text_Style_Own clcik!"); - - -// screenShot("TC_Input_Type"); - } - }); - - sleep(1000); - Log.e(TAG, "TC_Text_Style_Own snap!"); - screenShot("TC_Text_Style_Own"); - sleep(2000); - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcTextStyleRow() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - Thread.sleep(2000); - - TouchUtils.scrollToBottom(this, waTestPageActivity, mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testTextStyleRow(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Text")){ - Log.e(TAG, "TC_Text find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Text_Style_Row"); - -// myGroup.findViewsWithText(inputListView, "TC_Text_Style_Row", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Text_Style_Row size== " + inputListView.size()); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Text_Style_Row clcik!"); - - -// screenShot("TC_Input_Type"); - } - }); - - - sleep(3000); - Log.e(TAG, "TC_Text_Style_Row_01_beforeClick snap!"); - screenShot("TC_Text_Style_Row_01_beforeClick"); - sleep(2000); - - } - setActivity(WXPageActivity.wxPageActivityInstance); - activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - inputListView = ViewUtil.getAllChildViews(myGroup); - for(View view :inputListView) { - if (view instanceof WXTextView || view instanceof WXTextView) { - final WXTextView inputTypeView = (WXTextView) view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Text_Style_Row_text = " + inputTypeView.getText() + " clcik!"); - } - }); - - sleep(2000); - } - } - Log.e(TAG, "TC_Text_Style_Row_02_afterClick snap!"); - screenShot("TC_Text_Style_Row_02_afterClick"); - sleep(2000); - - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcTextType() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - Thread.sleep(2000); - - TouchUtils.scrollToBottom(this, waTestPageActivity, mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testTextType(){ - - for(final View caseView : mCaseListIndexView){ - if (((WXTextView)caseView).getText().toString().equals("TC_Text")){ - Log.e(TAG, "TC_Text find"); - - final WXTextView inputView = (WXTextView)caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, "TC_Text_Type"); - -// myGroup.findViewsWithText(inputListView, "TC_Text_Type", View.FIND_VIEWS_WITH_TEXT); - - Log.e(TAG, "TC_Text_Type size== " + inputListView.size()); - - if(inputListView.size()!=0){ - final WXTextView inputTypeView = (WXTextView)inputListView.get(0); - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "TC_Text_Type clcik!"); - - -// screenShot("TC_Input_Type"); - } - }); - - - sleep(3000); - Log.e(TAG, "TC_Text_Type snap!"); - screenShot("TC_Text_Type"); - - } - } - } - - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i { - public final String TAG = "TestScript_Guide=="; - public WeappJsBaseTestCase weappApplication; - public WXPageActivity waTestPageActivity; - public WXPageActivity waTestPageActivity2; - - public ViewGroup mViewGroup; - public Application mApplication; - public Instrumentation mInstrumentation; - - public ArrayList mCaseListIndexView = new ArrayList(); - public WeexUiTestCaseTcElementOpt() { - super(WXPageActivity.class); - } - - public void setUp() throws Exception{ - - Log.e("TestScript_Guide", "setUp test!!"); - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); -// waTestPageActivity.getIntent().getData().toString(); - Log.e(TAG,"activity1=" + waTestPageActivity.toString() ); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_"); - addAllTargetView("TC_"); - Thread.sleep(3000); - } - -// public void testPreConditions() -// { -// assertNotNull(waTestPageActivity); -// assertNotNull(mViewGroup); -// assertNotNull(mCaseListIndexView); -// -// } - - public void testElementOpt() { - - for (final View caseView : mCaseListIndexView) { - if (((WXTextView) caseView).getText().toString().equals("TC_Event")) { - Log.e(TAG, "TC_Event find"); - - final WXTextView inputView = (WXTextView) caseView; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - Log.e(TAG, "TC_Event clcik!!" ); - } - }); - sleep(2000); - - setActivity(WXPageActivity.wxPageActivityInstance); - ViewGroup optGroup = (ViewGroup) (getActivity().findViewById(R.id.container)); - ArrayList otpViewList = new ArrayList(); - otpViewList = ViewUtil.findViewWithText(optGroup, "TC_Event_ElementOpt"); -// optGroup.findViewsWithText(otpViewList, "TC_Event_ElementOpt", View.FIND_VIEWS_WITH_TEXT); - sleep(2000); - - for (View view : otpViewList) { - if (view instanceof WXTextView) { - final WXTextView optView = (WXTextView) view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - optView.requestFocus(); - optView.performClick(); - Log.e(TAG, "TC_Event_ElementOpt clcik!!"); - - } - }); - sleep(2000); - } - - } - - - Log.e(TAG, "TC_Element_Opt_01_initialize snap!"); - screenShot("TC_Event_ElementOpt_01_init"); - - setActivity(WXPageActivity.wxPageActivityInstance); - ViewUtil util = new ViewUtil(); - List optListView = util.getAllChildViews(getActivity().findViewById(R.id.container)); - //分别点击“文本1”一次,“文本1,点击我增加控件”一次,"文本2"两次,截图 - for (View child : optListView) { - if (child instanceof WXTextView) { - - String childValue = ((WXTextView) child).getText().toString(); - Log.e(TAG, "opt child vaule : " + childValue); - - if (childValue.equals("点击我,在我上方增加一个文本")) { - final WXTextView wenbenClickAndThenAddText = (WXTextView) child; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - wenbenClickAndThenAddText.requestFocus(); - wenbenClickAndThenAddText.performClick(); - Log.e(TAG, "文本1 click once!!"); - } - }); - sleep(2000); - } - } - } - -// setActivity(WXPageActivity.wxPageActivityInstance); - ViewUtil util1 = new ViewUtil(); - List optListView1 = util1.getAllChildViews(getActivity().findViewById(R.id.container)); - //分别点击“文本1”一次,“文本1,点击我增加控件”一次,"文本2"两次,截图 - for (View child1 : optListView1) { - if (child1 instanceof WXTextView) { - - String childValue1 = ((WXTextView) child1).getText().toString(); - Log.e(TAG, "opt child1 vaule : " + childValue1); - - if (childValue1.equals("文本1,点击我增加控件")) { - Log.e(TAG, "childValue.equals(\"文本1,点击我增加控件\")"); - - final WXTextView wenbenClickAndThenAddText1 = (WXTextView) child1; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - - wenbenClickAndThenAddText1.setClickable(true); - - wenbenClickAndThenAddText1.requestFocus(); - wenbenClickAndThenAddText1.performClick(); - Log.e(TAG, "文本1 click once!!"); - } - }); - - sleep(3000); - } - } - } - ///////////////////////////////////////// - optListView1 = util1.getAllChildViews(getActivity().findViewById(R.id.container)); - for(View child : optListView1){ - if (child instanceof WXTextView) { - - String childValue = ((WXTextView) child).getText().toString(); - Log.e(TAG, "点击我,在我下方增加一个文本 vaule : " + childValue); - - if(childValue.equals("点击我,在我下方增加一个文本")){ - Log.e(TAG, "childValue.equals(\"点击我,在我下方增加一个文本\")"); - - final WXTextView wenbenClickAndThenAddText1 = (WXTextView)child; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - - wenbenClickAndThenAddText1.setClickable(true); - - wenbenClickAndThenAddText1.requestFocus(); - wenbenClickAndThenAddText1.performClick(); - wenbenClickAndThenAddText1.performClick(); - - Log.e(TAG, "点击我,在我下方增加一个文本 2!!"); - } - }); - - sleep(3000); - screenShot("TC_Event_ElementOpt_02_addElements"); - } - } - } - //////////////////////////////////////////////////////// - optListView1 = util1.getAllChildViews(getActivity().findViewById(R.id.container)); - for(View child : optListView1){ - if (child instanceof WXTextView) { - - String childValue = ((WXTextView) child).getText().toString(); - Log.e(TAG, "文本2,点击我自动消失 vaule : " + childValue); - - if(childValue.equals("文本2,点击我自动消失")){ - Log.e(TAG, "childValue.equals(\"文本2,点击我自动消失\")"); - - final WXTextView wenbenClickAndThenAddText1 = (WXTextView)child; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - - wenbenClickAndThenAddText1.setClickable(true); - - wenbenClickAndThenAddText1.requestFocus(); - wenbenClickAndThenAddText1.performClick(); - - Log.e(TAG, "文本2,点击我自动消失click 1!!"); - } - }); - - sleep(3000); - screenShot("TC_Event_ElementOpt_03_removeElement"); - } - } - } - //////////////////////////////////////////////////////// - optListView1 = util1.getAllChildViews(getActivity().findViewById(R.id.container)); - for(View child : optListView1){ - if (child instanceof WXTextView) { - - String childValue = ((WXTextView) child).getText().toString(); - Log.e(TAG, "文本2,点击我自动消失 vaule : " + childValue); - - if(childValue.equals("文本2,点击我自动消失")){ - Log.e(TAG, "childValue.equals(\"文本2,点击我自动消失\")"); - - final WXTextView wenbenClickAndThenAddText1 = (WXTextView)child; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - - wenbenClickAndThenAddText1.setClickable(true); - - wenbenClickAndThenAddText1.requestFocus(); - wenbenClickAndThenAddText1.performClick(); - - Log.e(TAG, "文本2,点击我自动消失click 1!!"); - } - }); - - sleep(3000); - screenShot("TC_Event_ElementOpt_03_removeElement"); - Log.e(TAG, "TC_Event_ElementOpt_03_removeElement snap!"); - } - } - } - ////////////////////////////// - optListView1 = util1.getAllChildViews(getActivity().findViewById(R.id.container)); - for(View child : optListView1){ - if (child instanceof WXTextView) { - - String childValue = ((WXTextView) child).getText().toString(); - Log.e(TAG, "点击测试Move方法 vaule : " + childValue); - - if(childValue.equals("点击测试Move方法")){ - - Log.e(TAG, "点击测试Move方法 find"); - final View wenbenClickAndThenAddText1 = child; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - - wenbenClickAndThenAddText1.setClickable(true); - - wenbenClickAndThenAddText1.requestFocus(); - wenbenClickAndThenAddText1.performClick(); - - Log.e(TAG, "点击测试Move方法click 1!!"); - } - }); - - sleep(3000); - - } - if(childValue.equals("点击我,改变背景颜色")){ - - Log.e(TAG, "点击我,改变背景颜色 find"); - final View wenbenClickAndThenAddText1 = child; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - - wenbenClickAndThenAddText1.setClickable(true); - - wenbenClickAndThenAddText1.requestFocus(); - wenbenClickAndThenAddText1.performClick(); - - Log.e(TAG, "点击我,改变背景颜色 click!!"); - } - }); - - sleep(3000); -// screenShot("TC_Event_ElementOpt_04_finish"); -// Log.e(TAG, "TC_Event_ElementOpt_04_finish"); - } - if(childValue.equals("点击我,applyEvent")){ - - Log.e(TAG, "点击我,applyEvent find"); - final View wenbenClickAndThenAddText1 = child; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - - wenbenClickAndThenAddText1.setClickable(true); - - wenbenClickAndThenAddText1.requestFocus(); - wenbenClickAndThenAddText1.performClick(); - - Log.e(TAG, "点击我,applyEvent click 1!!"); - } - }); - - sleep(3000); -// screenShot("TC_Event_ElementOpt_04_finish"); -// Log.e(TAG, "TC_Event_ElementOpt_04_finish"); - } - - if(childValue.equals("点击我,removeEvent")){ - - Log.e(TAG, "点击我,removeEvent find"); - final View wenbenClickAndThenAddText1 = child; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - - wenbenClickAndThenAddText1.setClickable(true); - - wenbenClickAndThenAddText1.requestFocus(); - wenbenClickAndThenAddText1.performClick(); - - Log.e(TAG, "点击我,removeEvent click 1!!"); - } - }); - - sleep(3000); - screenShot("TC_Event_ElementOpt_04_finish"); - Log.e(TAG, "TC_Event_ElementOpt_04_finish"); - } - - } - } - - } - - } - } - - - - /** - * get tc list by text - * @param byText - * @return - * @throws InterruptedException - */ - public ArrayList getTestCaseListViewByText(String byText) throws InterruptedException { - Log.e("TestScript_Guide", "byText ==" + byText); - - if(TextUtils.isEmpty(byText)){ - return null; - } - ArrayList outViews = new ArrayList(); - mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT); - - for (View view : outViews){ - String viewText = ((WXTextView)view).getText().toString(); - Log.e(TAG, "viewText ==" + viewText); - - } - return outViews; - } - - /** - * findMyCaseByText - */ - public View findMyCaseByText(String caseText){ - if (mCaseListIndexView.size() == 0) return null; - - WXTextView view = null; - for(int i=0; i viewRoots = getRootViews(activity); - int statusBarHeight = ScreenShot.getStatusBarHeight1(activity); - int actionBarHeight = ScreenShot.getActionBarHeight(activity); - - View main = activity.getWindow().getDecorView(); - int mainWidth = main.getWidth(); - int mainHeight = main.getHeight(); - - int baseWidth = 750; - float widthScale = ((float) baseWidth) / mainWidth; - - // 新建立矩阵 按照宽度缩放因子自适应缩放 - Matrix matrix = new Matrix(); - matrix.postScale(widthScale, widthScale); - - Bitmap bitmap1 = Bitmap.createBitmap(main.getWidth(), main.getHeight(), ARGB_8888); - final Bitmap bitmap = Bitmap.createBitmap(bitmap1, 0, statusBarHeight + actionBarHeight, - mainWidth, mainHeight - statusBarHeight - actionBarHeight, matrix, true); - - - // We need to do it in main thread - if (Looper.myLooper() == Looper.getMainLooper()) { - drawRootsToBitmap(viewRoots, bitmap); - } else { - final CountDownLatch latch = new CountDownLatch(1); - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - try { - drawRootsToBitmap(viewRoots, bitmap); - } - finally { - latch.countDown(); - } - } - }); - - latch.await(); - } - - return bitmap; - } - - private static void drawRootsToBitmap(List viewRoots, Bitmap bitmap) { - for (ViewRootData rootData : viewRoots) { - drawRootToBitmap(rootData, bitmap); - } - } - - private static void drawRootToBitmap(ViewRootData config, Bitmap bitmap) { - // now only dim supported - if ((config._layoutParams.flags & FLAG_DIM_BEHIND) == FLAG_DIM_BEHIND) { - Canvas dimCanvas = new Canvas(bitmap); - - int alpha = (int) (255 * config._layoutParams.dimAmount); - dimCanvas.drawARGB(alpha, 0, 0, 0); - } - - Canvas canvas = new Canvas(bitmap); - canvas.translate(config._winFrame.left, config._winFrame.top); - config._view.draw(canvas); - } - - private static void writeBitmap(Bitmap bitmap, File toFile) throws IOException { - OutputStream outputStream = null; - try { - - outputStream = new BufferedOutputStream(new FileOutputStream(toFile)); - bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); - } - finally { - if (outputStream != null) { - outputStream.close(); - } - } - } - - @SuppressWarnings("unchecked") // no way to check - private static List getRootViews(Activity activity) { - List rootViews = new ArrayList<>(); - - Object globalWindowManager; - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { - globalWindowManager = getFieldValue("mWindowManager", activity.getWindowManager()); - } else { - globalWindowManager = getFieldValue("mGlobal", activity.getWindowManager()); - } - Object rootObjects = getFieldValue("mRoots", globalWindowManager); - Object paramsObject = getFieldValue("mParams", globalWindowManager); - - Object[] roots; - LayoutParams[] params; - - // There was a change to ArrayList implementation in 4.4 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - roots = ((List) rootObjects).toArray(); - - List paramsList = (List) paramsObject; - params = paramsList.toArray(new LayoutParams[paramsList.size()]); - } else { - roots = (Object[]) rootObjects; - params = (LayoutParams[]) paramsObject; - } - - for (int i = 0; i < roots.length; i++) { - Object root = roots[i]; - - Object attachInfo = getFieldValue("mAttachInfo", root); - int top = (int) getFieldValue("mWindowTop", attachInfo); - int left = (int) getFieldValue("mWindowLeft", attachInfo); - - Rect winFrame = (Rect) getFieldValue("mWinFrame", root); - Rect area = new Rect(left, top, left + winFrame.width(), top + winFrame.height()); - - View view = (View) getFieldValue("mView", root); - rootViews.add(new ViewRootData(view, area, params[i])); - } - - return rootViews; - } - - private static Object getFieldValue(String fieldName, Object target) { - try { - return getFieldValueUnchecked(fieldName, target); - } - catch (Exception e) { - throw new UnableToTakeScreenshotException(e); - } - } - - private static Object getFieldValueUnchecked(String fieldName, Object target) - throws NoSuchFieldException, IllegalAccessException { - Field field = findField(fieldName, target.getClass()); - - field.setAccessible(true); - return field.get(target); - } - - private static Field findField(String name, Class clazz) throws NoSuchFieldException { - Class currentClass = clazz; - while (currentClass != Object.class) { - for (Field field : currentClass.getDeclaredFields()) { - if (name.equals(field.getName())) { - return field; - } - } - - currentClass = currentClass.getSuperclass(); - } - - throw new NoSuchFieldException("Field " + name + " not found for class " + clazz); - } - - //endregion - - //region Constructors - - // No instances - private Falcon() { - } - - //endregion - - //region Nested classes - - /** - * Custom exception thrown if there is some exception thrown during - * screenshot capturing to enable better client code exception handling. - */ - public static class UnableToTakeScreenshotException extends RuntimeException { - private UnableToTakeScreenshotException(String detailMessage, Exception exception) { - super(detailMessage, extractException(exception)); - } - - private UnableToTakeScreenshotException(Exception ex) { - super(extractException(ex)); - } - - /** - * Method to avoid multiple wrapping. If there is already our exception, - * just wrap the cause again - */ - private static Throwable extractException(Exception ex) { - if (ex instanceof UnableToTakeScreenshotException) { - return ex.getCause(); - } - - return ex; - } - } - - private static class ViewRootData { - private final View _view; - private final Rect _winFrame; - private final LayoutParams _layoutParams; - - public ViewRootData(View view, Rect winFrame, LayoutParams layoutParams) { - _view = view; - _winFrame = winFrame; - _layoutParams = layoutParams; - } - } - - //endregion -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/util/ScreenShot.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/util/ScreenShot.java deleted file mode 100644 index b3561a38a4..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/util/ScreenShot.java +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.util; - -import android.app.Activity; -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Matrix; -import android.graphics.Rect; -import android.os.Build; -import android.os.Environment; -import android.support.annotation.Nullable; -import android.support.design.widget.TabLayout; -import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.util.TypedValue; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.widget.ScrollView; - -import com.taobao.weex.ui.view.WXScrollView; -import com.taobao.weex.ui.view.listview.WXRecyclerView; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; - -/** - * Created by huabing.thb on 15-10-27. - */ -public class ScreenShot { - - public static View rootView; - public static ArrayList allViews = new ArrayList(); - public static View firstScrollView = null; - public static View firstListView = null; - - public static View findFirstScrollerByRootView(View rootView){ - - View firstScrollView = null; - - if(null != rootView){ - allViews = ViewUtil.getAllChildViews(rootView); - for (View view:allViews - ) { - if(view instanceof ScrollView){ - firstScrollView = view; - break; - } - } - } - return firstScrollView; - } - - public static View findFirstListByRootView(View rootView){ - View firstListView = null; - if(null != rootView){ - allViews = ViewUtil.getAllChildViews(rootView); - for (View view:allViews - ) { - if(view instanceof WXRecyclerView){ - firstListView = view; - break; - } - } - } - return firstListView; - } - - private static Bitmap doSanpForListOrScroller(View sanpView){ - - Bitmap b = null; - - if(sanpView!=null){ - - int[] location = new int[2]; - sanpView.getLocationInWindow(location); - int x = location[0]; - int y = location[1]; - - sanpView = rootView; - sanpView.setDrawingCacheEnabled(true); - sanpView.buildDrawingCache(); -// sanpView = ((View)sanpView.getParent().getParent()); - Bitmap bitmap = sanpView.getDrawingCache(); - -// sanpView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), -// View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); -// sanpView.layout(0, 0, sanpView.getMeasuredWidth(), sanpView.getMeasuredHeight()); -// sanpView.buildDrawingCache(); -// Bitmap bitmap = sanpView.getDrawingCache(); -// b = bitmap; - - - int sanpWidth = sanpView.getWidth(); - - Log.e("weex_test", "sanpView.getWidth=="+ sanpWidth); - - int snapHeight = sanpView.getHeight(); - Log.e("weex_test", "sanpView.getHeight==" + snapHeight); - -// bitmap = Bitmap.createBitmap(sanpWidth+x, snapHeight+x,Bitmap.Config.ARGB_8888); - -// int width = activity.getWindowManager().getDefaultDisplay().getWidth(); -// int height = activity.getWindowManager().getDefaultDisplay().getHeight(); - - int baseWidth = 750; - int baseHeight = 1134; - - // 计算缩放因子 -// float heightScale = ((float) baseHeight) / scrollerHeight; - float widthScale = ((float) baseWidth) / sanpWidth; - - // 新建立矩阵 按照宽度缩放因子自适应缩放 - Matrix matrix = new Matrix(); - matrix.postScale(widthScale, widthScale); - - Log.e("weex_test", "widthScale=="+widthScale+ "|"+ - "Real sanpWidth==" + sanpWidth*widthScale +"|" + - "Real snapHeight==" + widthScale*snapHeight + - "|" + "sanpView.x=" + x + - "|" + "sanpView.y= " + y); - b = Bitmap.createBitmap(bitmap, 0, 0, sanpWidth, snapHeight); -// b = Bitmap.createBitmap(bitmap, 0, 0, rootView.getWidth(), rootView.getHeight()); - - // 缩放 - -// Bitmap returnBmp = Bitmap.createBitmap((int) dw, (int) dh, -// Bitmap.Config.ARGB_4444); - - b = Bitmap.createBitmap(bitmap,0, 0, - sanpWidth, snapHeight, matrix, true); -// b = Bitmap.createBitmap(bitmap, 0, 0, scrollerWidth, -// scrollerHeight, matrix, true); -// b = Bitmap.createBitmap(bitmap, 0, statusBarHeight + actionBarHeight, width, -// height - statusBarHeight - actionBarHeight, matrix, true); - - sanpView.destroyDrawingCache(); - - }else { - Log.e("weex_test", "snapshot view is " + sanpView); - } - return b; - - } - // Gets the Activity screenshots, save to png file - private static Bitmap takeScreenShot(Activity activity) { - - Context ctx = activity.getApplicationContext(); - String screenShotDir = getWeexScreenShotDir(ctx); - - View view = activity.getWindow().getDecorView(); - - rootView = view; - firstScrollView = findFirstScrollerByRootView(rootView); - firstListView = findFirstListByRootView(rootView); - - Bitmap snapBitmap = null; - // 优先scroller ->list->root - if(null !=firstScrollView ){ - snapBitmap = doSanpForListOrScroller(firstScrollView); - } - else { - Log.e("weex_test", "firstScrollView is " + firstScrollView); - if (null != firstListView){ - snapBitmap = doSanpForListOrScroller(firstListView); - }else { - Log.e("weex_test", "firstListView is " + firstListView); - - if(null != rootView){ -// snapBitmap = doSanpForListOrScroller(rootView); - } - } - } - - return snapBitmap; - - } - - public static Bitmap convertViewToBitmap(View view){ - view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), - View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); - view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); - view.buildDrawingCache(); - Bitmap bitmap = view.getDrawingCache(); - - return bitmap; - } - - private static void savePic(Bitmap b, String strFileName) { - FileOutputStream fos = null; - try { - fos = new FileOutputStream(strFileName); - if (null != fos) { - b.compress(Bitmap.CompressFormat.PNG, 90, fos); - fos.flush(); - fos.close(); - } - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void saveToSD(Bitmap bmp, String dirName,String fileName) throws IOException { - if (Environment.getExternalStorageState().equals( - Environment.MEDIA_MOUNTED)) { - File dir = new File(dirName); - if(!dir.exists()){ - dir.mkdirs(); - } - - File file = new File(dirName + fileName); - Log.d("AssetsFileUtil", dirName + fileName); - if (!file.exists()) { - file.createNewFile(); - } - - FileOutputStream fos = null; - try { - fos = new FileOutputStream(file); - if (fos != null) { - bmp.compress(Bitmap.CompressFormat.PNG, 100, fos); - fos.flush(); - fos.close(); - } - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - public static void shoot(Activity activity, String pathName) throws IOException { - - if(SdCardHelper.isHasSdcard()){ -// ScreenShot.saveToSD(ScreenShot.takeScreenShot(activity), SdCardHelper.SDCardRoot + "WeexTest/ScreenShot/", pathName /*+System.currentTimeMillis()*/ + ".png"); - ScreenShot.saveToSD(ScreenShot.takeScreenShot(activity), - getWeexScreenShotDir(activity.getApplicationContext()) + File.separator , pathName /*+System.currentTimeMillis()*/ + ".png"); - - } - - } - -// public static void shootAllViews(Activity activity, String pathName) throws IOException { -// ScreenShot.saveToSD(ScreenShot.takeScreenShotIncludeDialog(activity, pathName), "sdcard/WeexTest/ScreenShot/", pathName /*+System.currentTimeMillis()*/ + ".png"); -// -// } - - public static void takeScreenShotIncludeDialog(Activity activity, String file){ - if (Environment.getExternalStorageState().equals( - Environment.MEDIA_MOUNTED)) { - - File dir = new File(getWeexScreenShotDir(activity.getApplicationContext()) ); - if(!dir.exists()){ - dir.mkdirs(); - } - - File filePic = new File(getWeexScreenShotDir(activity.getApplicationContext()) + - File.separator + file + ".png"); - if (!filePic.exists()) { - try { - filePic.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - Falcon.takeScreenshot(activity, filePic); - - } - - } - - public static int getActionBarHeight(Activity activity) { - int actionBarHeight = 0; - if(activity.getActionBar()!= null){ - actionBarHeight = activity.getActionBar().getHeight(); - } - - if (actionBarHeight != 0) - return actionBarHeight; - - final TypedValue tv = new TypedValue(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - if (activity.getTheme().resolveAttribute(android.support.v7.appcompat.R.attr.actionBarSize, tv, true)){ - actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, activity.getResources().getDisplayMetrics()); - Log.e("actionBarHeight==",actionBarHeight + "android.support.v7.appcompat.R.attr.actionBarSize"); - - } - - else if (activity.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)){ - actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, activity.getResources().getDisplayMetrics()); - Log.e("actionBarHeight==",actionBarHeight + "actionBarHeight is android.R.attr.actionBarSize"); - - } - } - - return actionBarHeight; - } - - public static int getStatusBarHeight1(Activity activity){ - int result = 0; - int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android"); - if (resourceId > 0) { - result = activity.getResources().getDimensionPixelSize(resourceId); - - } - Log.e("StatusBarHeight==", "StatusBar Height= " + result); - - return result; - } - public static int getStatusBarHeight(Activity activity) { - int result = 0; - Rect rect = new Rect(); - Window window = activity.getWindow(); - if (window != null) { - window.getDecorView().getWindowVisibleDisplayFrame(rect); - View v = window.findViewById(Window.ID_ANDROID_CONTENT); - - android.view.Display display = ((android.view.WindowManager) activity.getSystemService(activity.WINDOW_SERVICE)).getDefaultDisplay(); - - //return result title bar height - int result1 = display.getHeight() - v.getBottom() + rect.top; - int result2 = display.getHeight() - v.getBottom(); - int result3 = v.getTop() - rect.top; - int result4 = display.getHeight() - v.getHeight(); - - Log.e("StatusBarHeight==", "result1== " + result1 +" result2 = " + result2 + "result3=" + result3 + "result4=" +result4 ) ; - } - return result; - - } - - /** - * getDiskCacheDir - * @param context - * @return - */ - @Nullable - public static String getWeexScreenShotDir(Context context) { - if (context == null) { - return null; - } - String cachePath; - String extDir = "" ; - - if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) - || !Environment.isExternalStorageRemovable()) { - cachePath = context.getExternalCacheDir().getPath(); - extDir = context.getExternalFilesDir(null).getPath(); - File screenShotFileDir = new File(extDir, "WeexTest" + File.separator + "ScreenShot"); - if (!screenShotFileDir.exists()){ - screenShotFileDir.mkdirs(); - } - return screenShotFileDir.getPath(); -// File file = new File(context.getExternalFilesDir(null), "DemoFile.jpg"); - - - } else { - cachePath = context.getCacheDir().getPath(); - } - Log.e("weex_test","cachePath==" + cachePath); - Log.e("weex_test","extDir==" + extDir); - - return cachePath; - } -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/util/SdCardHelper.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/util/SdCardHelper.java deleted file mode 100644 index 571f6cbb5b..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/util/SdCardHelper.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.util; - -import android.os.Environment; - -/** - * Created by admin on 16/4/25. - */ -public class SdCardHelper { - public static String SDCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath() + "/"; - - /** - * sdcard check - * @return - */ - public static boolean isHasSdcard(){ - String status = Environment.getExternalStorageState(); - if (status.equals(Environment.MEDIA_MOUNTED)) { - return true; - } else { - return false; - } - } -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/util/TestFlow.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/util/TestFlow.java deleted file mode 100644 index 9a633a6a6e..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/util/TestFlow.java +++ /dev/null @@ -1,448 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.util; - -import android.app.Activity; -import android.app.Instrumentation; -import android.content.Intent; -import android.test.ActivityInstrumentationTestCase2; -import android.test.TouchUtils; -import android.text.method.Touch; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.EditText; -import android.widget.FrameLayout; -import android.widget.ScrollView; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.WeappJsBaseTestCase; -import com.alibaba.weex.constants.Constants; -import com.taobao.weex.devtools.inspector.elements.ObjectDescriptor; -import com.taobao.weex.ui.view.WXTextView; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Map; -import java.util.TreeMap; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Created by admin on 16/7/20. - */ -public class TestFlow extends ActivityInstrumentationTestCase2{ - - private WeappJsBaseTestCase weappApplication; - private Instrumentation mInstrumentation; - private WXPageActivity waTestPageActivity; - private final static String TAG = "TestFlow"; - private ViewGroup mViewGroup; - private ArrayList mCaseListIndexView; - private WXPageActivity activity2; - private TreeMap testMap = new TreeMap(); - private int stepCountFlag = 0; - private int allRoundFound = 5; - int maxStep = 16; - int topCount = 10; - private boolean childCaseFound = false; - - - public TestFlow(Class activityClass) { - super(activityClass); - } - - - /** - * get tc list - * @throws InterruptedException - */ - @Before - public void setUp() throws InterruptedException { - setActivityInitialTouchMode(false); - weappApplication = new WeappJsBaseTestCase(); - mInstrumentation = getInstrumentation(); - - if(mInstrumentation == null){ - - mInstrumentation = this.getInstrumentation(); - } - Intent intent = new Intent(); - intent.putExtra("bundleUrl", Constants.BUNDLE_URL); - launchActivityWithIntent("com.alibaba.weex", WXPageActivity.class, intent); - waTestPageActivity = getActivity(); - Log.e(TAG, "activity1=" + waTestPageActivity.toString()); - Thread.sleep(3000); - - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - setViewGroup(mViewGroup); - // 根据TC 获取TC 列表,默认“"TC_"” - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "AG_"); - -// addAllTargetView("AG_"); - - Thread.sleep(1000); - } - - /** - * firstTCChildInCompnnet item - * like "TC_AHref" - * - * map - * {"testComponet" : "TC_AHref", - * "testChildCaseInit": "TC_AHref_Event" - * "Step1" : "Hello Weex" - * "Step2" : "Hello Weex2" - * "Step3" : "Hello Weex3" - - * } - * - */ - @Test - public void testByTestMap() { - for (final View caseView : mCaseListIndexView) { - - String caseViewName = ((WXTextView) caseView).getText().toString(); - String testComponet = (String)getTestMap().get("testComponet"); - Log.e(TAG, "caseViewName==" + caseViewName + "==testComponet==" + testComponet); - - if (caseViewName.equals(testComponet)) { - - final WXTextView inputView = (WXTextView) caseView; - if(inputView.getVisibility()== View.VISIBLE){ - Log.e(TAG, "Child Case Found!!"); - childCaseFound = true; - }else{ - Log.e(TAG, "上下滑动一圈都没有找到!!"); - while(allRoundFound >0 && inputView.getVisibility()== View.INVISIBLE){ - findChildCase(inputView); - allRoundFound --; - } - } - - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - inputView.requestFocus(); - inputView.performClick(); - } - }); - - sleep(1000); - - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup) (activity2.findViewById(R.id.container)); - Log.e(TAG, myGroup.toString()); - - String childCaseName = (String)testMap.get("testChildCaseInit"); - Log.e(TAG, "testChildCaseInit to find==" + childCaseName); - ArrayList inputListView = new ArrayList(); - inputListView = ViewUtil.findViewWithText(myGroup, - childCaseName); - sleep(1000); -// View scrollableView = ViewUtil.getFirstChildScrollableView(myGroup); - - int findCount = 0; - while(inputListView.size() == 0 ){ - -// TouchUtils.dragQuarterScreenUp(this, this.getActivity()); -// sleep(2000); - - if(findCount< maxStep){ - Log.e(TAG, "inputListView size=" + inputListView.size()+"," + "findCount=" + findCount); - TouchUtils.dragQuarterScreenUp(this, this.getActivity()); - sleep(1000); - myGroup = (ViewGroup) (activity2.findViewById(R.id.container)); - inputListView = ViewUtil.findViewWithText(myGroup, - childCaseName); - sleep(1000); - findCount ++ ; - - }else { - while(topCount>0){ - if(inputListView.size() == 0){ - TouchUtils.dragQuarterScreenDown(this, this.getActivity()); - sleep(1000); - myGroup = (ViewGroup) (activity2.findViewById(R.id.container)); - inputListView = ViewUtil.findViewWithText(myGroup, - childCaseName); - sleep(1000); - } - topCount --; - } - assertNotSame("Child Case Not Found!!",0 ,inputListView.size()); - break; - } - } -// else{ -// Log.e(TAG, "inputListView size==" + -// inputListView.size() + "findCount=="+findCount); -// -// } - - - if (inputListView.size() != 0) { - final WXTextView inputTypeView = (WXTextView) inputListView.get(0); - stepCountFlag ++; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - Log.e(TAG, "find veiw text=" + inputTypeView.getText().toString()); - inputTypeView.requestFocus(); - inputTypeView.performClick(); - Log.e(TAG, "child clcik!"); - } - }); - - sleep(1000); - } - - TreeMap testStepMap = new TreeMap(); - - testStepMap = (TreeMap)testMap.clone(); - testStepMap.remove("testComponet"); - testStepMap.remove("testChildCaseInit"); - - Iterator iter = testStepMap.entrySet().iterator(); - Log.e(TAG,"testStepMap keyset==" + testStepMap.keySet().toString()); - - while (iter.hasNext()) { - stepCountFlag ++; - TreeMap.Entry entry = (TreeMap.Entry) iter.next(); - Object testStepkey = entry.getKey(); - Log.e(TAG,"testStepMap testStepkey==" + testStepkey.toString()); - - Object testStepValue = entry.getValue(); - Log.e(TAG,"testStepMap testStepValue==" + testStepValue.toString()); - - testStep(testStepkey, testStepValue); - - } - - break; - } - } - - } - - private void findChildCase(final WXTextView inputView ){ - // handle if the view is INVISIBLE then scrollToBottom -// int maxStep = 10; - int scrollCount = 0; - if(inputView.getVisibility() == View.INVISIBLE){ - while(scrollCount 0 && (inputView.getVisibility() == View.INVISIBLE)){ - TouchUtils.dragQuarterScreenDown(this, this.getActivity()); - sleep(1000); - topCount--; - } - } - - } - - public void afterTest(ArrayList viewList){ - Log.e(TAG,"===do test after==="); - sleep(2000); - - } - - public void testStep(Object testStepkey, Object testStepValue) { - - TreeMap testSteps = (TreeMap) testStepValue; - Iterator iter = testSteps.entrySet().iterator(); - Log.e(TAG,"testSteps keyset==" + testSteps.keySet().toString()); - - while (iter.hasNext()) { - TreeMap.Entry entry = (TreeMap.Entry) iter.next(); - Object testStepAction = entry.getKey(); - Log.e(TAG,"testSteps testStepAction==" + testStepAction.toString()); - - Object testStepActionValue = entry.getValue(); - Log.e(TAG,"testSteps testStepActionValue==" + testStepActionValue.toString()); - - testAction(testStepAction, testStepActionValue); - } - - } - - private void testAction(Object testStepAction, Object testStepActionValue){ - String action = (String)testStepAction; - String actionValue = (String)testStepActionValue; - - if(action.equals("click")){ - doClickAction(action, actionValue); - } -// sleep(1000); - - if(action.equals("screenshot")){ - doScreenShotAction(actionValue); - } - - - } - private void doScreenShotAction (String name){ - screenShot(name); - sleep(1000); - } - private void doClickAction(String action, String actionValue){ - setActivity(WXPageActivity.wxPageActivityInstance); - Activity activity2 = getActivity(); - Log.e(TAG, "activity2 = " + activity2.toString()); - - ViewGroup myGroup = (ViewGroup) (activity2.findViewById(R.id.container)); - ArrayList inputListView11 = new ArrayList(); - sleep(2000); - - inputListView11 = ViewUtil.getAllChildViews(myGroup); - - for (View view : inputListView11) { - if (view instanceof WXTextView) { - String text = ((WXTextView) view).getText().toString(); - Log.e(TAG, " doClickAction text===" + text); - if (text.contains(actionValue)) { - float viewY= view.getY(); - float viewX = view.getX(); - Log.e(TAG,"viewY==" + viewY); - Log.e(TAG,"viewX==" + viewX); - - final View clickView = view; - mInstrumentation.runOnMainSync(new Runnable() { - @Override - public void run() { - Log.e(TAG, "find veiw text=" + ((WXTextView)clickView).getText().toString()); - clickView.requestFocus(); - clickView.performClick(); - Log.e(TAG, "child clcik!"); - } - }); -// if (view instanceof EditText){ -// view.performClick(); -// }else { -// TouchUtils.clickView(this, view); -// } - sleep(1000); - Log.e(TAG,"clickView==" ); - - -// final FrameLayout aView = (FrameLayout) view.getParent(); -// TouchUtils.clickView(this, aView); -// Log.e(TAG,"clickaView==" ); -// -// mInstrumentation.runOnMainSync(new Runnable() { -// @Override -// public void run() { -// aView.requestFocus(); -// aView.performClick(); -// Log.e(TAG, "do click "); -// -// } -// }); - - break; - } - } - - } - } - - public void setViewGroup(ViewGroup viewGroup) { - this.mViewGroup = viewGroup; - } - - /** - * sleep - */ - public void sleep(long time){ - try { - Thread.sleep(time); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - - /** - * snapshot - */ - public void screenShot(String shotName) { - try { - ScreenShot.shoot(getActivity(), shotName); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void setTestMap(TreeMap testStepMap) { - this.testMap = testStepMap; - } - - public TreeMap getTestMap(){ - return testMap; - } - - /** - * - */ - public void setUpToFindComponet(String targert){ - int max = 60; - int count = 0; - while(mCaseListIndexView.size() == 0){ - - if (count < max){ - TouchUtils.dragQuarterScreenUp(this, this.getActivity()); - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, targert); - count ++; - } - else{ - break; - } - - } - } - - public void addAllTargetView(String target){ - int max = 6; - int count =0 ; - while (count < max){ - TouchUtils.dragQuarterScreenUp(this, this.getActivity()); - sleep(500); - mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container); - mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, target); - mCaseListIndexView.addAll(mCaseListIndexView); - count ++; - } - } -} diff --git a/android/playground/app/src/androidTest/java/com/alibaba/weex/util/ViewUtil.java b/android/playground/app/src/androidTest/java/com/alibaba/weex/util/ViewUtil.java deleted file mode 100644 index c87e871fb8..0000000000 --- a/android/playground/app/src/androidTest/java/com/alibaba/weex/util/ViewUtil.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.util; - -import android.app.Activity; -import android.content.Context; -import android.support.v7.widget.RecyclerView; -import android.test.InstrumentationTestCase; -import android.test.TouchUtils; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.EditText; -import android.widget.ScrollView; - -import com.taobao.weex.ui.view.WXTextView; - -import java.util.ArrayList; - -/** - * Created by admin on 16/3/29. - */ -public class ViewUtil{ - - - public static ArrayList findViewWithText(ViewGroup vg, String text){ - ArrayList out = new ArrayList(); - if(null != vg && !TextUtils.isEmpty(text)){ - vg.findViewsWithText(out, text, View.FIND_VIEWS_WITH_TEXT); - } - - if(out.size() == 0){ - ArrayList wxTextViewList = new ArrayList(); - wxTextViewList = getAllChildViews((View)vg); - for (View wxText:wxTextViewList) { - if(wxText instanceof WXTextView){ - String value = ((WXTextView) wxText).getText().toString(); - if(value.contains(text)){ - Log.e("TestFlow", "find target:" + text + "|" + "actualVale=" + value); - out.add(wxText); - } - - } - } - } - return out; - } - - public static ArrayList getAllChildViews(Activity activity) { - View view = activity.getWindow().getDecorView(); - return getAllChildViews(view); - } - - public static ArrayList getAllChildViews(View view) { - ArrayList allchildren = new ArrayList(); - if (view instanceof ViewGroup) { - ViewGroup vp = (ViewGroup) view; - for (int i = 0; i < vp.getChildCount(); i++) { - View viewchild = vp.getChildAt(i); - allchildren.add(viewchild); - allchildren.addAll(getAllChildViews(viewchild)); - } - - } - return allchildren; - } - - public static ArrayList getAllChildViews(ViewGroup view) { - ArrayList allchildren = new ArrayList(); - - ViewGroup vp = view; - for (int i = 0; i < vp.getChildCount(); i++) { - View viewchild = vp.getChildAt(i); - allchildren.add(viewchild); - allchildren.addAll(getAllChildViews(viewchild)); - } - - return allchildren; - } - - /** - * scroller or RecyclerView - * @param view - * @return - */ - public static View getFirstChildScrollableView(ViewGroup view){ - - - View viewResult = null; - ArrayList allViews = new ArrayList(); - if(null != view){ - - allViews= getAllChildViews(view); - for(View eachView : allViews){ - if(eachView instanceof ScrollView - || eachView instanceof RecyclerView){ - - return eachView; - - } - } - } - return viewResult; - } - - - public static ArrayList getAllEditTextViews(View view) { - ArrayList allchildren = new ArrayList(); - if (view instanceof ViewGroup) { - ViewGroup vp = (ViewGroup) view; - for (int i = 0; i < vp.getChildCount(); i++) { - View viewchild = vp.getChildAt(i); - if(viewchild instanceof EditText){ - allchildren.add(viewchild); - allchildren.addAll(getAllChildViews(viewchild)); - } - } - } - return allchildren; - } - - /* - * 获取控件宽 - */ - public static int getWidth(View view) - { - int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); - int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); - view.measure(w, h); - return (view.getMeasuredWidth()); - } - /* - * 获取控件高 - */ - public static int getHeight(View view) - { - int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); - int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); - view.measure(w, h); - return (view.getMeasuredHeight()); - } - - public static void dragQuarterScreenUp(InstrumentationTestCase test, Activity activity) { - - TouchUtils.dragQuarterScreenUp(test, activity); - } - - -} diff --git a/android/playground/app/src/main/AndroidManifest.xml b/android/playground/app/src/main/AndroidManifest.xml deleted file mode 100755 index de7c3dbc1f..0000000000 --- a/android/playground/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/android/playground/app/src/main/assets/about.weex.js b/android/playground/app/src/main/assets/about.weex.js deleted file mode 100644 index c685047033..0000000000 --- a/android/playground/app/src/main/assets/about.weex.js +++ /dev/null @@ -1,3309 +0,0 @@ -// { "framework": "Vue" } -"use weex:vue"; - -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 38); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(10); -var IE8_DOM_DEFINE = __webpack_require__(30); -var toPrimitive = __webpack_require__(17); -var dP = Object.defineProperty; - -exports.f = __webpack_require__(2) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(11)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(1); -var createDesc = __webpack_require__(12); -module.exports = __webpack_require__(2) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(51); -var defined = __webpack_require__(15); -module.exports = function (it) { - return IObject(defined(it)); -}; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(21)('wks'); -var uid = __webpack_require__(13); -var Symbol = __webpack_require__(0).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - -module.exports = true; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; - - -/***/ }), -/* 12 */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports) { - -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports) { - -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; - - -/***/ }), -/* 15 */ -/***/ (function(module, exports) { - -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(4); -var ctx = __webpack_require__(47); -var hide = __webpack_require__(5); -var has = __webpack_require__(3); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var IS_WRAP = type & $export.W; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE]; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; - var key, own, out; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if (own && has(exports, key)) continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function (C) { - var F = function (a, b, c) { - if (this instanceof C) { - switch (arguments.length) { - case 0: return new C(); - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if (IS_PROTO) { - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); - } - } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(8); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(34); -var enumBugKeys = __webpack_require__(22); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(21)('keys'); -var uid = __webpack_require__(13); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(4); -var global = __webpack_require__(0); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __webpack_require__(9) ? 'pure' : 'global', - copyright: '© 2018 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), -/* 22 */ -/***/ (function(module, exports) { - -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -var def = __webpack_require__(1).f; -var has = __webpack_require__(3); -var TAG = __webpack_require__(7)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -exports.f = __webpack_require__(7); - - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(4); -var LIBRARY = __webpack_require__(9); -var wksExt = __webpack_require__(24); -var defineProperty = __webpack_require__(1).f; -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; - - -/***/ }), -/* 26 */ -/***/ (function(module, exports) { - -exports.f = {}.propertyIsEnumerable; - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.fetchNews = exports.fetchDoodle = exports.readAbout = exports.saveAbout = exports.fetchAbout = exports.readGuide = exports.saveGuide = exports.fetchGuide = exports.readExamples = exports.saveExamples = exports.fetchExamples = undefined; - -var _stringify = __webpack_require__(41); - -var _stringify2 = _interopRequireDefault(_stringify); - -var _typeof2 = __webpack_require__(28); - -var _typeof3 = _interopRequireDefault(_typeof2); - -exports.createLink = createLink; -exports.createURL = createURL; -exports.i18n = i18n; -exports.parseLanguage = parseLanguage; -exports.setLanguage = setLanguage; -exports.clearStorageLanguage = clearStorageLanguage; -exports.getStorageLanguage = getStorageLanguage; -exports.getSystemLanguage = getSystemLanguage; -exports.getLanguage = getLanguage; -exports.jumpTo = jumpTo; -exports.viewSource = viewSource; -exports.setTitleBar = setTitleBar; -exports.fetchData = fetchData; -exports.saveData = saveData; -exports.readData = readData; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var stream = weex.requireModule('stream'); -var storage = weex.requireModule('storage'); -var navigator = weex.requireModule('navigator'); - -var encoder = typeof encodeURIComponent === 'function' ? encodeURIComponent : typeof encodeURI === 'function' ? encodeURI : function (x) { - return x; -}; - -function encodeParams(params) { - if (!params || (typeof params === 'undefined' ? 'undefined' : (0, _typeof3.default)(params)) !== 'object') { - return ''; - } - var array = []; - for (var key in params) { - if (typeof params[key] === 'string') { - array.push(encoder(key) + '=' + encoder(params[key])); - } - } - return array.join('&'); -} - -function createLink(name) { - var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var args = []; - for (var key in params) { - if (typeof params[key] === 'string') { - args.push(encoder(key) + '=' + encoder(params[key])); - } - } - if (WXEnvironment.platform === 'Web') { - args.unshift('page=' + name + '.web.js'); - return '/?' + args.join('&'); - } - var base = getBaseURL(); - return '' + base + name + '.weex.js' + (args.length ? '?' + args.join('&') : ''); -} - -function createURL(hash, params) { - if (WXEnvironment.platform === 'Web') { - return 'http://dotwe.org/raw/htmlVue/' + hash; - } - var url = 'http://dotwe.org/raw/dist/' + hash + '.bundle.wx'; - var paramString = encodeParams(params); - if (WXEnvironment.appName === 'TB') { - return url + '?_wx_tpl=' + url + '&' + paramString; - } - if (WXEnvironment.appName === 'WXSample') { - return url + '?' + paramString; - } - return url + '?wx_weex=true&' + paramString; -} - -function getBaseURL() { - var bundleUrl = weex.config.bundleUrl; - var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/') >= 0; - var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0; - if (isAndroidAssets) { - return 'file://assets/'; - } else if (isiOSAssets) { - // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/ - // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/ - return bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1); - } - return ''; -} - -function i18n(text, language) { - if (typeof text === 'string') { - return text; - } - if (Object.prototype.toString.call(text) === '[object Object]') { - var lang = this && this.language || language || 'en'; - return text[lang]; - } -} - -var supportedLanguageRE = /(en|zh)\_?\w*/i; -function parseLanguage(language) { - var match = supportedLanguageRE.exec(language + ''); - if (match && match[1]) { - return match[1]; - } - return ''; -} - -function setLanguage(language) { - var lang = parseLanguage(language); - if (lang) { - storage.setItem('WEEX_PLAYGROUND_LANGUAGE', lang); - } -} - -function clearStorageLanguage() { - storage.removeItem('WEEX_PLAYGROUND_LANGUAGE'); -} - -function getStorageLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - try { - storage.getItem('WEEX_PLAYGROUND_LANGUAGE', function (event) { - if (event.result === 'success') { - var lang = parseLanguage(event.data); - lang ? done(lang) : fail(); - } else { - fail(event); - } - }); - } catch (err) { - fail(err); - } -} - -function getSystemLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - if (WXEnvironment.platform.toLowerCase() === 'web') { - var lang = parseLanguage(window.navigator.language); - lang ? done(lang) : fail(); - } else { - try { - var locale = weex.requireModule('locale') || weex.requireModule('local'); - var useSync = false; - var resSync = locale.getLanguage(function (language) { - var lang = parseLanguage(language); - if (lang) { - useSync || done(lang); - } else { - fail(); - } - }); - var langSync = parseLanguage(resSync); - if (langSync) { - useSync = true; - done(langSync); - } else { - fail(); - } - } catch (e) { - fail(e); - } - } -} - -var languageRE = /.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i; -function getLanguage() { - var done = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {}; - - var match = languageRE.exec(weex.config.bundleUrl || ''); - var lang = parseLanguage(match && match[1]); - if (lang) { - done(lang); - } else { - getStorageLanguage(done, function () { - getSystemLanguage(done, function () { - done('en'); - }); - }); - } -} - -function jumpTo(url, title, lang) { - getLanguage(function (language) { - storage.setItem('CURRENT_DOCUMENT_URL', i18n(url, lang || language)); - navigator.push({ - url: createURL('bf0305c14b511b24a4e616f53926432b', { language: language, title: i18n(title, lang || language) }) - }); - }); -} - -function viewSource(hash) { - getLanguage(function (language) { - navigator.push({ - url: createURL('f6ce29faf686eabc38b410bf4828fa5a', { hash: hash, language: language }) - }); - }); -} - -function setTitleBar(options) { - var language = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en'; - - if (Object.prototype.toString.apply(options) !== '[object Object]') { - return; - } - var titleBar = weex.requireModule('titleBar'); - if (options.color || options.backgroundColor) { - try { - titleBar.setStyle({ - foregroundColor: options.color || '#FFFFFF', - backgroundColor: options.backgroundColor || '#00B4FF' - }); - } catch (e) {} - } - var title = i18n(options.title, language); - if (title) { - try { - titleBar.setTitle(title); - } catch (e) {} - } -} - -var storageKeys = { - doodle: 'WEEX_PLAYGROUND_APP_DOODLE', - guide: 'WEEX_PLAYGROUND_APP_GUIDE', - examples: 'WEEX_PLAYGROUND_APP_EXAMPLES', - news: 'WEEX_PLAYGROUND_APP_NEWS', - about: 'WEEX_PLAYGROUND_APP_ABOUT' -}; -function fetchData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - try { - stream.fetch({ - url: 'http://dotwe.org/query/weex-playground-app', - method: 'post', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - type: 'json', - body: 'name=' + name - }, function (res) { - if (res.ok && res.data && res.data.success) { - done(res.data); - } else { - fail(res); - } - }); - } catch (err) { - fail(err); - } -} -function saveData(name, result) { - var key = storageKeys[name]; - if (!key) return; - if (result && (typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) === 'object') { - result.timestamp = Date.now(); - storage.setItem(key, (0, _stringify2.default)(result)); - } -} -function readData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - var key = storageKeys[name]; - if (!key) return fail(); - try { - storage.getItem(key, function (event) { - if (event.result === 'success') { - var result = JSON.parse(event.data); - if (result && Array.isArray(result[name])) { - return done(result[name]); - } - } - fail(event); - }); - } catch (e) { - fail(e); - } -} - -var fetchExamples = exports.fetchExamples = function fetchExamples() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return fetchData.apply(undefined, ['examples'].concat(args)); -}; -var saveExamples = exports.saveExamples = function saveExamples() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - return saveData.apply(undefined, ['examples'].concat(args)); -}; -var readExamples = exports.readExamples = function readExamples() { - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - return readData.apply(undefined, ['examples'].concat(args)); -}; - -var fetchGuide = exports.fetchGuide = function fetchGuide() { - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - return fetchData.apply(undefined, ['guide'].concat(args)); -}; -var saveGuide = exports.saveGuide = function saveGuide() { - for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - - return saveData.apply(undefined, ['guide'].concat(args)); -}; -var readGuide = exports.readGuide = function readGuide() { - for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - return readData.apply(undefined, ['guide'].concat(args)); -}; - -var fetchAbout = exports.fetchAbout = function fetchAbout() { - for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - - return fetchData.apply(undefined, ['about'].concat(args)); -}; -var saveAbout = exports.saveAbout = function saveAbout() { - for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - - return saveData.apply(undefined, ['about'].concat(args)); -}; -var readAbout = exports.readAbout = function readAbout() { - for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - - return readData.apply(undefined, ['about'].concat(args)); -}; - -var fetchDoodle = exports.fetchDoodle = function fetchDoodle() { - for (var _len10 = arguments.length, args = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - - return fetchData.apply(undefined, ['doodle'].concat(args)); -}; -var fetchNews = exports.fetchNews = function fetchNews() { - for (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - - return fetchData.apply(undefined, ['news'].concat(args)); -}; - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _iterator = __webpack_require__(43); - -var _iterator2 = _interopRequireDefault(_iterator); - -var _symbol = __webpack_require__(62); - -var _symbol2 = _interopRequireDefault(_symbol); - -var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { - return typeof obj === "undefined" ? "undefined" : _typeof(obj); -} : function (obj) { - return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); -}; - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__(9); -var $export = __webpack_require__(16); -var redefine = __webpack_require__(32); -var hide = __webpack_require__(5); -var Iterators = __webpack_require__(18); -var $iterCreate = __webpack_require__(49); -var setToStringTag = __webpack_require__(23); -var getPrototypeOf = __webpack_require__(56); -var ITERATOR = __webpack_require__(7)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = !__webpack_require__(2) && !__webpack_require__(11)(function () { - return Object.defineProperty(__webpack_require__(31)('div'), 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -var document = __webpack_require__(0).document; -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; -}; - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(5); - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__(10); -var dPs = __webpack_require__(50); -var enumBugKeys = __webpack_require__(22); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__(31)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(55).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(3); -var toIObject = __webpack_require__(6); -var arrayIndexOf = __webpack_require__(52)(false); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), -/* 35 */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 36 */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = __webpack_require__(34); -var hiddenKeys = __webpack_require__(22).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(39); - -var _About = __webpack_require__(73); - -var _About2 = _interopRequireDefault(_About); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// show title bar -try { - var titleBar = weex.requireModule('titleBar'); - titleBar.showTitleBar(true); -} catch (e) {} - -_About2.default.el = '#root'; -new Vue(_About2.default); - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _mixin = __webpack_require__(40); - -var _mixin2 = _interopRequireDefault(_mixin); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// use shared mixins -Vue.mixin(_mixin2.default); - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _index = __webpack_require__(27); - -var utils = _interopRequireWildcard(_index); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var storage = weex.requireModule('storage'); - -exports.default = { - filters: { - i18n: utils.i18n, - url: utils.createURL, - link: utils.createLink - }, - methods: { - createLink: utils.createLink, - createURL: utils.createURL, - i18n: utils.i18n, - getLanguage: utils.getLanguage, - fetchData: utils.fetchData, - saveData: utils.saveData, - readData: utils.readData, - jumpTo: utils.jumpTo - }, - created: function created() { - var _this = this; - - // get and set language - utils.getLanguage(function (language) { - _this.language = language; - utils.setTitleBar(_this.navigationBarOptions, language); - }); - - // listen to the language change event - var channel = new BroadcastChannel('language'); - channel.onmessage = function (event) { - if (event.data && event.data.language) { - _this.language = event.data.language; - } - }; - }, - beforeDestroy: function beforeDestroy() { - storage.removeItem('CURRENT_DOCUMENT_URL'); - storage.removeItem('CURRENT_SOURCE_HASH'); - } -}; - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(42), __esModule: true }; - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(4); -var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); -module.exports = function stringify(it) { // eslint-disable-line no-unused-vars - return $JSON.stringify.apply($JSON, arguments); -}; - - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(44), __esModule: true }; - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(45); -__webpack_require__(58); -module.exports = __webpack_require__(24).f('iterator'); - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $at = __webpack_require__(46)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -__webpack_require__(29)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(14); -var defined = __webpack_require__(15); -// true -> String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__(48); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var create = __webpack_require__(33); -var descriptor = __webpack_require__(12); -var setToStringTag = __webpack_require__(23); -var IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(5)(IteratorPrototype, __webpack_require__(7)('iterator'), function () { return this; }); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(1); -var anObject = __webpack_require__(10); -var getKeys = __webpack_require__(19); - -module.exports = __webpack_require__(2) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; -}; - - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(35); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; - - -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__(6); -var toLength = __webpack_require__(53); -var toAbsoluteIndex = __webpack_require__(54); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - - -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.15 ToLength -var toInteger = __webpack_require__(14); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(14); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -var document = __webpack_require__(0).document; -module.exports = document && document.documentElement; - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(3); -var toObject = __webpack_require__(57); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.13 ToObject(argument) -var defined = __webpack_require__(15); -module.exports = function (it) { - return Object(defined(it)); -}; - - -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(59); -var global = __webpack_require__(0); -var hide = __webpack_require__(5); -var Iterators = __webpack_require__(18); -var TO_STRING_TAG = __webpack_require__(7)('toStringTag'); - -var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + - 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + - 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + - 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + - 'TextTrackList,TouchList').split(','); - -for (var i = 0; i < DOMIterables.length; i++) { - var NAME = DOMIterables[i]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = Iterators.Array; -} - - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var addToUnscopables = __webpack_require__(60); -var step = __webpack_require__(61); -var Iterators = __webpack_require__(18); -var toIObject = __webpack_require__(6); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __webpack_require__(29)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - - -/***/ }), -/* 60 */ -/***/ (function(module, exports) { - -module.exports = function () { /* empty */ }; - - -/***/ }), -/* 61 */ -/***/ (function(module, exports) { - -module.exports = function (done, value) { - return { value: value, done: !!done }; -}; - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(63), __esModule: true }; - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(64); -__webpack_require__(70); -__webpack_require__(71); -__webpack_require__(72); -module.exports = __webpack_require__(4).Symbol; - - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// ECMAScript 6 symbols shim -var global = __webpack_require__(0); -var has = __webpack_require__(3); -var DESCRIPTORS = __webpack_require__(2); -var $export = __webpack_require__(16); -var redefine = __webpack_require__(32); -var META = __webpack_require__(65).KEY; -var $fails = __webpack_require__(11); -var shared = __webpack_require__(21); -var setToStringTag = __webpack_require__(23); -var uid = __webpack_require__(13); -var wks = __webpack_require__(7); -var wksExt = __webpack_require__(24); -var wksDefine = __webpack_require__(25); -var enumKeys = __webpack_require__(66); -var isArray = __webpack_require__(67); -var anObject = __webpack_require__(10); -var isObject = __webpack_require__(8); -var toIObject = __webpack_require__(6); -var toPrimitive = __webpack_require__(17); -var createDesc = __webpack_require__(12); -var _create = __webpack_require__(33); -var gOPNExt = __webpack_require__(68); -var $GOPD = __webpack_require__(69); -var $DP = __webpack_require__(1); -var $keys = __webpack_require__(19); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function'; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; - -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; - -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __webpack_require__(37).f = gOPNExt.f = $getOwnPropertyNames; - __webpack_require__(26).f = $propertyIsEnumerable; - __webpack_require__(36).f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !__webpack_require__(9)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); - -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); - -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); - -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); - -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(5)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -var META = __webpack_require__(13)('meta'); -var isObject = __webpack_require__(8); -var has = __webpack_require__(3); -var setDesc = __webpack_require__(1).f; -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !__webpack_require__(11)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -// all enumerable object keys, includes symbols -var getKeys = __webpack_require__(19); -var gOPS = __webpack_require__(36); -var pIE = __webpack_require__(26); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.2.2 IsArray(argument) -var cof = __webpack_require__(35); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __webpack_require__(6); -var gOPN = __webpack_require__(37).f; -var toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -var pIE = __webpack_require__(26); -var createDesc = __webpack_require__(12); -var toIObject = __webpack_require__(6); -var toPrimitive = __webpack_require__(17); -var has = __webpack_require__(3); -var IE8_DOM_DEFINE = __webpack_require__(30); -var gOPD = Object.getOwnPropertyDescriptor; - -exports.f = __webpack_require__(2) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; - - -/***/ }), -/* 70 */ -/***/ (function(module, exports) { - - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(25)('asyncIterator'); - - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(25)('observable'); - - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(74) -) - -/* script */ -__vue_exports__ = __webpack_require__(75) - -/* template */ -var __vue_template__ = __webpack_require__(86) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/pages/about/About.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-13681c5e" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 74 */ -/***/ (function(module, exports) { - -module.exports = { - "list": { - "backgroundColor": "#F5F5F5" - }, - "item": { - "paddingTop": "30", - "paddingBottom": "30", - "paddingLeft": "60", - "paddingRight": "40", - "borderBottomWidth": "1", - "borderBottomStyle": "solid", - "borderBottomColor": "#E6E6E6", - "backgroundColor": "#FFFFFF", - "flexDirection": "row", - "justifyContent": "space-between", - "alignItems": "center" - }, - "item-1": { - "borderTopWidth": "1", - "borderTopStyle": "solid", - "borderTopColor": "#E6E6E6" - }, - "item-title": { - "fontSize": "42", - "color": "#606060" - }, - "item-value": { - "fontSize": "36", - "color": "#999999" - }, - "arrow-icon": { - "width": "22", - "height": "36" - }, - "copyright": { - "marginTop": "50", - "paddingBottom": "20" - }, - "copyright-text": { - "fontSize": "22", - "color": "#A0A0A0", - "textAlign": "center" - } -} - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _utils = __webpack_require__(27); - -var utils = _interopRequireWildcard(_utils); - -var _mock = __webpack_require__(76); - -var _AppInfoCard = __webpack_require__(82); - -var _AppInfoCard2 = _interopRequireDefault(_AppInfoCard); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var picker = weex.requireModule('picker'); // -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -var channel = new BroadcastChannel('language'); -exports.default = { - components: { AppInfoCard: _AppInfoCard2.default }, - data: function data() { - return { - language: 'en', - followSystemLanguage: true, - navigationBarOptions: { - title: { - zh: '关于 Weex', - en: 'About Weex' - } - }, - dict: { - FOLLOW_SYSTEM: { en: 'Follow System', zh: '跟随系统' }, - LANGUAGE: { en: 'Language', zh: '语言' } - }, - aboutApp: _mock.aboutApp - }; - }, - - watch: { - language: function language() { - channel.postMessage({ language: this.language }); - } - }, - computed: { - languageName: function languageName() { - if (this.followSystemLanguage) { - return this.i18n(this.dict.FOLLOW_SYSTEM); - } - return this.i18n({ en: 'English', zh: '简体中文' }); - } - }, - created: function created() { - var _this = this; - - utils.readAbout(function (about) { - _this.aboutApp = about; - }); - utils.getStorageLanguage(function (lang) { - return _this.followSystemLanguage = false; - }, function () { - return _this.followSystemLanguage = true; - }); - }, - - methods: { - chooseLanguage: function chooseLanguage() { - var _this2 = this; - - var options = ['', 'en', 'zh']; - var index = this.followSystemLanguage ? 0 : options.indexOf(this.language); - picker.pick({ - index: index, - items: [this.i18n(this.dict.FOLLOW_SYSTEM), 'English', '中文'] - }, function (_ref) { - var result = _ref.result, - data = _ref.data; - - if (result === 'success') { - var select = options[data]; - if (select) { - _this2.followSystemLanguage = false; - _this2.language = select; - utils.setLanguage(select); - } else { - _this2.followSystemLanguage = true; - utils.clearStorageLanguage(); - utils.getSystemLanguage(function (lang) { - _this2.language = lang; - }, function (error) { - _this2.language = 'en'; - }); - } - } - }); - } - } -}; - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.aboutApp = exports.guideLessons = undefined; - -var _sliders = __webpack_require__(77); - -var _sliders2 = _interopRequireDefault(_sliders); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var guideLessons = exports.guideLessons = _sliders2.default; - -var aboutApp = exports.aboutApp = [{ - title: { en: 'Weex Official Website', zh: 'Weex 官方网站' }, - link: { - en: 'http://weex-project.io/', - zh: 'http://weex-project.io/cn/' - } -}, { - title: { en: 'Apache Software Foundation', zh: 'Apache 软件基金会' }, - link: 'http://www.apache.org/' -}, { - title: { en: 'Who is using Weex', zh: '谁在使用 Weex' }, - link: { - en: 'http://weex-project.io/who-is-using-weex.html', - zh: 'http://weex-project.io/cn/who-is-using-weex.html' - } -}, { - title: { en: 'Contribution', zh: '参与贡献' }, - link: { - en: 'http://weex-project.io/guide/contributing.html', - zh: 'http://weex-project.io/cn/guide/contributing.html' - } -}, { - title: { en: 'Release Note', zh: '版本变更' }, - link: { - en: 'http://weex-project.io/releasenote.html', - zh: 'http://weex-project.io/cn/releasenote.html' - } -}, { - title: { en: 'FAQ', zh: '常见问题' }, - link: { - en: 'http://weex-project.io/faq.html', - zh: 'http://weex-project.io/cn/faq.html' - } -}]; - -/***/ }), -/* 77 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _defineProperty2 = __webpack_require__(78); - -var _defineProperty3 = _interopRequireDefault(_defineProperty2); - -var _ref, _ref2, _ref3; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = [{ - subject: 'weex', - mainColor: '#00B4FF', - title: { zh: '学习 Weex', en: 'Learn Weex' }, - poster: 'https://gw.alicdn.com/tfs/TB1.8Vdl9_I8KJjy0FoXXaFnVXa-3799-1615.png', - posterBg: '#E5F7FF', - posterStyle: { - width: '650px', - height: '304px' - }, - copyright: { - zh: '来自 http://weex-project.io/cn/', - en: 'From http://weex-project.io/' - }, - lessons: [{ - title: { - zh: '快速入门', - en: 'Getting Started' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/index.html', - en: 'http://weex-project.io/guide/index.html' - } - }, { - title: { - zh: '工作原理', - en: 'How it Works' - }, - docLink: { - zh: 'http://weex-project.io/cn/wiki/index.html', - en: 'http://weex-project.io/wiki/index.html' - } - }, { - title: { - zh: 'Weex 中的前端框架', - en: 'Front-end Frameworks' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/front-end-frameworks.html', - en: 'http://weex-project.io/guide/front-end-frameworks.html' - } - }, { - title: { - zh: '在 Weex 中使用 Vue.js', - en: 'Use Vue.js on Weex' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/use-vue.html', - en: 'http://weex-project.io/guide/use-vue.html' - } - }, { - title: { - zh: '与 Web 平台的差异', - en: 'Platform difference with Web' - }, - docLink: { - zh: 'http://weex-project.io/cn/wiki/platform-difference.html', - en: 'http://weex-project.io/wiki/platform-difference.html' - } - }, { - title: { - zh: '集成 Weex 到已有应用', - en: 'Integrate to Your App' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/integrate-to-your-app.html', - en: 'http://weex-project.io/guide/integrate-to-your-app.html' - } - }, { - title: { - zh: '搭建开发环境', - en: 'Set Up Dev Environment' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/set-up-env.html', - en: 'http://weex-project.io/guide/set-up-env.html' - } - }, { - title: { - zh: '通用样式', - en: 'Common Styles' - }, - docLink: { - zh: 'http://weex-project.io/cn/wiki/common-styles.html', - en: 'http://weex-project.io/wiki/common-styles.html' - } - }, { - title: { - zh: '通用事件', - en: 'Common Events' - }, - docLink: { - zh: 'http://weex-project.io/cn/wiki/common-events.html', - en: 'http://weex-project.io/wiki/common-events.html' - } - }, { - title: { - zh: 'Weex 实例变量', - en: 'The "weex" Variable' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/weex-variable.html', - en: 'http://weex-project.io/references/weex-variable.html' - } - }, { - title: { - zh: '内置组件', - en: 'Built-in Components' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/components/index.html', - en: 'http://weex-project.io/references/components/index.html' - } - }, { - title: { - zh: '内置模块', - en: 'Built-in Modules' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/modules/index.html', - en: 'http://weex-project.io/references/modules/index.html' - } - }, { - title: { - zh: '扩展 Android 组件/模块', - en: 'Extend Android' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/extend-android.html', - en: 'http://weex-project.io/guide/extend-android.html' - } - }, { - title: { - zh: '扩展 iOS 组件/模块', - en: 'Extend iOS' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/extend-ios.html', - en: 'http://weex-project.io/guide/extend-ios.html' - } - }, { - title: { - zh: '使用 weex-toolkit', - en: 'Use weex-toolkit' - }, - docLink: { - zh: 'http://weex-project.io/cn/tools/toolkit.html', - en: 'http://weex-project.io/tools/toolkit.html' - } - }, { - title: { - zh: '如何参与贡献', - en: 'How to Contribute' - }, - docLink: { - zh: 'http://weex-project.io/cn/contributing.html', - en: 'http://weex-project.io/contributing.html' - } - }] -}, (_ref = { - subject: 'vue', - mainColor: '#42b983', - title: { zh: '学习 Vue.js', en: 'Learn Vue.js' }, - poster: 'https://gw.alicdn.com/tfs/TB1J_uKcMMPMeJjy1XdXXasrXXa-400-400.png', - posterBg: '#E7FBF2', - posterStyle: { - width: '300px', - height: '300px' - } -}, (0, _defineProperty3.default)(_ref, 'title', { - zh: '学习 Vue.js', - en: 'Learn Vue.js' -}), (0, _defineProperty3.default)(_ref, 'copyright', { - zh: '来自 https://cn.vuejs.org/', - en: 'From https://vuejs.org/' -}), (0, _defineProperty3.default)(_ref, 'lessons', [{ - title: { - zh: 'Vue.js 是什么?', - en: 'What is Vue.js ?' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/index.html', - en: 'https://vuejs.org/v2/guide/index.html' - } -}, { - title: { - zh: '单文件组件', - en: 'Single File Components' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/single-file-components.html', - en: 'https://vuejs.org/v2/guide/single-file-components.html' - } -}, { - title: { - zh: '模板语法', - en: 'Template Syntax' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/syntax.html', - en: 'https://vuejs.org/v2/guide/syntax.html' - } -}, { - title: { - zh: 'Class 与 Style 绑定', - en: 'Class and Style Bindings' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/class-and-style.html', - en: 'https://vuejs.org/v2/guide/class-and-style.html' - } -}, { - title: { - zh: '条件渲染', - en: 'Conditional Rendering' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/conditional.html', - en: 'https://vuejs.org/v2/guide/conditional.html' - } -}, { - title: { - zh: '列表渲染', - en: 'List Rendering' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/list.html', - en: 'https://vuejs.org/v2/guide/list.html' - } -}, { - title: { - zh: '事件处理', - en: 'Event Handling' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/events.html', - en: 'https://vuejs.org/v2/guide/events.html' - } -}, { - title: { - zh: '表单输入绑定', - en: 'Form Input Bindings' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/forms.html', - en: 'https://vuejs.org/v2/guide/forms.html' - } -}, { - title: { - zh: 'Vue 实例', - en: 'The Vue Instance' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/instance.html', - en: 'https://vuejs.org/v2/guide/instance.html' - } -}, { - title: { - zh: '在 Weex 中使用 Vue.js', - en: 'Use Vue.js on Weex' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/use-vue.html', - en: 'http://weex-project.io/guide/use-vue.html' - } -}, { - title: { - zh: '混合(mixins)', - en: 'Mixins' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/mixins.html', - en: 'https://vuejs.org/v2/guide/mixins.html' - } -}, { - title: { - zh: '过滤器(filters)', - en: 'Filters' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/filters.html', - en: 'https://vuejs.org/v2/guide/filters.html' - } -}, { - title: { - zh: '插件(plugins)', - en: 'Plugins' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/plugins.html', - en: 'https://vuejs.org/v2/guide/plugins.html' - } -}, { - title: { - zh: '自定义指令', - en: 'Custom Directives' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/custom-directive.html', - en: 'https://vuejs.org/v2/guide/custom-directive.html' - } -}, { - title: { - zh: '状态管理', - en: 'State Management' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/state-management.html', - en: 'https://vuejs.org/v2/guide/state-management.html' - } -}, { - title: { - zh: '深入响应式原理', - en: 'Reactivity in Depth' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/reactivity.html', - en: 'https://vuejs.org/v2/guide/reactivity.html' - } -}, { - title: { - zh: '渲染函数', - en: 'Render Functions' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/render-function.html', - en: 'https://vuejs.org/v2/guide/render-function.html' - } -}, { - title: { - zh: 'TypeScript 支持', - en: 'TypeScript Support' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/typescript.html', - en: 'https://vuejs.org/v2/guide/typescript.html' - } -}, { - title: 'API', - docLink: { - zh: 'https://cn.vuejs.org/v2/api/', - en: 'https://vuejs.org/v2/api/' - } -}]), _ref), (_ref2 = { - subject: 'javascript', - mainColor: '#F7BD2A', - title: { zh: '学习 Javascript', en: 'Learn Javascript' }, - poster: 'https://gw.alicdn.com/tfs/TB1bT98hMoQMeJjy0FpXXcTxpXa-1500-700.png', - posterBg: '#FAF3EB', - posterStyle: { - width: '750px', - height: '350px' - } -}, (0, _defineProperty3.default)(_ref2, 'title', { - zh: '学习 Javascript', - en: 'Learn Javascript' -}), (0, _defineProperty3.default)(_ref2, 'copyright', { - zh: '来自 MDN (Mozilla Developer Network)', - en: 'From MDN (Mozilla Developer Network)' -}), (0, _defineProperty3.default)(_ref2, 'lessons', [{ - title: { - zh: '什么是 Javascript ?', - en: 'What is Javascript ?' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/What_is_JavaScript', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript' - } -}, { - title: { - zh: 'JavaScript基础', - en: 'JavaScript basics' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web/JavaScript_basics', - en: 'https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics' - } -}, { - title: { - zh: '重新介绍 JavaScript', - en: 'A re-introduction to JavaScript' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript' - } -}, { - title: { - zh: '语法和数据类型', - en: 'Grammar and types' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope' - } -}, { - title: { - zh: '数据类型和数据结构', - en: 'Data types and data structures' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures' - } -}, { - title: { - zh: '变量', - en: 'Variables' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Variables', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Variables' - } -}, { - title: { - zh: '数字和操作符', - en: 'Numbers and operators' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Math', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Math' - } -}, { - title: { - zh: '字符串', - en: 'Handling text' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Strings', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Strings' - } -}, { - title: { - zh: '常用的 String 方法', - en: 'Useful string methods' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Useful_string_methods', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Useful_string_methods' - } -}, { - title: { - zh: '数组', - en: 'Arrays' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Arrays', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Arrays' - } -}, { - title: { - zh: '函数', - en: 'Functions' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions' - } -}, { - title: { - zh: 'JavaScript 对象基础', - en: 'JavaScript object basics' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Basics', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Basics' - } -}, { - title: { - zh: '使用对象', - en: 'Working with objects' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects' - } -}, { - title: { - zh: '使用 JSON 数据', - en: 'Working with JSON' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/JSON', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON' - } -}, { - title: { - zh: '对象模型的细节', - en: 'Details of the object model' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Details_of_the_Object_Model', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model' - } -}, { - title: { - zh: '对象原型', - en: 'Object prototypes' - }, - docLink: { - zh: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes', - en: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Object_prototypes' - } -}, { - title: { - zh: 'JavaScript 中的继承', - en: 'Inheritance in JavaScript' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Inheritance', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Inheritance' - } -}, { - title: { - zh: '继承与原型链', - en: 'Inheritance and the prototype chain' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain' - } -}, { - title: { - zh: '严格模式', - en: 'Strict mode' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode' - } -}, { - title: { - zh: '内存管理', - en: 'Memory Management' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management' - } -}, { - title: { - zh: '并发模型与事件循环', - en: 'Concurrency model and Event Loop' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop' - } -}, { - // title: { - // zh: '索引集合类', - // en: 'Indexed collections' - // }, - // docLink: { - // zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Indexed_collections', - // en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections' - // } - // }, { - // title: { - // zh: '带键的集合', - // en: 'Keyed collections' - // }, - // docLink: { - // zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Keyed_collections', - // en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Keyed_collections' - // } - // }, { - title: { - zh: 'JavaScript 标准库', - en: 'Standard built-in objects' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects' - } -}]), _ref2), (_ref3 = { - subject: 'css', - mainColor: '#F56FC6', - title: { zh: '学习 CSS', en: 'Learn CSS' }, - titleColor: '#FFFFFF', - poster: 'https://gw.alicdn.com/tfs/TB1k6anhMMPMeJjy1XdXXasrXXa-427-190.jpg', - posterBg: '#FFA2DE', - posterStyle: { - width: '517px', - height: '230px' - } -}, (0, _defineProperty3.default)(_ref3, 'title', { - zh: '学习 CSS', - en: 'Learn CSS' -}), (0, _defineProperty3.default)(_ref3, 'copyright', { - zh: '来自 MDN (Mozilla Developer Network)', - en: 'From MDN (Mozilla Developer Network)' -}), (0, _defineProperty3.default)(_ref3, 'lessons', [{ - title: { - zh: '什么是 CSS ?', - en: 'What is CSS ?' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Getting_started/What_is_CSS', - en: 'https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/What_is_CSS' - } -}, { - title: { - zh: 'CSS 语法', - en: 'CSS Syntax' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Syntax', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Syntax' - } -}, { - title: { - zh: 'CSS的值和单位', - en: 'CSS Values and Units' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Values_and_units', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Values_and_units' - } -}, { - title: { - zh: '盒模型', - en: 'The Box Model' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Box_model', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Box_model' - } -}, { - title: { - zh: '盒模型的属性', - en: 'Box Model Properties' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Box_Model', - en: 'https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model' - } -}, { - title: { - zh: '定位布局', - en: 'Positioning' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/%E5%AE%9A%E4%BD%8Dx', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/positioning' - } -}, { - title: { - zh: '定位布局的属性', - en: 'CSS Positioning' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Positioning', - en: 'https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning' - } -}, { - title: { - zh: 'Flexbox 布局', - en: 'Flexbox Layout' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Flexbox', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox' - } -}, { - title: { - zh: 'Flexbox 布局的属性', - en: 'CSS Flexible Box Layout' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout', - en: 'https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout' - } -}, { - title: { - zh: 'Weex 中的通用样式', - en: 'Common Styles in Weex' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/common-style.html', - en: 'http://weex-project.io/references/common-style.html' - } -}, { - title: { - zh: 'Weex 中的文本样式', - en: 'Text Styles in Weex' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/text-style.html', - en: 'http://weex-project.io/references/text-style.html' - } -}, { - title: { - zh: '块格式化上下文(BFC)', - en: 'Block Formatting Context' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Block_formatting_context', - en: 'https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context' - } -}, { - title: { - zh: '视觉格式化模型', - en: 'Visual Formatting Model' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Visual_formatting_model', - en: 'https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Visual_formatting_model' - } -}, { - title: 'CSS Reference', - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/CSS/Reference', - en: 'https://developer.mozilla.org/en-US/docs/Web/CSS/Reference' - } -}]), _ref3)]; - -/***/ }), -/* 78 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _defineProperty = __webpack_require__(79); - -var _defineProperty2 = _interopRequireDefault(_defineProperty); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (obj, key, value) { - if (key in obj) { - (0, _defineProperty2.default)(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -}; - -/***/ }), -/* 79 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(80), __esModule: true }; - -/***/ }), -/* 80 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(81); -var $Object = __webpack_require__(4).Object; -module.exports = function defineProperty(it, key, desc) { - return $Object.defineProperty(it, key, desc); -}; - - -/***/ }), -/* 81 */ -/***/ (function(module, exports, __webpack_require__) { - -var $export = __webpack_require__(16); -// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) -$export($export.S + $export.F * !__webpack_require__(2), 'Object', { defineProperty: __webpack_require__(1).f }); - - -/***/ }), -/* 82 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(83) -) - -/* script */ -__vue_exports__ = __webpack_require__(84) - -/* template */ -var __vue_template__ = __webpack_require__(85) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/components/AppInfoCard.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-0ba305b6" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 83 */ -/***/ (function(module, exports) { - -module.exports = { - "card": { - "width": "650", - "justifyContent": "center", - "borderWidth": "1", - "borderColor": "#DDDDDD", - "borderRadius": "20", - "paddingTop": "50", - "paddingRight": "50", - "paddingBottom": "50", - "paddingLeft": "50", - "marginTop": "50", - "marginRight": "50", - "marginBottom": "50", - "marginLeft": "50", - "backgroundColor": "#FFFFFF" - }, - "title": { - "fontSize": "34", - "textAlign": "center", - "color": "#808080", - "marginBottom": "20" - }, - "version": { - "fontSize": "80", - "textAlign": "center", - "marginBottom": "30", - "color": "#323232" - }, - "group": { - "marginTop": "10", - "flexDirection": "row" - }, - "label": { - "width": "260", - "fontSize": "32", - "textAlign": "right", - "color": "#888888" - }, - "value": { - "width": "230", - "paddingLeft": "50", - "fontSize": "32", - "color": "#414141" - } -} - -/***/ }), -/* 84 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof2 = __webpack_require__(28); - -var _typeof3 = _interopRequireDefault(_typeof2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -var invalid = '- invalid -'; -var unknown = '- - -'; -exports.default = { - data: function data() { - return { - version: invalid, - jsfmVersion: invalid, - platform: invalid, - osVersion: invalid, - deviceModel: invalid - }; - }, - created: function created() { - try { - this.jsfmVersion = getJSFMVersion(); - } catch (e) { - this.jsfmVersion = '≤ 0.15.6'; - } - if ((typeof WXEnvironment === 'undefined' ? 'undefined' : (0, _typeof3.default)(WXEnvironment)) === 'object') { - this.version = WXEnvironment.weexVersion || unknown; - this.platform = WXEnvironment.platform || unknown; - this.osVersion = WXEnvironment.osVersion || unknown; - this.deviceModel = WXEnvironment.deviceModel || unknown; - } - } -}; - -/***/ }), -/* 85 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: ["card"] - }, [_c('div', { - staticClass: ["info"] - }, [_c('text', { - staticClass: ["title"] - }, [_vm._v("Weex SDK Version")]), _c('text', { - staticClass: ["version"] - }, [_vm._v(_vm._s(_vm.version))]), _c('div', { - staticClass: ["group"] - }, [_c('text', { - staticClass: ["label"] - }, [_vm._v("JS Framework")]), _c('text', { - staticClass: ["value"] - }, [_vm._v(_vm._s(_vm.jsfmVersion))])]), _c('div', { - staticClass: ["group"] - }, [_c('text', { - staticClass: ["label"] - }, [_vm._v("platform")]), _c('text', { - staticClass: ["value"] - }, [_vm._v(_vm._s(_vm.platform))])]), _c('div', { - staticClass: ["group"] - }, [_c('text', { - staticClass: ["label"] - }, [_vm._v("osVersion")]), _c('text', { - staticClass: ["value"] - }, [_vm._v(_vm._s(_vm.osVersion))])]), _c('div', { - staticClass: ["group"] - }, [_c('text', { - staticClass: ["label"] - }, [_vm._v("deviceModel")]), _c('text', { - staticClass: ["value"] - }, [_vm._v(_vm._s(_vm.deviceModel))])])])]) -},staticRenderFns: []} -module.exports.render._withStripped = true - -/***/ }), -/* 86 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('list', { - staticClass: ["list"] - }, [_c('cell', { - appendAsTree: true, - attrs: { - "append": "tree" - } - }, [_c('app-info-card')], 1), _vm._l((_vm.aboutApp), function(item, i) { - return _c('cell', { - key: i, - class: ['item-cell', ("item-cell-" + (i+1))], - appendAsTree: true, - attrs: { - "append": "tree" - } - }, [(item.link) ? _c('div', { - class: ['item', ("item-" + (i+1))], - on: { - "click": function($event) { - _vm.jumpTo(item.link, _vm.i18n(item.title)) - } - } - }, [_c('text', { - staticClass: ["item-title"] - }, [_vm._v(_vm._s(_vm.i18n(item.title)))]), _c('image', { - staticClass: ["arrow-icon"], - attrs: { - "src": "https://gw.alicdn.com/tfs/TB1iL2fkLDH8KJjy1XcXXcpdXXa-32-49.png" - } - })]) : _vm._e()]) - }), _c('cell', { - staticClass: ["item-cell"], - appendAsTree: true, - attrs: { - "append": "tree" - } - }, [_c('div', { - staticClass: ["item"], - on: { - "click": _vm.chooseLanguage - } - }, [_c('text', { - staticClass: ["item-title"] - }, [_vm._v(_vm._s(_vm.i18n(_vm.dict.LANGUAGE)))]), _c('text', { - staticClass: ["item-value"] - }, [_vm._v(_vm._s(_vm.languageName))])])]), _vm._m(0)], 2) -},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('cell', { - appendAsTree: true, - attrs: { - "append": "tree" - } - }, [_c('div', { - staticClass: ["copyright"] - }, [_c('text', { - staticClass: ["copyright-text"] - }, [_vm._v("Copyright(c) 2017 The Apache Software Foundation.")]), _c('text', { - staticClass: ["copyright-text"] - }, [_vm._v("Licensed under the Apache License, Version 2.0")])])]) -}]} -module.exports.render._withStripped = true - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/android/playground/app/src/main/assets/examples.weex.js b/android/playground/app/src/main/assets/examples.weex.js deleted file mode 100644 index 68d81c8530..0000000000 --- a/android/playground/app/src/main/assets/examples.weex.js +++ /dev/null @@ -1,2598 +0,0 @@ -// { "framework": "Vue" } -"use weex:vue"; - -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 37); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 1 */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(3); -var createDesc = __webpack_require__(12); -module.exports = __webpack_require__(4) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(10); -var IE8_DOM_DEFINE = __webpack_require__(29); -var toPrimitive = __webpack_require__(17); -var dP = Object.defineProperty; - -exports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(11)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(51); -var defined = __webpack_require__(16); -module.exports = function (it) { - return IObject(defined(it)); -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(21)('wks'); -var uid = __webpack_require__(13); -var Symbol = __webpack_require__(0).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - -module.exports = true; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; - - -/***/ }), -/* 12 */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports) { - -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.fetchNews = exports.fetchDoodle = exports.readAbout = exports.saveAbout = exports.fetchAbout = exports.readGuide = exports.saveGuide = exports.fetchGuide = exports.readExamples = exports.saveExamples = exports.fetchExamples = undefined; - -var _stringify = __webpack_require__(40); - -var _stringify2 = _interopRequireDefault(_stringify); - -var _typeof2 = __webpack_require__(42); - -var _typeof3 = _interopRequireDefault(_typeof2); - -exports.createLink = createLink; -exports.createURL = createURL; -exports.i18n = i18n; -exports.parseLanguage = parseLanguage; -exports.setLanguage = setLanguage; -exports.clearStorageLanguage = clearStorageLanguage; -exports.getStorageLanguage = getStorageLanguage; -exports.getSystemLanguage = getSystemLanguage; -exports.getLanguage = getLanguage; -exports.jumpTo = jumpTo; -exports.viewSource = viewSource; -exports.setTitleBar = setTitleBar; -exports.fetchData = fetchData; -exports.saveData = saveData; -exports.readData = readData; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var stream = weex.requireModule('stream'); -var storage = weex.requireModule('storage'); -var navigator = weex.requireModule('navigator'); - -var encoder = typeof encodeURIComponent === 'function' ? encodeURIComponent : typeof encodeURI === 'function' ? encodeURI : function (x) { - return x; -}; - -function encodeParams(params) { - if (!params || (typeof params === 'undefined' ? 'undefined' : (0, _typeof3.default)(params)) !== 'object') { - return ''; - } - var array = []; - for (var key in params) { - if (typeof params[key] === 'string') { - array.push(encoder(key) + '=' + encoder(params[key])); - } - } - return array.join('&'); -} - -function createLink(name) { - var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var args = []; - for (var key in params) { - if (typeof params[key] === 'string') { - args.push(encoder(key) + '=' + encoder(params[key])); - } - } - if (WXEnvironment.platform === 'Web') { - args.unshift('page=' + name + '.web.js'); - return '/?' + args.join('&'); - } - var base = getBaseURL(); - return '' + base + name + '.weex.js' + (args.length ? '?' + args.join('&') : ''); -} - -function createURL(hash, params) { - if (WXEnvironment.platform === 'Web') { - return 'http://dotwe.org/raw/htmlVue/' + hash; - } - var url = 'http://dotwe.org/raw/dist/' + hash + '.bundle.wx'; - var paramString = encodeParams(params); - if (WXEnvironment.appName === 'TB') { - return url + '?_wx_tpl=' + url + '&' + paramString; - } - if (WXEnvironment.appName === 'WXSample') { - return url + '?' + paramString; - } - return url + '?wx_weex=true&' + paramString; -} - -function getBaseURL() { - var bundleUrl = weex.config.bundleUrl; - var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/') >= 0; - var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0; - if (isAndroidAssets) { - return 'file://assets/'; - } else if (isiOSAssets) { - // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/ - // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/ - return bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1); - } - return ''; -} - -function i18n(text, language) { - if (typeof text === 'string') { - return text; - } - if (Object.prototype.toString.call(text) === '[object Object]') { - var lang = this && this.language || language || 'en'; - return text[lang]; - } -} - -var supportedLanguageRE = /(en|zh)\_?\w*/i; -function parseLanguage(language) { - var match = supportedLanguageRE.exec(language + ''); - if (match && match[1]) { - return match[1]; - } - return ''; -} - -function setLanguage(language) { - var lang = parseLanguage(language); - if (lang) { - storage.setItem('WEEX_PLAYGROUND_LANGUAGE', lang); - } -} - -function clearStorageLanguage() { - storage.removeItem('WEEX_PLAYGROUND_LANGUAGE'); -} - -function getStorageLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - try { - storage.getItem('WEEX_PLAYGROUND_LANGUAGE', function (event) { - if (event.result === 'success') { - var lang = parseLanguage(event.data); - lang ? done(lang) : fail(); - } else { - fail(event); - } - }); - } catch (err) { - fail(err); - } -} - -function getSystemLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - if (WXEnvironment.platform.toLowerCase() === 'web') { - var lang = parseLanguage(window.navigator.language); - lang ? done(lang) : fail(); - } else { - try { - var locale = weex.requireModule('locale') || weex.requireModule('local'); - var useSync = false; - var resSync = locale.getLanguage(function (language) { - var lang = parseLanguage(language); - if (lang) { - useSync || done(lang); - } else { - fail(); - } - }); - var langSync = parseLanguage(resSync); - if (langSync) { - useSync = true; - done(langSync); - } else { - fail(); - } - } catch (e) { - fail(e); - } - } -} - -var languageRE = /.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i; -function getLanguage() { - var done = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {}; - - var match = languageRE.exec(weex.config.bundleUrl || ''); - var lang = parseLanguage(match && match[1]); - if (lang) { - done(lang); - } else { - getStorageLanguage(done, function () { - getSystemLanguage(done, function () { - done('en'); - }); - }); - } -} - -function jumpTo(url, title, lang) { - getLanguage(function (language) { - storage.setItem('CURRENT_DOCUMENT_URL', i18n(url, lang || language)); - navigator.push({ - url: createURL('bf0305c14b511b24a4e616f53926432b', { language: language, title: i18n(title, lang || language) }) - }); - }); -} - -function viewSource(hash) { - getLanguage(function (language) { - navigator.push({ - url: createURL('f6ce29faf686eabc38b410bf4828fa5a', { hash: hash, language: language }) - }); - }); -} - -function setTitleBar(options) { - var language = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en'; - - if (Object.prototype.toString.apply(options) !== '[object Object]') { - return; - } - var titleBar = weex.requireModule('titleBar'); - if (options.color || options.backgroundColor) { - try { - titleBar.setStyle({ - foregroundColor: options.color || '#FFFFFF', - backgroundColor: options.backgroundColor || '#00B4FF' - }); - } catch (e) {} - } - var title = i18n(options.title, language); - if (title) { - try { - titleBar.setTitle(title); - } catch (e) {} - } -} - -var storageKeys = { - doodle: 'WEEX_PLAYGROUND_APP_DOODLE', - guide: 'WEEX_PLAYGROUND_APP_GUIDE', - examples: 'WEEX_PLAYGROUND_APP_EXAMPLES', - news: 'WEEX_PLAYGROUND_APP_NEWS', - about: 'WEEX_PLAYGROUND_APP_ABOUT' -}; -function fetchData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - try { - stream.fetch({ - url: 'http://dotwe.org/query/weex-playground-app', - method: 'post', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - type: 'json', - body: 'name=' + name - }, function (res) { - if (res.ok && res.data && res.data.success) { - done(res.data); - } else { - fail(res); - } - }); - } catch (err) { - fail(err); - } -} -function saveData(name, result) { - var key = storageKeys[name]; - if (!key) return; - if (result && (typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) === 'object') { - result.timestamp = Date.now(); - storage.setItem(key, (0, _stringify2.default)(result)); - } -} -function readData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - var key = storageKeys[name]; - if (!key) return fail(); - try { - storage.getItem(key, function (event) { - if (event.result === 'success') { - var result = JSON.parse(event.data); - if (result && Array.isArray(result[name])) { - return done(result[name]); - } - } - fail(event); - }); - } catch (e) { - fail(e); - } -} - -var fetchExamples = exports.fetchExamples = function fetchExamples() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return fetchData.apply(undefined, ['examples'].concat(args)); -}; -var saveExamples = exports.saveExamples = function saveExamples() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - return saveData.apply(undefined, ['examples'].concat(args)); -}; -var readExamples = exports.readExamples = function readExamples() { - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - return readData.apply(undefined, ['examples'].concat(args)); -}; - -var fetchGuide = exports.fetchGuide = function fetchGuide() { - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - return fetchData.apply(undefined, ['guide'].concat(args)); -}; -var saveGuide = exports.saveGuide = function saveGuide() { - for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - - return saveData.apply(undefined, ['guide'].concat(args)); -}; -var readGuide = exports.readGuide = function readGuide() { - for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - return readData.apply(undefined, ['guide'].concat(args)); -}; - -var fetchAbout = exports.fetchAbout = function fetchAbout() { - for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - - return fetchData.apply(undefined, ['about'].concat(args)); -}; -var saveAbout = exports.saveAbout = function saveAbout() { - for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - - return saveData.apply(undefined, ['about'].concat(args)); -}; -var readAbout = exports.readAbout = function readAbout() { - for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - - return readData.apply(undefined, ['about'].concat(args)); -}; - -var fetchDoodle = exports.fetchDoodle = function fetchDoodle() { - for (var _len10 = arguments.length, args = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - - return fetchData.apply(undefined, ['doodle'].concat(args)); -}; -var fetchNews = exports.fetchNews = function fetchNews() { - for (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - - return fetchData.apply(undefined, ['news'].concat(args)); -}; - -/***/ }), -/* 15 */ -/***/ (function(module, exports) { - -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; - - -/***/ }), -/* 16 */ -/***/ (function(module, exports) { - -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(8); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(33); -var enumBugKeys = __webpack_require__(22); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(21)('keys'); -var uid = __webpack_require__(13); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(7); -var global = __webpack_require__(0); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __webpack_require__(9) ? 'pure' : 'global', - copyright: '© 2018 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), -/* 22 */ -/***/ (function(module, exports) { - -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -var def = __webpack_require__(3).f; -var has = __webpack_require__(1); -var TAG = __webpack_require__(6)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -exports.f = __webpack_require__(6); - - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(7); -var LIBRARY = __webpack_require__(9); -var wksExt = __webpack_require__(24); -var defineProperty = __webpack_require__(3).f; -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; - - -/***/ }), -/* 26 */ -/***/ (function(module, exports) { - -exports.f = {}.propertyIsEnumerable; - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__(9); -var $export = __webpack_require__(28); -var redefine = __webpack_require__(31); -var hide = __webpack_require__(2); -var Iterators = __webpack_require__(18); -var $iterCreate = __webpack_require__(49); -var setToStringTag = __webpack_require__(23); -var getPrototypeOf = __webpack_require__(56); -var ITERATOR = __webpack_require__(6)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(7); -var ctx = __webpack_require__(47); -var hide = __webpack_require__(2); -var has = __webpack_require__(1); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var IS_WRAP = type & $export.W; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE]; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; - var key, own, out; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if (own && has(exports, key)) continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function (C) { - var F = function (a, b, c) { - if (this instanceof C) { - switch (arguments.length) { - case 0: return new C(); - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if (IS_PROTO) { - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); - } - } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = !__webpack_require__(4) && !__webpack_require__(11)(function () { - return Object.defineProperty(__webpack_require__(30)('div'), 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -var document = __webpack_require__(0).document; -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; -}; - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(2); - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__(10); -var dPs = __webpack_require__(50); -var enumBugKeys = __webpack_require__(22); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__(30)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(55).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(1); -var toIObject = __webpack_require__(5); -var arrayIndexOf = __webpack_require__(52)(false); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 35 */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = __webpack_require__(33); -var hiddenKeys = __webpack_require__(22).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(38); - -var _Examples = __webpack_require__(73); - -var _Examples2 = _interopRequireDefault(_Examples); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// show title bar -try { - var titleBar = weex.requireModule('titleBar'); - titleBar.showTitleBar(true); -} catch (e) {} - -_Examples2.default.el = '#root'; -new Vue(_Examples2.default); - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _mixin = __webpack_require__(39); - -var _mixin2 = _interopRequireDefault(_mixin); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// use shared mixins -Vue.mixin(_mixin2.default); - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _index = __webpack_require__(14); - -var utils = _interopRequireWildcard(_index); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var storage = weex.requireModule('storage'); - -exports.default = { - filters: { - i18n: utils.i18n, - url: utils.createURL, - link: utils.createLink - }, - methods: { - createLink: utils.createLink, - createURL: utils.createURL, - i18n: utils.i18n, - getLanguage: utils.getLanguage, - fetchData: utils.fetchData, - saveData: utils.saveData, - readData: utils.readData, - jumpTo: utils.jumpTo - }, - created: function created() { - var _this = this; - - // get and set language - utils.getLanguage(function (language) { - _this.language = language; - utils.setTitleBar(_this.navigationBarOptions, language); - }); - - // listen to the language change event - var channel = new BroadcastChannel('language'); - channel.onmessage = function (event) { - if (event.data && event.data.language) { - _this.language = event.data.language; - } - }; - }, - beforeDestroy: function beforeDestroy() { - storage.removeItem('CURRENT_DOCUMENT_URL'); - storage.removeItem('CURRENT_SOURCE_HASH'); - } -}; - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(41), __esModule: true }; - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(7); -var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); -module.exports = function stringify(it) { // eslint-disable-line no-unused-vars - return $JSON.stringify.apply($JSON, arguments); -}; - - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _iterator = __webpack_require__(43); - -var _iterator2 = _interopRequireDefault(_iterator); - -var _symbol = __webpack_require__(62); - -var _symbol2 = _interopRequireDefault(_symbol); - -var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { - return typeof obj === "undefined" ? "undefined" : _typeof(obj); -} : function (obj) { - return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); -}; - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(44), __esModule: true }; - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(45); -__webpack_require__(58); -module.exports = __webpack_require__(24).f('iterator'); - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $at = __webpack_require__(46)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -__webpack_require__(27)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(15); -var defined = __webpack_require__(16); -// true -> String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__(48); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var create = __webpack_require__(32); -var descriptor = __webpack_require__(12); -var setToStringTag = __webpack_require__(23); -var IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(2)(IteratorPrototype, __webpack_require__(6)('iterator'), function () { return this; }); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(3); -var anObject = __webpack_require__(10); -var getKeys = __webpack_require__(19); - -module.exports = __webpack_require__(4) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; -}; - - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(34); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; - - -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__(5); -var toLength = __webpack_require__(53); -var toAbsoluteIndex = __webpack_require__(54); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - - -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.15 ToLength -var toInteger = __webpack_require__(15); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(15); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -var document = __webpack_require__(0).document; -module.exports = document && document.documentElement; - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(1); -var toObject = __webpack_require__(57); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.13 ToObject(argument) -var defined = __webpack_require__(16); -module.exports = function (it) { - return Object(defined(it)); -}; - - -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(59); -var global = __webpack_require__(0); -var hide = __webpack_require__(2); -var Iterators = __webpack_require__(18); -var TO_STRING_TAG = __webpack_require__(6)('toStringTag'); - -var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + - 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + - 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + - 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + - 'TextTrackList,TouchList').split(','); - -for (var i = 0; i < DOMIterables.length; i++) { - var NAME = DOMIterables[i]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = Iterators.Array; -} - - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var addToUnscopables = __webpack_require__(60); -var step = __webpack_require__(61); -var Iterators = __webpack_require__(18); -var toIObject = __webpack_require__(5); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __webpack_require__(27)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - - -/***/ }), -/* 60 */ -/***/ (function(module, exports) { - -module.exports = function () { /* empty */ }; - - -/***/ }), -/* 61 */ -/***/ (function(module, exports) { - -module.exports = function (done, value) { - return { value: value, done: !!done }; -}; - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(63), __esModule: true }; - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(64); -__webpack_require__(70); -__webpack_require__(71); -__webpack_require__(72); -module.exports = __webpack_require__(7).Symbol; - - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// ECMAScript 6 symbols shim -var global = __webpack_require__(0); -var has = __webpack_require__(1); -var DESCRIPTORS = __webpack_require__(4); -var $export = __webpack_require__(28); -var redefine = __webpack_require__(31); -var META = __webpack_require__(65).KEY; -var $fails = __webpack_require__(11); -var shared = __webpack_require__(21); -var setToStringTag = __webpack_require__(23); -var uid = __webpack_require__(13); -var wks = __webpack_require__(6); -var wksExt = __webpack_require__(24); -var wksDefine = __webpack_require__(25); -var enumKeys = __webpack_require__(66); -var isArray = __webpack_require__(67); -var anObject = __webpack_require__(10); -var isObject = __webpack_require__(8); -var toIObject = __webpack_require__(5); -var toPrimitive = __webpack_require__(17); -var createDesc = __webpack_require__(12); -var _create = __webpack_require__(32); -var gOPNExt = __webpack_require__(68); -var $GOPD = __webpack_require__(69); -var $DP = __webpack_require__(3); -var $keys = __webpack_require__(19); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function'; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; - -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; - -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __webpack_require__(36).f = gOPNExt.f = $getOwnPropertyNames; - __webpack_require__(26).f = $propertyIsEnumerable; - __webpack_require__(35).f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !__webpack_require__(9)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); - -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); - -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); - -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); - -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(2)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -var META = __webpack_require__(13)('meta'); -var isObject = __webpack_require__(8); -var has = __webpack_require__(1); -var setDesc = __webpack_require__(3).f; -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !__webpack_require__(11)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -// all enumerable object keys, includes symbols -var getKeys = __webpack_require__(19); -var gOPS = __webpack_require__(35); -var pIE = __webpack_require__(26); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.2.2 IsArray(argument) -var cof = __webpack_require__(34); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __webpack_require__(5); -var gOPN = __webpack_require__(36).f; -var toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -var pIE = __webpack_require__(26); -var createDesc = __webpack_require__(12); -var toIObject = __webpack_require__(5); -var toPrimitive = __webpack_require__(17); -var has = __webpack_require__(1); -var IE8_DOM_DEFINE = __webpack_require__(29); -var gOPD = Object.getOwnPropertyDescriptor; - -exports.f = __webpack_require__(4) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; - - -/***/ }), -/* 70 */ -/***/ (function(module, exports) { - - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(25)('asyncIterator'); - - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(25)('observable'); - - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(74) -) - -/* script */ -__vue_exports__ = __webpack_require__(75) - -/* template */ -var __vue_template__ = __webpack_require__(80) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/pages/examples/Examples.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-694b6655" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 74 */ -/***/ (function(module, exports) { - -module.exports = { - "example-list": { - "width": "750", - "position": "absolute", - "top": 0, - "bottom": "100", - "backgroundColor": "#F5F5F5" - }, - "group-info": { - "backgroundColor": "#FFFFFF" - }, - "loading": { - "flex": 1, - "justifyContent": "center", - "alignItems": "center" - }, - "loading-text": { - "fontSize": "60", - "color": "#BBBBBB" - }, - "group-title": { - "width": "750", - "paddingTop": "20", - "paddingBottom": "35", - "fontSize": "40", - "textAlign": "center", - "color": "#00B4FF", - "backgroundImage": "linear-gradient(to bottom, #E3F5FB, #F9FEFF)" - }, - "group-desc": { - "fontSize": "28", - "color": "#999999", - "marginTop": "10", - "marginLeft": "30", - "marginRight": "40" - }, - "doc-link": { - "fontSize": "26", - "color": "rgba(0,189,255,0.6)", - "textAlign": "right", - "marginTop": "10", - "marginRight": "60", - "marginBottom": "20" - }, - "section": { - "paddingBottom": "30" - }, - "tabbar": { - "width": "750", - "position": "fixed", - "bottom": 0, - "height": "100", - "flexDirection": "row", - "justifyContent": "space-around", - "alignItems": "flex-end", - "backgroundColor": "#E6E6E6" - }, - "tab-cell": { - "width": "186", - "height": "100", - "borderTopWidth": "2", - "borderTopStyle": "solid", - "borderTopColor": "#DDDDDD", - "justifyContent": "center", - "backgroundColor": "#FCFCFC", - "transitionProperty": "backgroundColor", - "transitionDuration": 200 - }, - "@TRANSITION": { - "tab-cell": { - "property": "backgroundColor", - "duration": 200 - }, - "tab-name": { - "property": "color,fontSize", - "duration": 100 - } - }, - "active-tab-cell": { - "borderTopColor": "rgba(0,189,255,0.8)", - "backgroundColor": "#BDECFF" - }, - "tab-name": { - "textAlign": "center", - "color": "#666666", - "transitionProperty": "color,fontSize", - "transitionDuration": 100 - }, - "tab-name-zh": { - "fontSize": "36" - }, - "tab-name-en": { - "fontSize": "30" - }, - "active-tab-name-zh": { - "color": "#00B4FF", - "fontSize": "42", - "fontWeight": "bold" - }, - "active-tab-name-en": { - "color": "#00B4FF", - "fontSize": "30", - "fontWeight": "bold" - } -} - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _utils = __webpack_require__(14); - -var _ExampleScroller = __webpack_require__(76); - -var _ExampleScroller2 = _interopRequireDefault(_ExampleScroller); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// import getExamples from '../../examples' -// const exampleMap = getExamples({ scope: 'mobile', filterTODO: true }) -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -var exampleMap = []; -var useStorage = false; -exports.default = { - components: { ExampleScroller: _ExampleScroller2.default }, - data: function data() { - return { - navigationBarOptions: { - title: { - zh: '使用 Weex 的例子', - en: 'Weex Examples' - } - }, - examples: exampleMap, - showLoading: false, - language: 'en', - activeTab: 'component', - activeGroup: 'div', - dict: { - READ_MORE: { en: 'read more', zh: '查看更多' } - } - }; - }, - beforeCreate: function beforeCreate() { - var _this = this; - - // read examples from storage - (0, _utils.readExamples)(function (examples) { - _this.examples = examples; - if (WXEnvironment.platform.toLowerCase() !== 'web') { - useStorage = true; - } - }); - - // update examples to storage - (0, _utils.fetchExamples)(function (result) { - (0, _utils.saveExamples)(result); - if (!useStorage) { - _this.examples = result.examples; - } - }); - - setTimeout(function () { - _this.showLoading = true; - }, 400); - }, - - computed: { - tabs: function tabs() { - return this.examples.map(function (group) { - return { - type: group.type, - name: group.name - }; - }); - }, - currentTab: function currentTab() { - var _this2 = this; - - return this.examples.filter(function (tab) { - return tab.type === _this2.activeTab; - })[0]; - } - }, - methods: { - toggleTab: function toggleTab(tabType) { - this.activeTab = tabType; - this.activeGroup = this.currentTab.group[0].type; - } - } -}; - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(77) -) - -/* script */ -__vue_exports__ = __webpack_require__(78) - -/* template */ -var __vue_template__ = __webpack_require__(79) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/components/ExampleScroller.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-1f23e14a" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 77 */ -/***/ (function(module, exports) { - -module.exports = { - "scroller": { - "flexDirection": "row", - "backgroundColor": "#FDFDFD", - "paddingTop": "20", - "paddingRight": "20", - "paddingBottom": "20", - "paddingLeft": "20", - "height": "600" - }, - "example-box": { - "justifyContent": "space-between", - "alignItems": "center", - "paddingLeft": "6", - "paddingRight": "6", - "width": "310" - }, - "screenshot": { - "width": "270", - "height": "422", - "borderWidth": "1", - "borderColor": "#DDDDDD" - }, - "title": { - "height": "75", - "justifyContent": "center" - }, - "title-text": { - "fontSize": "32", - "textAlign": "center", - "color": "#606060", - "paddingTop": "10", - "paddingBottom": "10" - }, - "example-tips": { - "fontSize": "28", - "textAlign": "center", - "color": "#A5A5A5", - "paddingTop": "10", - "paddingBottom": "10" - } -} - -/***/ }), -/* 78 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _utils = __webpack_require__(14); - -exports.default = { - methods: { viewSource: _utils.viewSource }, - props: { - language: { - type: String, - default: 'en' - }, - examples: { - type: Array, - required: true - } - }, - data: function data() { - return { - VIEW_SOURCE: { - en: 'view source', - zh: '查看源码' - } - }; - } -}; // -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -/***/ }), -/* 79 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('scroller', { - staticClass: ["scroller"], - attrs: { - "scrollDirection": "horizontal" - } - }, _vm._l((_vm.examples), function(example, i) { - return _c('div', { - key: i, - staticClass: ["example-box"] - }, [_c('div', { - staticClass: ["title"] - }, [_c('text', { - staticClass: ["title-text"] - }, [_vm._v(_vm._s(_vm.i18n(example.title)))])]), _c('div', { - staticStyle: { - alignItems: "center" - } - }, [_c('a', { - attrs: { - "href": _vm._f("url")(_vm.i18n(example.hash)) - } - }, [_c('image', { - staticClass: ["screenshot"], - attrs: { - "src": _vm.i18n(example.screenshot) - } - })]), _c('text', { - staticClass: ["example-tips"], - on: { - "click": function($event) { - _vm.viewSource(_vm.i18n(example.hash)) - } - } - }, [_vm._v(_vm._s(_vm.i18n(_vm.VIEW_SOURCE)))])])]) - })) -},staticRenderFns: []} -module.exports.render._withStripped = true - -/***/ }), -/* 80 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: ["wrapper"] - }, [(_vm.examples && _vm.examples.length) ? _c('list', { - staticClass: ["example-list"] - }, [_vm._l((_vm.currentTab.group), function(exampleGroup) { - return [(exampleGroup && exampleGroup.title || exampleGroup.name) ? _c('cell', { - key: exampleGroup.type, - ref: exampleGroup.type, - refInFor: true, - staticClass: ["group-info"], - appendAsTree: true, - attrs: { - "append": "tree" - } - }, [_c('text', { - staticClass: ["group-title"] - }, [_vm._v(_vm._s(_vm.i18n(exampleGroup.title || exampleGroup.name)))]), (exampleGroup.desc) ? _c('text', { - staticClass: ["group-desc"] - }, [_vm._v(_vm._s(_vm.i18n(exampleGroup.desc)))]) : _vm._e(), (exampleGroup.desc && exampleGroup.docLink) ? _c('text', { - staticClass: ["doc-link"], - on: { - "click": function($event) { - _vm.jumpTo(_vm.i18n(exampleGroup.docLink)) - } - } - }, [_vm._v(_vm._s(_vm.i18n(_vm.dict.READ_MORE)) + " >>")]) : _vm._e()]) : _vm._e(), _c('cell', { - key: exampleGroup.type + '-examples', - staticClass: ["section"], - appendAsTree: true, - attrs: { - "append": "tree" - } - }, [_c('example-scroller', { - attrs: { - "language": _vm.language, - "examples": exampleGroup.examples - } - })], 1)] - })], 2) : (_vm.showLoading) ? _c('div', { - staticClass: ["loading"] - }, [_c('text', { - staticClass: ["loading-text"] - }, [_vm._v("loading ...")])]) : _vm._e(), (_vm.tabs && _vm.tabs.length) ? _c('div', { - staticClass: ["tabbar"] - }, _vm._l((_vm.tabs), function(tab) { - return _c('div', { - key: tab.type, - class: ['tab-cell', tab.type === _vm.activeTab ? 'active-tab-cell' : ''], - on: { - "click": function($event) { - _vm.toggleTab(tab.type) - } - } - }, [_c('text', { - class: [ - 'tab-name', - ("tab-name-" + _vm.language), - tab.type === _vm.activeTab ? ("active-tab-name-" + _vm.language) : '' - ] - }, [_vm._v(_vm._s(_vm.i18n(tab.name)))])]) - })) : _vm._e()]) -},staticRenderFns: []} -module.exports.render._withStripped = true - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/android/playground/app/src/main/assets/guide.weex.js b/android/playground/app/src/main/assets/guide.weex.js deleted file mode 100644 index aad4993e2a..0000000000 --- a/android/playground/app/src/main/assets/guide.weex.js +++ /dev/null @@ -1,3191 +0,0 @@ -// { "framework": "Vue" } -"use weex:vue"; - -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 37); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(10); -var IE8_DOM_DEFINE = __webpack_require__(29); -var toPrimitive = __webpack_require__(17); -var dP = Object.defineProperty; - -exports.f = __webpack_require__(2) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(11)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(1); -var createDesc = __webpack_require__(12); -module.exports = __webpack_require__(2) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(51); -var defined = __webpack_require__(15); -module.exports = function (it) { - return IObject(defined(it)); -}; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(21)('wks'); -var uid = __webpack_require__(13); -var Symbol = __webpack_require__(0).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - -module.exports = true; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; - - -/***/ }), -/* 12 */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports) { - -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports) { - -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; - - -/***/ }), -/* 15 */ -/***/ (function(module, exports) { - -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(4); -var ctx = __webpack_require__(47); -var hide = __webpack_require__(5); -var has = __webpack_require__(3); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var IS_WRAP = type & $export.W; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE]; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; - var key, own, out; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if (own && has(exports, key)) continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function (C) { - var F = function (a, b, c) { - if (this instanceof C) { - switch (arguments.length) { - case 0: return new C(); - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if (IS_PROTO) { - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); - } - } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(8); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(33); -var enumBugKeys = __webpack_require__(22); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(21)('keys'); -var uid = __webpack_require__(13); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(4); -var global = __webpack_require__(0); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __webpack_require__(9) ? 'pure' : 'global', - copyright: '© 2018 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), -/* 22 */ -/***/ (function(module, exports) { - -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -var def = __webpack_require__(1).f; -var has = __webpack_require__(3); -var TAG = __webpack_require__(7)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -exports.f = __webpack_require__(7); - - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(4); -var LIBRARY = __webpack_require__(9); -var wksExt = __webpack_require__(24); -var defineProperty = __webpack_require__(1).f; -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; - - -/***/ }), -/* 26 */ -/***/ (function(module, exports) { - -exports.f = {}.propertyIsEnumerable; - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.fetchNews = exports.fetchDoodle = exports.readAbout = exports.saveAbout = exports.fetchAbout = exports.readGuide = exports.saveGuide = exports.fetchGuide = exports.readExamples = exports.saveExamples = exports.fetchExamples = undefined; - -var _stringify = __webpack_require__(40); - -var _stringify2 = _interopRequireDefault(_stringify); - -var _typeof2 = __webpack_require__(42); - -var _typeof3 = _interopRequireDefault(_typeof2); - -exports.createLink = createLink; -exports.createURL = createURL; -exports.i18n = i18n; -exports.parseLanguage = parseLanguage; -exports.setLanguage = setLanguage; -exports.clearStorageLanguage = clearStorageLanguage; -exports.getStorageLanguage = getStorageLanguage; -exports.getSystemLanguage = getSystemLanguage; -exports.getLanguage = getLanguage; -exports.jumpTo = jumpTo; -exports.viewSource = viewSource; -exports.setTitleBar = setTitleBar; -exports.fetchData = fetchData; -exports.saveData = saveData; -exports.readData = readData; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var stream = weex.requireModule('stream'); -var storage = weex.requireModule('storage'); -var navigator = weex.requireModule('navigator'); - -var encoder = typeof encodeURIComponent === 'function' ? encodeURIComponent : typeof encodeURI === 'function' ? encodeURI : function (x) { - return x; -}; - -function encodeParams(params) { - if (!params || (typeof params === 'undefined' ? 'undefined' : (0, _typeof3.default)(params)) !== 'object') { - return ''; - } - var array = []; - for (var key in params) { - if (typeof params[key] === 'string') { - array.push(encoder(key) + '=' + encoder(params[key])); - } - } - return array.join('&'); -} - -function createLink(name) { - var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var args = []; - for (var key in params) { - if (typeof params[key] === 'string') { - args.push(encoder(key) + '=' + encoder(params[key])); - } - } - if (WXEnvironment.platform === 'Web') { - args.unshift('page=' + name + '.web.js'); - return '/?' + args.join('&'); - } - var base = getBaseURL(); - return '' + base + name + '.weex.js' + (args.length ? '?' + args.join('&') : ''); -} - -function createURL(hash, params) { - if (WXEnvironment.platform === 'Web') { - return 'http://dotwe.org/raw/htmlVue/' + hash; - } - var url = 'http://dotwe.org/raw/dist/' + hash + '.bundle.wx'; - var paramString = encodeParams(params); - if (WXEnvironment.appName === 'TB') { - return url + '?_wx_tpl=' + url + '&' + paramString; - } - if (WXEnvironment.appName === 'WXSample') { - return url + '?' + paramString; - } - return url + '?wx_weex=true&' + paramString; -} - -function getBaseURL() { - var bundleUrl = weex.config.bundleUrl; - var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/') >= 0; - var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0; - if (isAndroidAssets) { - return 'file://assets/'; - } else if (isiOSAssets) { - // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/ - // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/ - return bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1); - } - return ''; -} - -function i18n(text, language) { - if (typeof text === 'string') { - return text; - } - if (Object.prototype.toString.call(text) === '[object Object]') { - var lang = this && this.language || language || 'en'; - return text[lang]; - } -} - -var supportedLanguageRE = /(en|zh)\_?\w*/i; -function parseLanguage(language) { - var match = supportedLanguageRE.exec(language + ''); - if (match && match[1]) { - return match[1]; - } - return ''; -} - -function setLanguage(language) { - var lang = parseLanguage(language); - if (lang) { - storage.setItem('WEEX_PLAYGROUND_LANGUAGE', lang); - } -} - -function clearStorageLanguage() { - storage.removeItem('WEEX_PLAYGROUND_LANGUAGE'); -} - -function getStorageLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - try { - storage.getItem('WEEX_PLAYGROUND_LANGUAGE', function (event) { - if (event.result === 'success') { - var lang = parseLanguage(event.data); - lang ? done(lang) : fail(); - } else { - fail(event); - } - }); - } catch (err) { - fail(err); - } -} - -function getSystemLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - if (WXEnvironment.platform.toLowerCase() === 'web') { - var lang = parseLanguage(window.navigator.language); - lang ? done(lang) : fail(); - } else { - try { - var locale = weex.requireModule('locale') || weex.requireModule('local'); - var useSync = false; - var resSync = locale.getLanguage(function (language) { - var lang = parseLanguage(language); - if (lang) { - useSync || done(lang); - } else { - fail(); - } - }); - var langSync = parseLanguage(resSync); - if (langSync) { - useSync = true; - done(langSync); - } else { - fail(); - } - } catch (e) { - fail(e); - } - } -} - -var languageRE = /.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i; -function getLanguage() { - var done = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {}; - - var match = languageRE.exec(weex.config.bundleUrl || ''); - var lang = parseLanguage(match && match[1]); - if (lang) { - done(lang); - } else { - getStorageLanguage(done, function () { - getSystemLanguage(done, function () { - done('en'); - }); - }); - } -} - -function jumpTo(url, title, lang) { - getLanguage(function (language) { - storage.setItem('CURRENT_DOCUMENT_URL', i18n(url, lang || language)); - navigator.push({ - url: createURL('bf0305c14b511b24a4e616f53926432b', { language: language, title: i18n(title, lang || language) }) - }); - }); -} - -function viewSource(hash) { - getLanguage(function (language) { - navigator.push({ - url: createURL('f6ce29faf686eabc38b410bf4828fa5a', { hash: hash, language: language }) - }); - }); -} - -function setTitleBar(options) { - var language = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en'; - - if (Object.prototype.toString.apply(options) !== '[object Object]') { - return; - } - var titleBar = weex.requireModule('titleBar'); - if (options.color || options.backgroundColor) { - try { - titleBar.setStyle({ - foregroundColor: options.color || '#FFFFFF', - backgroundColor: options.backgroundColor || '#00B4FF' - }); - } catch (e) {} - } - var title = i18n(options.title, language); - if (title) { - try { - titleBar.setTitle(title); - } catch (e) {} - } -} - -var storageKeys = { - doodle: 'WEEX_PLAYGROUND_APP_DOODLE', - guide: 'WEEX_PLAYGROUND_APP_GUIDE', - examples: 'WEEX_PLAYGROUND_APP_EXAMPLES', - news: 'WEEX_PLAYGROUND_APP_NEWS', - about: 'WEEX_PLAYGROUND_APP_ABOUT' -}; -function fetchData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - try { - stream.fetch({ - url: 'http://dotwe.org/query/weex-playground-app', - method: 'post', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - type: 'json', - body: 'name=' + name - }, function (res) { - if (res.ok && res.data && res.data.success) { - done(res.data); - } else { - fail(res); - } - }); - } catch (err) { - fail(err); - } -} -function saveData(name, result) { - var key = storageKeys[name]; - if (!key) return; - if (result && (typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) === 'object') { - result.timestamp = Date.now(); - storage.setItem(key, (0, _stringify2.default)(result)); - } -} -function readData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - var key = storageKeys[name]; - if (!key) return fail(); - try { - storage.getItem(key, function (event) { - if (event.result === 'success') { - var result = JSON.parse(event.data); - if (result && Array.isArray(result[name])) { - return done(result[name]); - } - } - fail(event); - }); - } catch (e) { - fail(e); - } -} - -var fetchExamples = exports.fetchExamples = function fetchExamples() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return fetchData.apply(undefined, ['examples'].concat(args)); -}; -var saveExamples = exports.saveExamples = function saveExamples() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - return saveData.apply(undefined, ['examples'].concat(args)); -}; -var readExamples = exports.readExamples = function readExamples() { - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - return readData.apply(undefined, ['examples'].concat(args)); -}; - -var fetchGuide = exports.fetchGuide = function fetchGuide() { - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - return fetchData.apply(undefined, ['guide'].concat(args)); -}; -var saveGuide = exports.saveGuide = function saveGuide() { - for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - - return saveData.apply(undefined, ['guide'].concat(args)); -}; -var readGuide = exports.readGuide = function readGuide() { - for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - return readData.apply(undefined, ['guide'].concat(args)); -}; - -var fetchAbout = exports.fetchAbout = function fetchAbout() { - for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - - return fetchData.apply(undefined, ['about'].concat(args)); -}; -var saveAbout = exports.saveAbout = function saveAbout() { - for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - - return saveData.apply(undefined, ['about'].concat(args)); -}; -var readAbout = exports.readAbout = function readAbout() { - for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - - return readData.apply(undefined, ['about'].concat(args)); -}; - -var fetchDoodle = exports.fetchDoodle = function fetchDoodle() { - for (var _len10 = arguments.length, args = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - - return fetchData.apply(undefined, ['doodle'].concat(args)); -}; -var fetchNews = exports.fetchNews = function fetchNews() { - for (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - - return fetchData.apply(undefined, ['news'].concat(args)); -}; - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__(9); -var $export = __webpack_require__(16); -var redefine = __webpack_require__(31); -var hide = __webpack_require__(5); -var Iterators = __webpack_require__(18); -var $iterCreate = __webpack_require__(49); -var setToStringTag = __webpack_require__(23); -var getPrototypeOf = __webpack_require__(56); -var ITERATOR = __webpack_require__(7)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; - - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = !__webpack_require__(2) && !__webpack_require__(11)(function () { - return Object.defineProperty(__webpack_require__(30)('div'), 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -var document = __webpack_require__(0).document; -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; -}; - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(5); - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__(10); -var dPs = __webpack_require__(50); -var enumBugKeys = __webpack_require__(22); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__(30)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(55).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(3); -var toIObject = __webpack_require__(6); -var arrayIndexOf = __webpack_require__(52)(false); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 35 */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = __webpack_require__(33); -var hiddenKeys = __webpack_require__(22).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(38); - -var _Guide = __webpack_require__(73); - -var _Guide2 = _interopRequireDefault(_Guide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// show title bar -try { - var titleBar = weex.requireModule('titleBar'); - titleBar.showTitleBar(true); -} catch (e) {} - -_Guide2.default.el = '#root'; -new Vue(_Guide2.default); - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _mixin = __webpack_require__(39); - -var _mixin2 = _interopRequireDefault(_mixin); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// use shared mixins -Vue.mixin(_mixin2.default); - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _index = __webpack_require__(27); - -var utils = _interopRequireWildcard(_index); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var storage = weex.requireModule('storage'); - -exports.default = { - filters: { - i18n: utils.i18n, - url: utils.createURL, - link: utils.createLink - }, - methods: { - createLink: utils.createLink, - createURL: utils.createURL, - i18n: utils.i18n, - getLanguage: utils.getLanguage, - fetchData: utils.fetchData, - saveData: utils.saveData, - readData: utils.readData, - jumpTo: utils.jumpTo - }, - created: function created() { - var _this = this; - - // get and set language - utils.getLanguage(function (language) { - _this.language = language; - utils.setTitleBar(_this.navigationBarOptions, language); - }); - - // listen to the language change event - var channel = new BroadcastChannel('language'); - channel.onmessage = function (event) { - if (event.data && event.data.language) { - _this.language = event.data.language; - } - }; - }, - beforeDestroy: function beforeDestroy() { - storage.removeItem('CURRENT_DOCUMENT_URL'); - storage.removeItem('CURRENT_SOURCE_HASH'); - } -}; - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(41), __esModule: true }; - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(4); -var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); -module.exports = function stringify(it) { // eslint-disable-line no-unused-vars - return $JSON.stringify.apply($JSON, arguments); -}; - - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _iterator = __webpack_require__(43); - -var _iterator2 = _interopRequireDefault(_iterator); - -var _symbol = __webpack_require__(62); - -var _symbol2 = _interopRequireDefault(_symbol); - -var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { - return typeof obj === "undefined" ? "undefined" : _typeof(obj); -} : function (obj) { - return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); -}; - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(44), __esModule: true }; - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(45); -__webpack_require__(58); -module.exports = __webpack_require__(24).f('iterator'); - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $at = __webpack_require__(46)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -__webpack_require__(28)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(14); -var defined = __webpack_require__(15); -// true -> String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__(48); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var create = __webpack_require__(32); -var descriptor = __webpack_require__(12); -var setToStringTag = __webpack_require__(23); -var IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(5)(IteratorPrototype, __webpack_require__(7)('iterator'), function () { return this; }); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(1); -var anObject = __webpack_require__(10); -var getKeys = __webpack_require__(19); - -module.exports = __webpack_require__(2) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; -}; - - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(34); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; - - -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__(6); -var toLength = __webpack_require__(53); -var toAbsoluteIndex = __webpack_require__(54); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - - -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.15 ToLength -var toInteger = __webpack_require__(14); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(14); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -var document = __webpack_require__(0).document; -module.exports = document && document.documentElement; - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(3); -var toObject = __webpack_require__(57); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.13 ToObject(argument) -var defined = __webpack_require__(15); -module.exports = function (it) { - return Object(defined(it)); -}; - - -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(59); -var global = __webpack_require__(0); -var hide = __webpack_require__(5); -var Iterators = __webpack_require__(18); -var TO_STRING_TAG = __webpack_require__(7)('toStringTag'); - -var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + - 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + - 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + - 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + - 'TextTrackList,TouchList').split(','); - -for (var i = 0; i < DOMIterables.length; i++) { - var NAME = DOMIterables[i]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = Iterators.Array; -} - - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var addToUnscopables = __webpack_require__(60); -var step = __webpack_require__(61); -var Iterators = __webpack_require__(18); -var toIObject = __webpack_require__(6); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __webpack_require__(28)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - - -/***/ }), -/* 60 */ -/***/ (function(module, exports) { - -module.exports = function () { /* empty */ }; - - -/***/ }), -/* 61 */ -/***/ (function(module, exports) { - -module.exports = function (done, value) { - return { value: value, done: !!done }; -}; - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(63), __esModule: true }; - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(64); -__webpack_require__(70); -__webpack_require__(71); -__webpack_require__(72); -module.exports = __webpack_require__(4).Symbol; - - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// ECMAScript 6 symbols shim -var global = __webpack_require__(0); -var has = __webpack_require__(3); -var DESCRIPTORS = __webpack_require__(2); -var $export = __webpack_require__(16); -var redefine = __webpack_require__(31); -var META = __webpack_require__(65).KEY; -var $fails = __webpack_require__(11); -var shared = __webpack_require__(21); -var setToStringTag = __webpack_require__(23); -var uid = __webpack_require__(13); -var wks = __webpack_require__(7); -var wksExt = __webpack_require__(24); -var wksDefine = __webpack_require__(25); -var enumKeys = __webpack_require__(66); -var isArray = __webpack_require__(67); -var anObject = __webpack_require__(10); -var isObject = __webpack_require__(8); -var toIObject = __webpack_require__(6); -var toPrimitive = __webpack_require__(17); -var createDesc = __webpack_require__(12); -var _create = __webpack_require__(32); -var gOPNExt = __webpack_require__(68); -var $GOPD = __webpack_require__(69); -var $DP = __webpack_require__(1); -var $keys = __webpack_require__(19); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function'; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; - -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; - -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __webpack_require__(36).f = gOPNExt.f = $getOwnPropertyNames; - __webpack_require__(26).f = $propertyIsEnumerable; - __webpack_require__(35).f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !__webpack_require__(9)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); - -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); - -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); - -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); - -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(5)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -var META = __webpack_require__(13)('meta'); -var isObject = __webpack_require__(8); -var has = __webpack_require__(3); -var setDesc = __webpack_require__(1).f; -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !__webpack_require__(11)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -// all enumerable object keys, includes symbols -var getKeys = __webpack_require__(19); -var gOPS = __webpack_require__(35); -var pIE = __webpack_require__(26); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.2.2 IsArray(argument) -var cof = __webpack_require__(34); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __webpack_require__(6); -var gOPN = __webpack_require__(36).f; -var toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -var pIE = __webpack_require__(26); -var createDesc = __webpack_require__(12); -var toIObject = __webpack_require__(6); -var toPrimitive = __webpack_require__(17); -var has = __webpack_require__(3); -var IE8_DOM_DEFINE = __webpack_require__(29); -var gOPD = Object.getOwnPropertyDescriptor; - -exports.f = __webpack_require__(2) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; - - -/***/ }), -/* 70 */ -/***/ (function(module, exports) { - - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(25)('asyncIterator'); - - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(25)('observable'); - - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(74) -) - -/* script */ -__vue_exports__ = __webpack_require__(75) - -/* template */ -var __vue_template__ = __webpack_require__(86) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/pages/guide/Guide.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-5490db22" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 74 */ -/***/ (function(module, exports) { - -module.exports = { - "size": { - "width": "750", - "height": "320" - }, - "center": { - "alignItems": "center", - "justifyContent": "center" - }, - "slider": { - "width": "750", - "height": "400", - "boxShadow": "0 5px 10px rgba(0, 0, 0, 0.2)", - "marginBottom": "10" - }, - "slider-title": { - "width": "750", - "paddingTop": 0, - "paddingRight": "30", - "paddingBottom": "30", - "paddingLeft": "30", - "fontSize": "46", - "textAlign": "center", - "color": "#FFFFFF" - }, - "indicator": { - "position": "absolute", - "left": 0, - "right": 0, - "bottom": 0, - "width": "750", - "height": "30", - "itemSize": "12", - "itemColor": "#DDDDDD", - "itemSelectedColor": "rgb(0,180,255)" - } -} - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _utils = __webpack_require__(27); - -var _Lesson = __webpack_require__(76); - -var _Lesson2 = _interopRequireDefault(_Lesson); - -var _mock = __webpack_require__(80); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var useStorage = false; // -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -exports.default = { - components: { Lesson: _Lesson2.default }, - data: function data() { - return { - language: 'en', - navigationBarOptions: { - title: { - zh: 'Weex 入门', - en: 'Weex Guide' - } - }, - lenssonIndex: 0, - guideLessons: _mock.guideLessons - }; - }, - - computed: { - chosenLesson: function chosenLesson() { - return this.guideLessons[this.lenssonIndex]; - } - }, - watch: { - lenssonIndex: function lenssonIndex() { - this.navigationBarOptions.backgroundColor = this.chosenLesson.mainColor; - this.navigationBarOptions.title = this.chosenLesson.title; - }, - navigationBarOptions: function navigationBarOptions() { - (0, _utils.setTitleBar)(this.navigationBarOptions, this.language); - } - }, - beforeCreate: function beforeCreate() { - var _this = this; - - (0, _utils.readGuide)(function (guide) { - _this.guideLessons = guide; - if (WXEnvironment.platform.toLowerCase() !== 'web') { - useStorage = true; - } - }); - (0, _utils.fetchGuide)(function (result) { - (0, _utils.saveGuide)(result); - if (!useStorage) { - _this.guideLessons = result.guide; - } - }); - } -}; - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(77) -) - -/* script */ -__vue_exports__ = __webpack_require__(78) - -/* template */ -var __vue_template__ = __webpack_require__(79) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/components/Lesson.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-2c29cf22" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 77 */ -/***/ (function(module, exports) { - -module.exports = { - "center": { - "alignItems": "center", - "justifyContent": "center" - }, - "title": { - "fontSize": "60", - "textAlign": "center", - "marginTop": "60", - "marginBottom": "60", - "color": "#606060" - }, - "lesson": { - "borderBottomWidth": "1", - "borderBottomStyle": "solid", - "borderBottomColor": "#EEEEEE", - "flexDirection": "row", - "alignItems": "center" - }, - "lesson-zh": { - "width": "600" - }, - "lesson-en": { - "width": "630" - }, - "lesson-index": { - "color": "#777777", - "textAlign": "right", - "paddingRight": "30" - }, - "lesson-title": { - "paddingTop": "35", - "paddingBottom": "35" - }, - "lesson-index-zh": { - "fontSize": "46", - "width": "120" - }, - "lesson-title-zh": { - "fontSize": "42", - "width": "480" - }, - "lesson-index-en": { - "fontSize": "42", - "width": "100" - }, - "lesson-title-en": { - "fontSize": "38", - "width": "530" - }, - "footer": { - "height": "120", - "paddingTop": "40" - }, - "copyright": { - "fontSize": "22", - "color": "#A0A0A0", - "textAlign": "center" - } -} - -/***/ }), -/* 78 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -exports.default = { - props: ['mainColor', 'title', 'copyright', 'lessons'], - data: function data() { - return { - language: 'en' - }; - } -}; - -/***/ }), -/* 79 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: ["wrapper"] - }, [_c('div', { - staticClass: ["center"] - }, [_c('text', { - staticClass: ["title"] - }, [_vm._v(_vm._s(_vm.i18n(_vm.title)))])]), _vm._l((_vm.lessons), function(lesson, i) { - return _c('div', { - key: i, - staticClass: ["center"] - }, [_c('div', { - class: ['lesson', ("lesson-" + _vm.language)], - on: { - "click": function($event) { - _vm.jumpTo(lesson.docLink, lesson.title) - } - } - }, [_c('text', { - class: ['lesson-index', ("lesson-index-" + _vm.language)] - }, [_vm._v(_vm._s(i + 1) + ".")]), _c('text', { - class: ['lesson-title', ("lesson-title-" + _vm.language)], - style: { - color: _vm.mainColor - } - }, [_vm._v(_vm._s(_vm.i18n(lesson.title)))])])]) - }), _c('div', { - staticClass: ["footer", "center"] - }, [_c('text', { - staticClass: ["copyright"] - }, [_vm._v(_vm._s(_vm.i18n(_vm.copyright)))])])], 2) -},staticRenderFns: []} -module.exports.render._withStripped = true - -/***/ }), -/* 80 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.aboutApp = exports.guideLessons = undefined; - -var _sliders = __webpack_require__(81); - -var _sliders2 = _interopRequireDefault(_sliders); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var guideLessons = exports.guideLessons = _sliders2.default; - -var aboutApp = exports.aboutApp = [{ - title: { en: 'Weex Official Website', zh: 'Weex 官方网站' }, - link: { - en: 'http://weex-project.io/', - zh: 'http://weex-project.io/cn/' - } -}, { - title: { en: 'Apache Software Foundation', zh: 'Apache 软件基金会' }, - link: 'http://www.apache.org/' -}, { - title: { en: 'Who is using Weex', zh: '谁在使用 Weex' }, - link: { - en: 'http://weex-project.io/who-is-using-weex.html', - zh: 'http://weex-project.io/cn/who-is-using-weex.html' - } -}, { - title: { en: 'Contribution', zh: '参与贡献' }, - link: { - en: 'http://weex-project.io/guide/contributing.html', - zh: 'http://weex-project.io/cn/guide/contributing.html' - } -}, { - title: { en: 'Release Note', zh: '版本变更' }, - link: { - en: 'http://weex-project.io/releasenote.html', - zh: 'http://weex-project.io/cn/releasenote.html' - } -}, { - title: { en: 'FAQ', zh: '常见问题' }, - link: { - en: 'http://weex-project.io/faq.html', - zh: 'http://weex-project.io/cn/faq.html' - } -}]; - -/***/ }), -/* 81 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _defineProperty2 = __webpack_require__(82); - -var _defineProperty3 = _interopRequireDefault(_defineProperty2); - -var _ref, _ref2, _ref3; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = [{ - subject: 'weex', - mainColor: '#00B4FF', - title: { zh: '学习 Weex', en: 'Learn Weex' }, - poster: 'https://gw.alicdn.com/tfs/TB1.8Vdl9_I8KJjy0FoXXaFnVXa-3799-1615.png', - posterBg: '#E5F7FF', - posterStyle: { - width: '650px', - height: '304px' - }, - copyright: { - zh: '来自 http://weex-project.io/cn/', - en: 'From http://weex-project.io/' - }, - lessons: [{ - title: { - zh: '快速入门', - en: 'Getting Started' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/index.html', - en: 'http://weex-project.io/guide/index.html' - } - }, { - title: { - zh: '工作原理', - en: 'How it Works' - }, - docLink: { - zh: 'http://weex-project.io/cn/wiki/index.html', - en: 'http://weex-project.io/wiki/index.html' - } - }, { - title: { - zh: 'Weex 中的前端框架', - en: 'Front-end Frameworks' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/front-end-frameworks.html', - en: 'http://weex-project.io/guide/front-end-frameworks.html' - } - }, { - title: { - zh: '在 Weex 中使用 Vue.js', - en: 'Use Vue.js on Weex' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/use-vue.html', - en: 'http://weex-project.io/guide/use-vue.html' - } - }, { - title: { - zh: '与 Web 平台的差异', - en: 'Platform difference with Web' - }, - docLink: { - zh: 'http://weex-project.io/cn/wiki/platform-difference.html', - en: 'http://weex-project.io/wiki/platform-difference.html' - } - }, { - title: { - zh: '集成 Weex 到已有应用', - en: 'Integrate to Your App' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/integrate-to-your-app.html', - en: 'http://weex-project.io/guide/integrate-to-your-app.html' - } - }, { - title: { - zh: '搭建开发环境', - en: 'Set Up Dev Environment' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/set-up-env.html', - en: 'http://weex-project.io/guide/set-up-env.html' - } - }, { - title: { - zh: '通用样式', - en: 'Common Styles' - }, - docLink: { - zh: 'http://weex-project.io/cn/wiki/common-styles.html', - en: 'http://weex-project.io/wiki/common-styles.html' - } - }, { - title: { - zh: '通用事件', - en: 'Common Events' - }, - docLink: { - zh: 'http://weex-project.io/cn/wiki/common-events.html', - en: 'http://weex-project.io/wiki/common-events.html' - } - }, { - title: { - zh: 'Weex 实例变量', - en: 'The "weex" Variable' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/weex-variable.html', - en: 'http://weex-project.io/references/weex-variable.html' - } - }, { - title: { - zh: '内置组件', - en: 'Built-in Components' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/components/index.html', - en: 'http://weex-project.io/references/components/index.html' - } - }, { - title: { - zh: '内置模块', - en: 'Built-in Modules' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/modules/index.html', - en: 'http://weex-project.io/references/modules/index.html' - } - }, { - title: { - zh: '扩展 Android 组件/模块', - en: 'Extend Android' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/extend-android.html', - en: 'http://weex-project.io/guide/extend-android.html' - } - }, { - title: { - zh: '扩展 iOS 组件/模块', - en: 'Extend iOS' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/extend-ios.html', - en: 'http://weex-project.io/guide/extend-ios.html' - } - }, { - title: { - zh: '使用 weex-toolkit', - en: 'Use weex-toolkit' - }, - docLink: { - zh: 'http://weex-project.io/cn/tools/toolkit.html', - en: 'http://weex-project.io/tools/toolkit.html' - } - }, { - title: { - zh: '如何参与贡献', - en: 'How to Contribute' - }, - docLink: { - zh: 'http://weex-project.io/cn/contributing.html', - en: 'http://weex-project.io/contributing.html' - } - }] -}, (_ref = { - subject: 'vue', - mainColor: '#42b983', - title: { zh: '学习 Vue.js', en: 'Learn Vue.js' }, - poster: 'https://gw.alicdn.com/tfs/TB1J_uKcMMPMeJjy1XdXXasrXXa-400-400.png', - posterBg: '#E7FBF2', - posterStyle: { - width: '300px', - height: '300px' - } -}, (0, _defineProperty3.default)(_ref, 'title', { - zh: '学习 Vue.js', - en: 'Learn Vue.js' -}), (0, _defineProperty3.default)(_ref, 'copyright', { - zh: '来自 https://cn.vuejs.org/', - en: 'From https://vuejs.org/' -}), (0, _defineProperty3.default)(_ref, 'lessons', [{ - title: { - zh: 'Vue.js 是什么?', - en: 'What is Vue.js ?' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/index.html', - en: 'https://vuejs.org/v2/guide/index.html' - } -}, { - title: { - zh: '单文件组件', - en: 'Single File Components' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/single-file-components.html', - en: 'https://vuejs.org/v2/guide/single-file-components.html' - } -}, { - title: { - zh: '模板语法', - en: 'Template Syntax' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/syntax.html', - en: 'https://vuejs.org/v2/guide/syntax.html' - } -}, { - title: { - zh: 'Class 与 Style 绑定', - en: 'Class and Style Bindings' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/class-and-style.html', - en: 'https://vuejs.org/v2/guide/class-and-style.html' - } -}, { - title: { - zh: '条件渲染', - en: 'Conditional Rendering' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/conditional.html', - en: 'https://vuejs.org/v2/guide/conditional.html' - } -}, { - title: { - zh: '列表渲染', - en: 'List Rendering' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/list.html', - en: 'https://vuejs.org/v2/guide/list.html' - } -}, { - title: { - zh: '事件处理', - en: 'Event Handling' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/events.html', - en: 'https://vuejs.org/v2/guide/events.html' - } -}, { - title: { - zh: '表单输入绑定', - en: 'Form Input Bindings' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/forms.html', - en: 'https://vuejs.org/v2/guide/forms.html' - } -}, { - title: { - zh: 'Vue 实例', - en: 'The Vue Instance' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/instance.html', - en: 'https://vuejs.org/v2/guide/instance.html' - } -}, { - title: { - zh: '在 Weex 中使用 Vue.js', - en: 'Use Vue.js on Weex' - }, - docLink: { - zh: 'http://weex-project.io/cn/guide/use-vue.html', - en: 'http://weex-project.io/guide/use-vue.html' - } -}, { - title: { - zh: '混合(mixins)', - en: 'Mixins' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/mixins.html', - en: 'https://vuejs.org/v2/guide/mixins.html' - } -}, { - title: { - zh: '过滤器(filters)', - en: 'Filters' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/filters.html', - en: 'https://vuejs.org/v2/guide/filters.html' - } -}, { - title: { - zh: '插件(plugins)', - en: 'Plugins' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/plugins.html', - en: 'https://vuejs.org/v2/guide/plugins.html' - } -}, { - title: { - zh: '自定义指令', - en: 'Custom Directives' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/custom-directive.html', - en: 'https://vuejs.org/v2/guide/custom-directive.html' - } -}, { - title: { - zh: '状态管理', - en: 'State Management' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/state-management.html', - en: 'https://vuejs.org/v2/guide/state-management.html' - } -}, { - title: { - zh: '深入响应式原理', - en: 'Reactivity in Depth' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/reactivity.html', - en: 'https://vuejs.org/v2/guide/reactivity.html' - } -}, { - title: { - zh: '渲染函数', - en: 'Render Functions' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/render-function.html', - en: 'https://vuejs.org/v2/guide/render-function.html' - } -}, { - title: { - zh: 'TypeScript 支持', - en: 'TypeScript Support' - }, - docLink: { - zh: 'https://cn.vuejs.org/v2/guide/typescript.html', - en: 'https://vuejs.org/v2/guide/typescript.html' - } -}, { - title: 'API', - docLink: { - zh: 'https://cn.vuejs.org/v2/api/', - en: 'https://vuejs.org/v2/api/' - } -}]), _ref), (_ref2 = { - subject: 'javascript', - mainColor: '#F7BD2A', - title: { zh: '学习 Javascript', en: 'Learn Javascript' }, - poster: 'https://gw.alicdn.com/tfs/TB1bT98hMoQMeJjy0FpXXcTxpXa-1500-700.png', - posterBg: '#FAF3EB', - posterStyle: { - width: '750px', - height: '350px' - } -}, (0, _defineProperty3.default)(_ref2, 'title', { - zh: '学习 Javascript', - en: 'Learn Javascript' -}), (0, _defineProperty3.default)(_ref2, 'copyright', { - zh: '来自 MDN (Mozilla Developer Network)', - en: 'From MDN (Mozilla Developer Network)' -}), (0, _defineProperty3.default)(_ref2, 'lessons', [{ - title: { - zh: '什么是 Javascript ?', - en: 'What is Javascript ?' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/What_is_JavaScript', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript' - } -}, { - title: { - zh: 'JavaScript基础', - en: 'JavaScript basics' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web/JavaScript_basics', - en: 'https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics' - } -}, { - title: { - zh: '重新介绍 JavaScript', - en: 'A re-introduction to JavaScript' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript' - } -}, { - title: { - zh: '语法和数据类型', - en: 'Grammar and types' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variable_scope' - } -}, { - title: { - zh: '数据类型和数据结构', - en: 'Data types and data structures' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures' - } -}, { - title: { - zh: '变量', - en: 'Variables' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Variables', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Variables' - } -}, { - title: { - zh: '数字和操作符', - en: 'Numbers and operators' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Math', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Math' - } -}, { - title: { - zh: '字符串', - en: 'Handling text' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Strings', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Strings' - } -}, { - title: { - zh: '常用的 String 方法', - en: 'Useful string methods' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Useful_string_methods', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Useful_string_methods' - } -}, { - title: { - zh: '数组', - en: 'Arrays' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Arrays', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Arrays' - } -}, { - title: { - zh: '函数', - en: 'Functions' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions' - } -}, { - title: { - zh: 'JavaScript 对象基础', - en: 'JavaScript object basics' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Basics', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Basics' - } -}, { - title: { - zh: '使用对象', - en: 'Working with objects' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects' - } -}, { - title: { - zh: '使用 JSON 数据', - en: 'Working with JSON' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/JSON', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON' - } -}, { - title: { - zh: '对象模型的细节', - en: 'Details of the object model' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Details_of_the_Object_Model', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model' - } -}, { - title: { - zh: '对象原型', - en: 'Object prototypes' - }, - docLink: { - zh: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes', - en: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Object_prototypes' - } -}, { - title: { - zh: 'JavaScript 中的继承', - en: 'Inheritance in JavaScript' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Inheritance', - en: 'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Inheritance' - } -}, { - title: { - zh: '继承与原型链', - en: 'Inheritance and the prototype chain' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain' - } -}, { - title: { - zh: '严格模式', - en: 'Strict mode' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode' - } -}, { - title: { - zh: '内存管理', - en: 'Memory Management' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management' - } -}, { - title: { - zh: '并发模型与事件循环', - en: 'Concurrency model and Event Loop' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop' - } -}, { - // title: { - // zh: '索引集合类', - // en: 'Indexed collections' - // }, - // docLink: { - // zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Indexed_collections', - // en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections' - // } - // }, { - // title: { - // zh: '带键的集合', - // en: 'Keyed collections' - // }, - // docLink: { - // zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Keyed_collections', - // en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Keyed_collections' - // } - // }, { - title: { - zh: 'JavaScript 标准库', - en: 'Standard built-in objects' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects', - en: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects' - } -}]), _ref2), (_ref3 = { - subject: 'css', - mainColor: '#F56FC6', - title: { zh: '学习 CSS', en: 'Learn CSS' }, - titleColor: '#FFFFFF', - poster: 'https://gw.alicdn.com/tfs/TB1k6anhMMPMeJjy1XdXXasrXXa-427-190.jpg', - posterBg: '#FFA2DE', - posterStyle: { - width: '517px', - height: '230px' - } -}, (0, _defineProperty3.default)(_ref3, 'title', { - zh: '学习 CSS', - en: 'Learn CSS' -}), (0, _defineProperty3.default)(_ref3, 'copyright', { - zh: '来自 MDN (Mozilla Developer Network)', - en: 'From MDN (Mozilla Developer Network)' -}), (0, _defineProperty3.default)(_ref3, 'lessons', [{ - title: { - zh: '什么是 CSS ?', - en: 'What is CSS ?' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Getting_started/What_is_CSS', - en: 'https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/What_is_CSS' - } -}, { - title: { - zh: 'CSS 语法', - en: 'CSS Syntax' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Syntax', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Syntax' - } -}, { - title: { - zh: 'CSS的值和单位', - en: 'CSS Values and Units' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Values_and_units', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Values_and_units' - } -}, { - title: { - zh: '盒模型', - en: 'The Box Model' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Box_model', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Box_model' - } -}, { - title: { - zh: '盒模型的属性', - en: 'Box Model Properties' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Box_Model', - en: 'https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model' - } -}, { - title: { - zh: '定位布局', - en: 'Positioning' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/%E5%AE%9A%E4%BD%8Dx', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/positioning' - } -}, { - title: { - zh: '定位布局的属性', - en: 'CSS Positioning' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Positioning', - en: 'https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning' - } -}, { - title: { - zh: 'Flexbox 布局', - en: 'Flexbox Layout' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Flexbox', - en: 'https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox' - } -}, { - title: { - zh: 'Flexbox 布局的属性', - en: 'CSS Flexible Box Layout' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout', - en: 'https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout' - } -}, { - title: { - zh: 'Weex 中的通用样式', - en: 'Common Styles in Weex' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/common-style.html', - en: 'http://weex-project.io/references/common-style.html' - } -}, { - title: { - zh: 'Weex 中的文本样式', - en: 'Text Styles in Weex' - }, - docLink: { - zh: 'http://weex-project.io/cn/references/text-style.html', - en: 'http://weex-project.io/references/text-style.html' - } -}, { - title: { - zh: '块格式化上下文(BFC)', - en: 'Block Formatting Context' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Block_formatting_context', - en: 'https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context' - } -}, { - title: { - zh: '视觉格式化模型', - en: 'Visual Formatting Model' - }, - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Visual_formatting_model', - en: 'https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Visual_formatting_model' - } -}, { - title: 'CSS Reference', - docLink: { - zh: 'https://developer.mozilla.org/zh-CN/docs/Web/CSS/Reference', - en: 'https://developer.mozilla.org/en-US/docs/Web/CSS/Reference' - } -}]), _ref3)]; - -/***/ }), -/* 82 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _defineProperty = __webpack_require__(83); - -var _defineProperty2 = _interopRequireDefault(_defineProperty); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (obj, key, value) { - if (key in obj) { - (0, _defineProperty2.default)(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -}; - -/***/ }), -/* 83 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(84), __esModule: true }; - -/***/ }), -/* 84 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(85); -var $Object = __webpack_require__(4).Object; -module.exports = function defineProperty(it, key, desc) { - return $Object.defineProperty(it, key, desc); -}; - - -/***/ }), -/* 85 */ -/***/ (function(module, exports, __webpack_require__) { - -var $export = __webpack_require__(16); -// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) -$export($export.S + $export.F * !__webpack_require__(2), 'Object', { defineProperty: __webpack_require__(1).f }); - - -/***/ }), -/* 86 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('scroller', { - staticClass: ["wrapper"] - }, [_c('slider', { - staticClass: ["slider"], - attrs: { - "autoPlay": "true" - } - }, [_vm._l((_vm.guideLessons), function(item, i) { - return _c('div', { - key: item.subject, - staticClass: ["center"], - style: { - backgroundColor: item.posterBg - }, - on: { - "click": function($event) { - _vm.lenssonIndex = i - } - } - }, [_c('div', { - staticClass: ["center", "size"] - }, [_c('image', { - style: item.posterStyle, - attrs: { - "resize": "cover", - "src": item.poster - } - })]), _c('text', { - staticClass: ["slider-title"], - style: { - color: item.titleColor || item.mainColor - } - }, [_vm._v(_vm._s(_vm.i18n(item.title)))])]) - }), _c('indicator', { - staticClass: ["indicator"] - })], 2), _c('lesson', { - attrs: { - "mainColor": _vm.chosenLesson.mainColor, - "title": _vm.chosenLesson.title, - "lessons": _vm.chosenLesson.lessons, - "copyright": _vm.chosenLesson.copyright - } - })], 1) -},staticRenderFns: []} -module.exports.render._withStripped = true - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/android/playground/app/src/main/assets/landing.weex.js b/android/playground/app/src/main/assets/landing.weex.js deleted file mode 100644 index bbb0fb3efd..0000000000 --- a/android/playground/app/src/main/assets/landing.weex.js +++ /dev/null @@ -1,2319 +0,0 @@ -// { "framework": "Vue" } -"use weex:vue"; - -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 37); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 1 */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(3); -var createDesc = __webpack_require__(12); -module.exports = __webpack_require__(4) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(10); -var IE8_DOM_DEFINE = __webpack_require__(29); -var toPrimitive = __webpack_require__(17); -var dP = Object.defineProperty; - -exports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(11)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(51); -var defined = __webpack_require__(16); -module.exports = function (it) { - return IObject(defined(it)); -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(21)('wks'); -var uid = __webpack_require__(13); -var Symbol = __webpack_require__(0).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - -module.exports = true; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; - - -/***/ }), -/* 12 */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports) { - -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.fetchNews = exports.fetchDoodle = exports.readAbout = exports.saveAbout = exports.fetchAbout = exports.readGuide = exports.saveGuide = exports.fetchGuide = exports.readExamples = exports.saveExamples = exports.fetchExamples = undefined; - -var _stringify = __webpack_require__(40); - -var _stringify2 = _interopRequireDefault(_stringify); - -var _typeof2 = __webpack_require__(42); - -var _typeof3 = _interopRequireDefault(_typeof2); - -exports.createLink = createLink; -exports.createURL = createURL; -exports.i18n = i18n; -exports.parseLanguage = parseLanguage; -exports.setLanguage = setLanguage; -exports.clearStorageLanguage = clearStorageLanguage; -exports.getStorageLanguage = getStorageLanguage; -exports.getSystemLanguage = getSystemLanguage; -exports.getLanguage = getLanguage; -exports.jumpTo = jumpTo; -exports.viewSource = viewSource; -exports.setTitleBar = setTitleBar; -exports.fetchData = fetchData; -exports.saveData = saveData; -exports.readData = readData; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var stream = weex.requireModule('stream'); -var storage = weex.requireModule('storage'); -var navigator = weex.requireModule('navigator'); - -var encoder = typeof encodeURIComponent === 'function' ? encodeURIComponent : typeof encodeURI === 'function' ? encodeURI : function (x) { - return x; -}; - -function encodeParams(params) { - if (!params || (typeof params === 'undefined' ? 'undefined' : (0, _typeof3.default)(params)) !== 'object') { - return ''; - } - var array = []; - for (var key in params) { - if (typeof params[key] === 'string') { - array.push(encoder(key) + '=' + encoder(params[key])); - } - } - return array.join('&'); -} - -function createLink(name) { - var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var args = []; - for (var key in params) { - if (typeof params[key] === 'string') { - args.push(encoder(key) + '=' + encoder(params[key])); - } - } - if (WXEnvironment.platform === 'Web') { - args.unshift('page=' + name + '.web.js'); - return '/?' + args.join('&'); - } - var base = getBaseURL(); - return '' + base + name + '.weex.js' + (args.length ? '?' + args.join('&') : ''); -} - -function createURL(hash, params) { - if (WXEnvironment.platform === 'Web') { - return 'http://dotwe.org/raw/htmlVue/' + hash; - } - var url = 'http://dotwe.org/raw/dist/' + hash + '.bundle.wx'; - var paramString = encodeParams(params); - if (WXEnvironment.appName === 'TB') { - return url + '?_wx_tpl=' + url + '&' + paramString; - } - if (WXEnvironment.appName === 'WXSample') { - return url + '?' + paramString; - } - return url + '?wx_weex=true&' + paramString; -} - -function getBaseURL() { - var bundleUrl = weex.config.bundleUrl; - var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/') >= 0; - var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0; - if (isAndroidAssets) { - return 'file://assets/'; - } else if (isiOSAssets) { - // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/ - // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/ - return bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1); - } - return ''; -} - -function i18n(text, language) { - if (typeof text === 'string') { - return text; - } - if (Object.prototype.toString.call(text) === '[object Object]') { - var lang = this && this.language || language || 'en'; - return text[lang]; - } -} - -var supportedLanguageRE = /(en|zh)\_?\w*/i; -function parseLanguage(language) { - var match = supportedLanguageRE.exec(language + ''); - if (match && match[1]) { - return match[1]; - } - return ''; -} - -function setLanguage(language) { - var lang = parseLanguage(language); - if (lang) { - storage.setItem('WEEX_PLAYGROUND_LANGUAGE', lang); - } -} - -function clearStorageLanguage() { - storage.removeItem('WEEX_PLAYGROUND_LANGUAGE'); -} - -function getStorageLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - try { - storage.getItem('WEEX_PLAYGROUND_LANGUAGE', function (event) { - if (event.result === 'success') { - var lang = parseLanguage(event.data); - lang ? done(lang) : fail(); - } else { - fail(event); - } - }); - } catch (err) { - fail(err); - } -} - -function getSystemLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - if (WXEnvironment.platform.toLowerCase() === 'web') { - var lang = parseLanguage(window.navigator.language); - lang ? done(lang) : fail(); - } else { - try { - var locale = weex.requireModule('locale') || weex.requireModule('local'); - var useSync = false; - var resSync = locale.getLanguage(function (language) { - var lang = parseLanguage(language); - if (lang) { - useSync || done(lang); - } else { - fail(); - } - }); - var langSync = parseLanguage(resSync); - if (langSync) { - useSync = true; - done(langSync); - } else { - fail(); - } - } catch (e) { - fail(e); - } - } -} - -var languageRE = /.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i; -function getLanguage() { - var done = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {}; - - var match = languageRE.exec(weex.config.bundleUrl || ''); - var lang = parseLanguage(match && match[1]); - if (lang) { - done(lang); - } else { - getStorageLanguage(done, function () { - getSystemLanguage(done, function () { - done('en'); - }); - }); - } -} - -function jumpTo(url, title, lang) { - getLanguage(function (language) { - storage.setItem('CURRENT_DOCUMENT_URL', i18n(url, lang || language)); - navigator.push({ - url: createURL('bf0305c14b511b24a4e616f53926432b', { language: language, title: i18n(title, lang || language) }) - }); - }); -} - -function viewSource(hash) { - getLanguage(function (language) { - navigator.push({ - url: createURL('f6ce29faf686eabc38b410bf4828fa5a', { hash: hash, language: language }) - }); - }); -} - -function setTitleBar(options) { - var language = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en'; - - if (Object.prototype.toString.apply(options) !== '[object Object]') { - return; - } - var titleBar = weex.requireModule('titleBar'); - if (options.color || options.backgroundColor) { - try { - titleBar.setStyle({ - foregroundColor: options.color || '#FFFFFF', - backgroundColor: options.backgroundColor || '#00B4FF' - }); - } catch (e) {} - } - var title = i18n(options.title, language); - if (title) { - try { - titleBar.setTitle(title); - } catch (e) {} - } -} - -var storageKeys = { - doodle: 'WEEX_PLAYGROUND_APP_DOODLE', - guide: 'WEEX_PLAYGROUND_APP_GUIDE', - examples: 'WEEX_PLAYGROUND_APP_EXAMPLES', - news: 'WEEX_PLAYGROUND_APP_NEWS', - about: 'WEEX_PLAYGROUND_APP_ABOUT' -}; -function fetchData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - try { - stream.fetch({ - url: 'http://dotwe.org/query/weex-playground-app', - method: 'post', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - type: 'json', - body: 'name=' + name - }, function (res) { - if (res.ok && res.data && res.data.success) { - done(res.data); - } else { - fail(res); - } - }); - } catch (err) { - fail(err); - } -} -function saveData(name, result) { - var key = storageKeys[name]; - if (!key) return; - if (result && (typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) === 'object') { - result.timestamp = Date.now(); - storage.setItem(key, (0, _stringify2.default)(result)); - } -} -function readData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - var key = storageKeys[name]; - if (!key) return fail(); - try { - storage.getItem(key, function (event) { - if (event.result === 'success') { - var result = JSON.parse(event.data); - if (result && Array.isArray(result[name])) { - return done(result[name]); - } - } - fail(event); - }); - } catch (e) { - fail(e); - } -} - -var fetchExamples = exports.fetchExamples = function fetchExamples() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return fetchData.apply(undefined, ['examples'].concat(args)); -}; -var saveExamples = exports.saveExamples = function saveExamples() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - return saveData.apply(undefined, ['examples'].concat(args)); -}; -var readExamples = exports.readExamples = function readExamples() { - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - return readData.apply(undefined, ['examples'].concat(args)); -}; - -var fetchGuide = exports.fetchGuide = function fetchGuide() { - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - return fetchData.apply(undefined, ['guide'].concat(args)); -}; -var saveGuide = exports.saveGuide = function saveGuide() { - for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - - return saveData.apply(undefined, ['guide'].concat(args)); -}; -var readGuide = exports.readGuide = function readGuide() { - for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - return readData.apply(undefined, ['guide'].concat(args)); -}; - -var fetchAbout = exports.fetchAbout = function fetchAbout() { - for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - - return fetchData.apply(undefined, ['about'].concat(args)); -}; -var saveAbout = exports.saveAbout = function saveAbout() { - for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - - return saveData.apply(undefined, ['about'].concat(args)); -}; -var readAbout = exports.readAbout = function readAbout() { - for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - - return readData.apply(undefined, ['about'].concat(args)); -}; - -var fetchDoodle = exports.fetchDoodle = function fetchDoodle() { - for (var _len10 = arguments.length, args = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - - return fetchData.apply(undefined, ['doodle'].concat(args)); -}; -var fetchNews = exports.fetchNews = function fetchNews() { - for (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - - return fetchData.apply(undefined, ['news'].concat(args)); -}; - -/***/ }), -/* 15 */ -/***/ (function(module, exports) { - -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; - - -/***/ }), -/* 16 */ -/***/ (function(module, exports) { - -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(8); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(33); -var enumBugKeys = __webpack_require__(22); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(21)('keys'); -var uid = __webpack_require__(13); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(7); -var global = __webpack_require__(0); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __webpack_require__(9) ? 'pure' : 'global', - copyright: '© 2018 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), -/* 22 */ -/***/ (function(module, exports) { - -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -var def = __webpack_require__(3).f; -var has = __webpack_require__(1); -var TAG = __webpack_require__(6)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -exports.f = __webpack_require__(6); - - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(7); -var LIBRARY = __webpack_require__(9); -var wksExt = __webpack_require__(24); -var defineProperty = __webpack_require__(3).f; -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; - - -/***/ }), -/* 26 */ -/***/ (function(module, exports) { - -exports.f = {}.propertyIsEnumerable; - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__(9); -var $export = __webpack_require__(28); -var redefine = __webpack_require__(31); -var hide = __webpack_require__(2); -var Iterators = __webpack_require__(18); -var $iterCreate = __webpack_require__(49); -var setToStringTag = __webpack_require__(23); -var getPrototypeOf = __webpack_require__(56); -var ITERATOR = __webpack_require__(6)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(7); -var ctx = __webpack_require__(47); -var hide = __webpack_require__(2); -var has = __webpack_require__(1); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var IS_WRAP = type & $export.W; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE]; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; - var key, own, out; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if (own && has(exports, key)) continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function (C) { - var F = function (a, b, c) { - if (this instanceof C) { - switch (arguments.length) { - case 0: return new C(); - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if (IS_PROTO) { - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); - } - } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = !__webpack_require__(4) && !__webpack_require__(11)(function () { - return Object.defineProperty(__webpack_require__(30)('div'), 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -var document = __webpack_require__(0).document; -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; -}; - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(2); - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__(10); -var dPs = __webpack_require__(50); -var enumBugKeys = __webpack_require__(22); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__(30)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(55).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(1); -var toIObject = __webpack_require__(5); -var arrayIndexOf = __webpack_require__(52)(false); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 35 */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = __webpack_require__(33); -var hiddenKeys = __webpack_require__(22).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(38); - -var _utils = __webpack_require__(14); - -var utils = _interopRequireWildcard(_utils); - -var _Landing = __webpack_require__(73); - -var _Landing2 = _interopRequireDefault(_Landing); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -// hide title bar -try { - var titleBar = weex.requireModule('titleBar'); - titleBar.showTitleBar(false); -} catch (e) {} - -// fetch and save examples -setTimeout(function () { - utils.fetchExamples(utils.saveExamples); - utils.fetchGuide(utils.saveGuide); - utils.fetchAbout(utils.saveAbout); -}, 10); - -_Landing2.default.el = '#root'; -new Vue(_Landing2.default); - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _mixin = __webpack_require__(39); - -var _mixin2 = _interopRequireDefault(_mixin); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// use shared mixins -Vue.mixin(_mixin2.default); - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _index = __webpack_require__(14); - -var utils = _interopRequireWildcard(_index); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var storage = weex.requireModule('storage'); - -exports.default = { - filters: { - i18n: utils.i18n, - url: utils.createURL, - link: utils.createLink - }, - methods: { - createLink: utils.createLink, - createURL: utils.createURL, - i18n: utils.i18n, - getLanguage: utils.getLanguage, - fetchData: utils.fetchData, - saveData: utils.saveData, - readData: utils.readData, - jumpTo: utils.jumpTo - }, - created: function created() { - var _this = this; - - // get and set language - utils.getLanguage(function (language) { - _this.language = language; - utils.setTitleBar(_this.navigationBarOptions, language); - }); - - // listen to the language change event - var channel = new BroadcastChannel('language'); - channel.onmessage = function (event) { - if (event.data && event.data.language) { - _this.language = event.data.language; - } - }; - }, - beforeDestroy: function beforeDestroy() { - storage.removeItem('CURRENT_DOCUMENT_URL'); - storage.removeItem('CURRENT_SOURCE_HASH'); - } -}; - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(41), __esModule: true }; - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(7); -var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); -module.exports = function stringify(it) { // eslint-disable-line no-unused-vars - return $JSON.stringify.apply($JSON, arguments); -}; - - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _iterator = __webpack_require__(43); - -var _iterator2 = _interopRequireDefault(_iterator); - -var _symbol = __webpack_require__(62); - -var _symbol2 = _interopRequireDefault(_symbol); - -var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { - return typeof obj === "undefined" ? "undefined" : _typeof(obj); -} : function (obj) { - return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); -}; - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(44), __esModule: true }; - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(45); -__webpack_require__(58); -module.exports = __webpack_require__(24).f('iterator'); - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $at = __webpack_require__(46)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -__webpack_require__(27)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(15); -var defined = __webpack_require__(16); -// true -> String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__(48); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var create = __webpack_require__(32); -var descriptor = __webpack_require__(12); -var setToStringTag = __webpack_require__(23); -var IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(2)(IteratorPrototype, __webpack_require__(6)('iterator'), function () { return this; }); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(3); -var anObject = __webpack_require__(10); -var getKeys = __webpack_require__(19); - -module.exports = __webpack_require__(4) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; -}; - - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(34); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; - - -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__(5); -var toLength = __webpack_require__(53); -var toAbsoluteIndex = __webpack_require__(54); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - - -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.15 ToLength -var toInteger = __webpack_require__(15); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(15); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -var document = __webpack_require__(0).document; -module.exports = document && document.documentElement; - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(1); -var toObject = __webpack_require__(57); -var IE_PROTO = __webpack_require__(20)('IE_PROTO'); -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.13 ToObject(argument) -var defined = __webpack_require__(16); -module.exports = function (it) { - return Object(defined(it)); -}; - - -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(59); -var global = __webpack_require__(0); -var hide = __webpack_require__(2); -var Iterators = __webpack_require__(18); -var TO_STRING_TAG = __webpack_require__(6)('toStringTag'); - -var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + - 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + - 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + - 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + - 'TextTrackList,TouchList').split(','); - -for (var i = 0; i < DOMIterables.length; i++) { - var NAME = DOMIterables[i]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = Iterators.Array; -} - - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var addToUnscopables = __webpack_require__(60); -var step = __webpack_require__(61); -var Iterators = __webpack_require__(18); -var toIObject = __webpack_require__(5); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __webpack_require__(27)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - - -/***/ }), -/* 60 */ -/***/ (function(module, exports) { - -module.exports = function () { /* empty */ }; - - -/***/ }), -/* 61 */ -/***/ (function(module, exports) { - -module.exports = function (done, value) { - return { value: value, done: !!done }; -}; - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(63), __esModule: true }; - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(64); -__webpack_require__(70); -__webpack_require__(71); -__webpack_require__(72); -module.exports = __webpack_require__(7).Symbol; - - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// ECMAScript 6 symbols shim -var global = __webpack_require__(0); -var has = __webpack_require__(1); -var DESCRIPTORS = __webpack_require__(4); -var $export = __webpack_require__(28); -var redefine = __webpack_require__(31); -var META = __webpack_require__(65).KEY; -var $fails = __webpack_require__(11); -var shared = __webpack_require__(21); -var setToStringTag = __webpack_require__(23); -var uid = __webpack_require__(13); -var wks = __webpack_require__(6); -var wksExt = __webpack_require__(24); -var wksDefine = __webpack_require__(25); -var enumKeys = __webpack_require__(66); -var isArray = __webpack_require__(67); -var anObject = __webpack_require__(10); -var isObject = __webpack_require__(8); -var toIObject = __webpack_require__(5); -var toPrimitive = __webpack_require__(17); -var createDesc = __webpack_require__(12); -var _create = __webpack_require__(32); -var gOPNExt = __webpack_require__(68); -var $GOPD = __webpack_require__(69); -var $DP = __webpack_require__(3); -var $keys = __webpack_require__(19); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function'; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; - -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; - -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __webpack_require__(36).f = gOPNExt.f = $getOwnPropertyNames; - __webpack_require__(26).f = $propertyIsEnumerable; - __webpack_require__(35).f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !__webpack_require__(9)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); - -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); - -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); - -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); - -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(2)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -var META = __webpack_require__(13)('meta'); -var isObject = __webpack_require__(8); -var has = __webpack_require__(1); -var setDesc = __webpack_require__(3).f; -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !__webpack_require__(11)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -// all enumerable object keys, includes symbols -var getKeys = __webpack_require__(19); -var gOPS = __webpack_require__(35); -var pIE = __webpack_require__(26); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.2.2 IsArray(argument) -var cof = __webpack_require__(34); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __webpack_require__(5); -var gOPN = __webpack_require__(36).f; -var toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -var pIE = __webpack_require__(26); -var createDesc = __webpack_require__(12); -var toIObject = __webpack_require__(5); -var toPrimitive = __webpack_require__(17); -var has = __webpack_require__(1); -var IE8_DOM_DEFINE = __webpack_require__(29); -var gOPD = Object.getOwnPropertyDescriptor; - -exports.f = __webpack_require__(4) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; - - -/***/ }), -/* 70 */ -/***/ (function(module, exports) { - - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(25)('asyncIterator'); - - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(25)('observable'); - - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(74) -) - -/* script */ -__vue_exports__ = __webpack_require__(75) - -/* template */ -var __vue_template__ = __webpack_require__(80) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/pages/landing/Landing.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-6b061736" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 74 */ -/***/ (function(module, exports) { - -module.exports = { - "doodle": { - "width": "750", - "height": "880" - }, - "menu-list": { - "flex": 1 - }, - "menu-row": { - "flex": 1, - "flexDirection": "row", - "justifyContent": "center", - "borderTopWidth": "1", - "borderTopStyle": "solid", - "borderTopColor": "#CCCCCC" - }, - "menu-item": { - "flex": 1, - "backgroundColor": "#FBFBFB", - "justifyContent": "center", - "paddingTop": "50", - "paddingBottom": "50", - "backgroundColor:active": "#F2F2F2" - }, - "menu-item-1": { - "borderRightWidth": "1", - "borderRightStyle": "solid", - "borderRightColor": "#CCCCCC" - }, - "menu-text": { - "textAlign": "center", - "fontSize": "52", - "fontWeight": "bold", - "color": "#8B8B8B" - }, - "menu-text-zh": { - "fontSize": "56" - } -} - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _Doodle = __webpack_require__(76); - -var _Doodle2 = _interopRequireDefault(_Doodle); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = { - components: { Doodle: _Doodle2.default }, - data: function data() { - return { - language: 'en', - menus: [[{ name: 'guide', title: { en: 'Guide', zh: '教程' } }, { name: 'examples', title: { en: 'Examples', zh: '实例' } }], [{ name: 'news', title: { en: 'News', zh: '资讯' } }, { name: 'about', title: { en: 'About', zh: '关于' } }]] - }; - } -}; // -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(77) -) - -/* script */ -__vue_exports__ = __webpack_require__(78) - -/* template */ -var __vue_template__ = __webpack_require__(79) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/components/Doodle.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-d429dafa" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 77 */ -/***/ (function(module, exports) { - -module.exports = { - "wrapper": { - "alignItems": "center", - "justifyContent": "space-between", - "backgroundColor": "#FFFFFF" - }, - "center": { - "alignItems": "center", - "justifyContent": "center" - }, - "logo": { - "width": "750", - "height": "318" - }, - "btn": { - "width": "450", - "height": "160", - "marginTop": "50", - "marginRight": "50", - "marginBottom": "50", - "marginLeft": "50", - "opacity": 0.7, - "opacity:active": 1 - }, - "scan-bg": { - "width": "450", - "height": "160", - "position": "absolute", - "top": 0, - "left": 0 - }, - "btn-text": { - "color": "#505050", - "fontSize": "56", - "textAlign": "center" - }, - "btn-text-zh": { - "fontSize": "64" - } -} - -/***/ }), -/* 78 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _utils = __webpack_require__(14); - -var modal = weex.requireModule('modal'); // -// -// -// -// -// -// -// -// -// -// -// -// - -var navigator = weex.requireModule('navigator'); -var event = weex.requireModule('event'); - -function isValidDoodle(doodle) { - var now = new Date().getTime(); - return doodle && doodle.src && parseInt(doodle.from, 10) < now && now < parseInt(doodle.to, 10); -} - -exports.default = { - props: ['lang'], - data: function data() { - return { - language: this.lang || 'en', - showDoodle: false, - seenDoodle: false, - SCAN: { en: 'Scan QR Code', zh: '扫描二维码' }, - doodle: {} - }; - }, - beforeCreate: function beforeCreate() { - var _this = this; - - (0, _utils.fetchDoodle)(function (_ref) { - var doodle = _ref.doodle; - - if (isValidDoodle(doodle) && !_this.seenDoodle) { - _this.doodle = doodle; - _this.showDoodle = true; - doodle.duration && setTimeout(function () { - _this.showDoodle = false; - _this.seenDoodle = true; - }, parseInt(doodle.duration, 10)); - } - }); - }, - - methods: { - scan: function scan() { - try { - event.openURL('weex://go/scan'); - } catch (e) { - try { - navigator.push({ url: 'weex://go/scan' }); - } catch (e) {} - } - }, - magic: function magic() { - if (this.doodle && this.doodle.next) { - this.showDoodle = false; - navigator.push({ - url: this.createURL(this.doodle.next, { - language: this.language - }) - }); - } - } - } -}; - -/***/ }), -/* 79 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: ["wrapper"] - }, [(_vm.showDoodle && _vm.doodle.src) ? _c('embed', { - staticStyle: { - flex: "1" - }, - attrs: { - "src": _vm._f("url")(_vm.doodle.src) - }, - on: { - "click": _vm.magic - } - }) : _c('div', { - staticClass: ["center"], - staticStyle: { - flex: "1" - } - }, [_c('image', { - staticClass: ["logo"], - attrs: { - "src": "https://gw.alicdn.com/tfs/TB1Q9VBkRfH8KJjy1XbXXbLdXXa-3799-1615.png" - } - }), _c('div', { - staticClass: ["btn", "center"], - on: { - "click": _vm.scan - } - }, [_c('image', { - staticClass: ["scan-bg"], - attrs: { - "src": "https://gw.alicdn.com/tfs/TB1qnO0kLDH8KJjy1XcXXcpdXXa-900-320.png" - } - }), _c('text', { - class: ['btn-text', 'btn-text-' + _vm.language] - }, [_vm._v(_vm._s(_vm.i18n(_vm.SCAN)))])])])]) -},staticRenderFns: []} -module.exports.render._withStripped = true - -/***/ }), -/* 80 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('div', { - staticClass: ["wrapper"] - }, [_c('doodle', { - staticClass: ["doodle"], - attrs: { - "lang": _vm.language - } - }), _c('div', { - staticClass: ["menu-list"] - }, _vm._l((_vm.menus), function(row, r) { - return _c('div', { - key: r, - class: ['menu-row', ("menu-row-" + (r+1))] - }, _vm._l((row), function(menu, i) { - return _c('a', { - key: menu.name, - class: ['menu-item', ("menu-item-" + (i+1))], - attrs: { - "href": _vm._f("link")(menu.name, { - language: _vm.language - }) - } - }, [_c('text', { - class: ['menu-text', ("menu-text-" + _vm.language)] - }, [_vm._v(_vm._s(_vm.i18n(menu.title)))])]) - })) - }))], 1) -},staticRenderFns: []} -module.exports.render._withStripped = true - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/android/playground/app/src/main/assets/lite_template/card.wasm b/android/playground/app/src/main/assets/lite_template/card.wasm deleted file mode 100644 index ad43e9eeceddc73ee62b69c469b75900aa0c9977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8629 zcmb`Mdru?DcEC@$Y1`m#V*|FqHqge{yc$1v*@j_ez%awi-Q9b$_a;#kMOPm1%#h_J zv5Gnbcrp>aO*(g%BP;pLGojR|oI(51%z58n;B3ge>y&K%# z-OJ$ib|@E@-^#H6{ZKBidmsAJlZ)Q4_q*QUzCVz6w}XrR;OpMS<)?f3*uVVnaVY1v z-!d}j-(UV+|I6EpzI=CiG5jdQ-iJ2_KM?WdcI?(Nm> zK(6}lhthj@e|z<5*q6K8`^(|w?Trj??;e?a*}MNn&igk*B=xQ?Kis?-_OI^|ef8=3 zM&4ibzdyMg^v@sWA(&Aq@4VALB|^yi+neF<(NL}~Z~A8snqT(@A1-hHfSl{z_kTIk z`VVUR;PyND+fVny%lAKYnTcd*l==%*_5uAmFn@SCyy`1W55@y2ci!or1l?cICFSj) z$X)N^;_~Lh@$GPUdp&BY@PIUsdOsZWhvy%q{5~k5oN&hZqm28z-g$rXU4Qspzkh>$ zfqp-#@bU8Ef_`0=_gC1#N(72rvp83BKkN-zysO?1x1WZ;AO3KqF1cs5?~ew9-VbQQ zM!4$Vd|(Yf4u^O9^*ZK$(;wEZYs22{yWVZ>{Pw!uySuC3e7{{EUiYr9{&;bDA8dmk zUi9uR-`u>vJ*>2jD_dK%zUp1~!7AHF{J&;VM_j(U@An4hA8T-Wz?5pM`!MS-`h$Bm z!Q;ect)Y191jh|}EdBf2!D$ayRpp!h4{|8q_O3p$c|P5LREOZmPv=9H{o|nj9+TC| zLH~xmE8n91-7O3H$GhP`?k>;&e1KC1=hBp$PuK7IgWtYaZ{5rNM|}4kv#&1C`??!1 z&*h^3zW3>B7&x&X91MwYdd8?fFBTmR^}i^8!!a{dJ2L)AmY}WGvKE8B$M%@_)3#mu zX*;^~({`*Jw5|BE*y9r-6LB#xOO7Wd?1>4n6BA(B$Z! z4Qb}U^C4aUFNXL$_(F&;f_o3RQ+mSZsjMYvLRoGZeB=|QSq}MBz^hO2m5}G^6P|0( zjQq3ygwF=}$e;cb`c3*rwkXZW7S(?wOYu;aTLZ6$Iw;-p9q`>JIQ|Oy_vlAg#oZSCUFU%(K6;$n2FEV}J!|mDM{)Fi>__ha z@6aFeclRH8+Ag|IqH79W-PEL+MAsC$1~_)7*rx%G-YN7B@B{E?A$|ysuG*hOS10K{ z@O(;-ohf`4&>;Jf274ZPVowTt0{+jzvEdQNhG6cCV6GmpL@XkS3G1Oo$9}}e>>qJE z`XlbdB%xypKUWj+hjE1?T?HAG(#7_dl1!#1 zWsuxHnrBJC~R>b4L=*=jNo46T3Je{%j;K^PKmEV~NerFL?9FTs)Sjms^xlPW%Pq zNp?YG0h-0G#1|G8Wf6t|$pGhPz%$}coB0!zB*Z?JD4165YlXeqj)i?UPx|8EI;IvX z#8bh%e+FvNzC;K$&THEZVKRi1AxwoZ9m1&)suOh{8V4{FLaYedxe(5Va4v*-pxU7Q zT9ikDs(lrz7VRriwNLfaqJ8sJ?fX}%7VX2E0o0pF+a6VEzM^W;z7kdYJgOG$)0;@4 z-arbML#R3^t=^4V6jxoeC|xy#D?lAn-L>f0Y6#atxE{id5c)u!qrTLlb2h2k_aC7^ z?W<80)~PzCYokT`8X;_ka0{q3f2IE@3UrOMDE)Q_e;2}T2w#QpHBgJK|12YhgdlEN zV=@+zae(quKBJ=h!W!f5WrC}lFB%gBcan)AH6bMp49pW7x+w9|Ch*2>(NwP-i;sKU8+H`B;E*FR&bp6BBo>d4 z3voZf;Ve%i9B+c$inS@}VH}T>w~Ys55jL*Hy>3!tVO+L|%XSc#{iK=nk|krNP-=!9 zn_(==SSFJ-*;oLVr)M&fA*ad4WqBr(T}@BVc6@F&n|vaGlBcggUp`+L<1i;+PaL0HBOXVfEg3RTLI7~AYWWraLmKjGTLH)LyB{JLpMrA{z` zrh%>XdP5p01t|RqTi4NN1KB>ZkstH@n%PA5#-{JqkzK2c!*o+eHvGjW_uND_K%~| zH2c`u>Fmos3IIy~iJd!}V(%iSgPe9p97s(EIq;G_a=;dHc3XS?w%L(7k>1DDwaB`) zgH5~G)QU=^jZMt64zTH2OZ(XkGjY1 zDRNIv#W_Xp>72w)XdIs~j$Fq5!^jIcMvpG`9UphSW9FY=-)Z|qUbV&Vnp5d?MY_jQf**GE_!5+aLKNC4}=Ex_?R4!eIB&scK44lWu#Uk+rnG5)MacV)lDe>pcqD+$+%|o+*kI6e_0R;f1f5OMJ zX|d;!Gmo6&yf}~&wE|v}FB1EZGgrv_IWsHMIdWV4N}SX<7a{Sn7O-OxJLV1f?2_0X zb`(4@CG1!#l%!k`n^dNY>sUmN=TJgQe zl2rHxCdS2xWghd*3U;j)R%ET9ac5PERbnPIE7+y+as`C|r9WX;3A>h%OPqCAkW2qV zY(=ip5*LZ96{#Y(T&S53#WVUgeHkA?}r}Wppg5 zk643QYYqB!{6Z2JVgFcl{6fqk@({oH9%$khzbR%5zij(kvf~G5*WN?Fee~l@JNx*B zvlr8I&Jj-TwcDmcjN51b?Cp0R@X7-|I@`_2w(R+wb^Nrq*Ye&e$#BpW>c&!{ICuGU3|5N-*$KRWDmTB&vqiaelxNq8^q4l$Ql z!drS5;T(||e&!sxDb5WvdUmWC{F+JWH_(hX&AG`YQj*Sc7vtC2bWY~5hdbO|fERn* zA?ILc2H#s!;2XS%zWHLo&qijYkfx2_3WcJ_S<^EVUEqUI_jA!K27WuhZad5TTD0A@s1$*2) zYx5))xE^zfQ;vu3K}_((Eup)YDDhl{uRQsAY;aeJ>BIqN6(6ovCALDNvcg%zhyUML z@Nd|&gifU;ah9-$nBZ2C$N6^%AEt^t&6Uc$hy6kfaF?;M!v2HaTAdYl9e!);;&3($y)^Zi@Sx)=9V~H$lO|ySd&Jbc+kMcTBGi- z6FKVWK+K4d&v3RcXpLxk!WaRpslBJjXQIkD4?PBX*eOFp_vB_cFXUINyCeAZtKUHpw z?{|m;d(uG{avhCzUI$wbu=QE}Kn}@K_RTYC5Ddw6%mKD)-gJOMfD*jjJ#-?hID6O{ z#82cs#!uvF{A}??*GAr6yXEhgU1{uyMNE=C__X*wXs-qFO=FU5HU$4~SRKaq@xe3J z`w$;I#|JO*!7;u)Iu_>`AG|Oxy%+eP%X%Ltx|)Z`A^AraADkR^<@8YOSNPy9I=y)- z&Rcx&7XQDY@%oLJGjw`&_S!#=oXBhPt22D?`t_Oj8XvsD2X7DG$ZrnCKQnLT`I*QW zG;i?1+1VR;gF=AP-{XT5bRti3PVm7A^3IU=`b-?Am^0+TQ%+xtd4;@_SEv55>B@5q zICw68n~ZOcdy6<^b+MV;OHLg@r>@4O+GG%x#mNK7_Z{+HT}yUL@U72Q2%s)MDNLBQUFgw_$q|2 zLx>B4@i!slGc;&(+XRp$3E*!+IC>lUf;O4Mqs}Vx%aBIjTy#u7b+zc&da0cQaXSVO*9Nc}!jXS}OFK?wRm9bAcfPX?9aGU*Tw;8S$Bo2dvG|l7 zjhSdfrub&JqF5P>S;3fZo9L9q11X>O4vMJ1RW>^)fGl9lu2t6V5Om(a>Si+B*J6q!#grI=HWe;56+_I;2!F_1&16bQE<3-CByfA0UL{% zg3L2*USbNZ?%Cn9kR69n+#?T68Sfib3l^ zhY)?7JBkI`ul%%(<|{tx8`<)-ZzS(&--!NcpXxR$qj6T}v5flEj!_x)=@A%}QD17* y0UY&doEeo-A6LL*VW|WE= { - var sourceKeys = Object.keys(moduleName); - var key; - - for (var i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - nativeModules[key] = moduleName[key]; - } -}; - -const require = name => { - const requireModule = name => { - var methods = nativeModules[name]; - var target = {}; - var loop = function (methodName) { - target[methodName] = function () { - var args = __arguments.length > 2 ? __arguments.slice(2) : []; - __callNativeModule({ - module: name, - method: __arguments[1], - args: args - }); - }; - }; - if (methods && Array.isArray(methods)) { - for (var i = 0; i < methods.length; i++) { - loop(methods[i]); - } - } - console.log("register",methods); - return target; - }; - - const MODULE_NAME_PREFIX = '@weex-module/'; - - if (name.split(MODULE_NAME_PREFIX).length > 1) { - const weexModuleName = name.split(MODULE_NAME_PREFIX)[1]; - return requireModule(weexModuleName); - } -}; - -__registerModules(['searchEvent']); - -const render = segment => {segment}; - -const View = props =>

; - -const Touchable = props => { - return
; -}; - -const Text = props => ; - -const NXImage = props => ; - -const NXLink = props => ; - -const searchEvent = require('@weex-module/searchEvent'); - -const WFWIDTH = 342; -const waterfallStyles = { -titleText: { -maxWidth: 290, -minWidth: 30, -height: 30, -marginLeft: 28, -marginRight: 28, -fontSize: 26, -lineHeight: 30, -color: '#444444' -}, -divideLine: { -width: 180, -height: 1.5, -backgroundColor: '#cdcdcd' -}, -wfDivideLine: { -width: 90, -height: 1.5, -backgroundColor: '#cdcdcd' -}, -wfWrapper: { -minHeight: 100, -width: WFWIDTH, -flexDirection: 'column', -justifyContent: 'center', -alignItems: 'center' -}, -wfLineWrap: { -width: WFWIDTH, -height: 64, -marginBottom: 20, -paddingLeft: 9.5, -paddingRight: 9.5, -flexDirection: 'row', -justifyContent: 'center', -alignItems: 'center' -}, -wfTitle: { -width: WFWIDTH - 40, -marginTop: 24, -marginBottom: 16, -flexDirection: 'row', -alignItems: 'center', -justifyContent: 'center' -} -}; - -const styles = { -tag: { -flex: 1, -backgroundColor: '#FFFFFF', -marginLeft: 9, -marginRight: 9, -paddingLeft: 16, -paddingRight: 16, -height: 64, -borderRadius: 32 -}, -tagText: { -flex: 1, -lineHeight: 64, -textAlign: 'center', -color: '#444444', -fontSize: 26 -} -}; - -class TipTag extends Component { - constructor(props) { - super(props); - } - _onClick = e => { - console.log("click go"); - let searchParams = {}; - if (this.props.data.q) { - searchParams.q = this.props.data.q; - } - - if (this.props.data.params && this.props.data.params.length > 0) { - this.props.data.params.forEach(item => { - if (item.key) { - searchParams[item.key] = item.value; - } - }); - } - if (this.props.tiptype && this.props.tiptype == 'voice_smarttips') { - searchParams['voiceFrom'] = '1'; - console.log("se go"); - searchEvent.searchOption("searchOption", { - params: searchParams - }); - } else { - console.log("se go2"); - searchEvent.search("search", { - params: searchParams - }); - } - }; - - render() { - let data = this.props.data; - let tagStyle = styles.tag; - - if (!this.props.isListMode) { - tagStyle = { ...styles.tag, - marginLeft: 5.5, - marginRight: 5.5 - }; - } else { - tagStyle = styles.tag; - } - return - {data.show} - ; - } - -} - -const _tiptag_export = { -default: TipTag -}; - -const TipTag_import_default_from__WidgetInWFStyle__tiptag = _tiptag_export.default; - -const WidgetInWFStyle = props => { - let tips = props.tips, - tiptype = props.tiptype; - - if (!tips || tips.length === 0) { - return null; - } - - if (tips.length > 8) { - tips = tips.slice(0, 8); - } - - let wfTitle = - - {props.topic || '相关搜索'} - - ; - let wfLines = []; - let tipLength = tips.length; - - function createWfLine(leftTip, rightTip) { - let tag1 = ; - let tag2 = rightTip ? : null; - return - {tag1} - {tag2} - ; - } - for (var i = 0; i < tipLength; i += 2) { - let wfLine = null; - if (tipLength === 2) { - wfLine = createWfLine(tips[i]); - wfLines.push(wfLine); - wfLine = createWfLine(tips[i + 1]); - } - else { - if (i + 1 === tipLength) { - wfLine = createWfLine(tips[i], null); - } - else { - wfLine = createWfLine(tips[i], tips[i + 1]); - } - } - wfLines.push(wfLine); - } - return - {wfTitle} - {wfLines} - ; -}; - -const _WidgetInWFStyle_export = { -default: WidgetInWFStyle -}; - - -const TipTag_import_default_from__WidgetInListStyle__tiptag = _tiptag_export.default; -const listStyles = { -listWrapper: { -width: 750, -minHeight: 162, -flexDirection: 'column', -justifyContent: 'center', -alignItems: 'center', -paddingBottom: 16 -}, -listLineWrap: { -width: 750, -height: 64, -flexDirection: 'row', -justifyContent: 'space-between', -alignItems: 'center', -marginBottom: 20, -paddingLeft: 11, -paddingRight: 11 -}, -listTitle: { -width: 750, -marginTop: 28, -marginBottom: 20, -flexDirection: 'row', -alignItems: 'center', -justifyContent: 'center' -}, -titleText: { -maxWidth: 290, -minWidth: 30, -height: 30, -marginLeft: 28, -marginRight: 28, -fontSize: 26, -lineHeight: 30, -color: '#444444' -}, -divideLine: { -width: 180, -height: 1.5, -backgroundColor: '#cdcdcd' -} -}; - -const WidgetInListStyle = props => { - let tips = props.tips, - tiptype = props.tiptype; - if (!tips || tips.length === 0) { - return null; - } - - if (tips.length > 8) { - tips = tips.slice(0, 8); - } - - const listTitle = - - {props.topic || '相关搜索'} - - ; - let firstLineTips = []; - let secondLineTips = []; - tips.forEach((tip, index) => { - const tipTag = ; - if (tips.length / 2 < 2) { - firstLineTips.push(tipTag); - } else { - const firstLineCount = parseInt(tips.length / 2, 10) + tips.length % 2; - - if (index < firstLineCount) { - firstLineTips.push(tipTag); - } else if (index < 8) { - secondLineTips.push(tipTag); - } else {} - } - }); - const firstLine = {firstLineTips}; - const secondLine = secondLineTips.length > 0 ? {secondLineTips} : null; - const listContent = [firstLine, secondLine]; - return - {listTitle} - {listContent} - ; -}; - -const _WidgetInListStyle_export = { -default: WidgetInListStyle -}; -const WidgetInListStyle_import_default_from__lib__WidgetInListStyle = _WidgetInListStyle_export.default; -const WidgetInWFStyle_import_default_from__lib__WidgetInWFStyle = _WidgetInWFStyle_export.default; -const defaultStyle__lib = { -container: { -backgroundColor: '#f2f2f2' -} -}; - -class Widget extends Component { - constructor(props) { - super(props); - } - render() { - const _this$props = this.props, - _this$props$model = _this$props.model, - model = _this$props$model === "undefined" ? {} : _this$props$model, - _this$props$status = _this$props.status, - status = _this$props$status === "undefined" ? {} : _this$props$status; - const _status$layoutStyle = status.layoutStyle, - layoutStyle = _status$layoutStyle === "undefined" ? 0 : _status$layoutStyle; - const content = parseInt(layoutStyle, 10) === 1 ? : ; - return {content}; - } - -} - -const _lib_export = { -default: Widget -}; -const Widget_import_default_from___lib = _lib_export.default; -const _data = __weex_data__; -const defaultStyle = { -container: { -backgroundColor: '#ffffff' -} -}; - -class Segment extends Component { - constructor(props) { - super(props); - this.state = { - data: _data - }; - } - render() { - const _this$state$data = this.state.data, - data = _this$state$data === "undefined" ? {} : _this$state$data; - return - - ; - } - -} - -render(); - diff --git a/android/playground/app/src/main/assets/news.weex.js b/android/playground/app/src/main/assets/news.weex.js deleted file mode 100644 index b8fc988542..0000000000 --- a/android/playground/app/src/main/assets/news.weex.js +++ /dev/null @@ -1,2266 +0,0 @@ -// { "framework": "Vue" } -"use weex:vue"; - -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 37); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 1 */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(3); -var createDesc = __webpack_require__(12); -module.exports = __webpack_require__(4) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(10); -var IE8_DOM_DEFINE = __webpack_require__(29); -var toPrimitive = __webpack_require__(16); -var dP = Object.defineProperty; - -exports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(11)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(51); -var defined = __webpack_require__(15); -module.exports = function (it) { - return IObject(defined(it)); -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(20)('wks'); -var uid = __webpack_require__(13); -var Symbol = __webpack_require__(0).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 8 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - -module.exports = true; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; - - -/***/ }), -/* 12 */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports) { - -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports) { - -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; - - -/***/ }), -/* 15 */ -/***/ (function(module, exports) { - -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(8); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(33); -var enumBugKeys = __webpack_require__(21); - -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(20)('keys'); -var uid = __webpack_require__(13); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(7); -var global = __webpack_require__(0); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __webpack_require__(9) ? 'pure' : 'global', - copyright: '© 2018 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), -/* 21 */ -/***/ (function(module, exports) { - -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); - - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -var def = __webpack_require__(3).f; -var has = __webpack_require__(1); -var TAG = __webpack_require__(6)('toStringTag'); - -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -exports.f = __webpack_require__(6); - - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(7); -var LIBRARY = __webpack_require__(9); -var wksExt = __webpack_require__(23); -var defineProperty = __webpack_require__(3).f; -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; - - -/***/ }), -/* 25 */ -/***/ (function(module, exports) { - -exports.f = {}.propertyIsEnumerable; - - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.fetchNews = exports.fetchDoodle = exports.readAbout = exports.saveAbout = exports.fetchAbout = exports.readGuide = exports.saveGuide = exports.fetchGuide = exports.readExamples = exports.saveExamples = exports.fetchExamples = undefined; - -var _stringify = __webpack_require__(40); - -var _stringify2 = _interopRequireDefault(_stringify); - -var _typeof2 = __webpack_require__(42); - -var _typeof3 = _interopRequireDefault(_typeof2); - -exports.createLink = createLink; -exports.createURL = createURL; -exports.i18n = i18n; -exports.parseLanguage = parseLanguage; -exports.setLanguage = setLanguage; -exports.clearStorageLanguage = clearStorageLanguage; -exports.getStorageLanguage = getStorageLanguage; -exports.getSystemLanguage = getSystemLanguage; -exports.getLanguage = getLanguage; -exports.jumpTo = jumpTo; -exports.viewSource = viewSource; -exports.setTitleBar = setTitleBar; -exports.fetchData = fetchData; -exports.saveData = saveData; -exports.readData = readData; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var stream = weex.requireModule('stream'); -var storage = weex.requireModule('storage'); -var navigator = weex.requireModule('navigator'); - -var encoder = typeof encodeURIComponent === 'function' ? encodeURIComponent : typeof encodeURI === 'function' ? encodeURI : function (x) { - return x; -}; - -function encodeParams(params) { - if (!params || (typeof params === 'undefined' ? 'undefined' : (0, _typeof3.default)(params)) !== 'object') { - return ''; - } - var array = []; - for (var key in params) { - if (typeof params[key] === 'string') { - array.push(encoder(key) + '=' + encoder(params[key])); - } - } - return array.join('&'); -} - -function createLink(name) { - var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var args = []; - for (var key in params) { - if (typeof params[key] === 'string') { - args.push(encoder(key) + '=' + encoder(params[key])); - } - } - if (WXEnvironment.platform === 'Web') { - args.unshift('page=' + name + '.web.js'); - return '/?' + args.join('&'); - } - var base = getBaseURL(); - return '' + base + name + '.weex.js' + (args.length ? '?' + args.join('&') : ''); -} - -function createURL(hash, params) { - if (WXEnvironment.platform === 'Web') { - return 'http://dotwe.org/raw/htmlVue/' + hash; - } - var url = 'http://dotwe.org/raw/dist/' + hash + '.bundle.wx'; - var paramString = encodeParams(params); - if (WXEnvironment.appName === 'TB') { - return url + '?_wx_tpl=' + url + '&' + paramString; - } - if (WXEnvironment.appName === 'WXSample') { - return url + '?' + paramString; - } - return url + '?wx_weex=true&' + paramString; -} - -function getBaseURL() { - var bundleUrl = weex.config.bundleUrl; - var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/') >= 0; - var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0; - if (isAndroidAssets) { - return 'file://assets/'; - } else if (isiOSAssets) { - // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/ - // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/ - return bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1); - } - return ''; -} - -function i18n(text, language) { - if (typeof text === 'string') { - return text; - } - if (Object.prototype.toString.call(text) === '[object Object]') { - var lang = this && this.language || language || 'en'; - return text[lang]; - } -} - -var supportedLanguageRE = /(en|zh)\_?\w*/i; -function parseLanguage(language) { - var match = supportedLanguageRE.exec(language + ''); - if (match && match[1]) { - return match[1]; - } - return ''; -} - -function setLanguage(language) { - var lang = parseLanguage(language); - if (lang) { - storage.setItem('WEEX_PLAYGROUND_LANGUAGE', lang); - } -} - -function clearStorageLanguage() { - storage.removeItem('WEEX_PLAYGROUND_LANGUAGE'); -} - -function getStorageLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - try { - storage.getItem('WEEX_PLAYGROUND_LANGUAGE', function (event) { - if (event.result === 'success') { - var lang = parseLanguage(event.data); - lang ? done(lang) : fail(); - } else { - fail(event); - } - }); - } catch (err) { - fail(err); - } -} - -function getSystemLanguage(done) { - var fail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - - if (!(typeof done === 'undefined' ? 'undefined' : (0, _typeof3.default)(done)) === 'function') { - return; - } - if (WXEnvironment.platform.toLowerCase() === 'web') { - var lang = parseLanguage(window.navigator.language); - lang ? done(lang) : fail(); - } else { - try { - var locale = weex.requireModule('locale') || weex.requireModule('local'); - var useSync = false; - var resSync = locale.getLanguage(function (language) { - var lang = parseLanguage(language); - if (lang) { - useSync || done(lang); - } else { - fail(); - } - }); - var langSync = parseLanguage(resSync); - if (langSync) { - useSync = true; - done(langSync); - } else { - fail(); - } - } catch (e) { - fail(e); - } - } -} - -var languageRE = /.+[\?\&]{1}language=([\d\w]+)[\?\&]?.*/i; -function getLanguage() { - var done = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {}; - - var match = languageRE.exec(weex.config.bundleUrl || ''); - var lang = parseLanguage(match && match[1]); - if (lang) { - done(lang); - } else { - getStorageLanguage(done, function () { - getSystemLanguage(done, function () { - done('en'); - }); - }); - } -} - -function jumpTo(url, title, lang) { - getLanguage(function (language) { - storage.setItem('CURRENT_DOCUMENT_URL', i18n(url, lang || language)); - navigator.push({ - url: createURL('bf0305c14b511b24a4e616f53926432b', { language: language, title: i18n(title, lang || language) }) - }); - }); -} - -function viewSource(hash) { - getLanguage(function (language) { - navigator.push({ - url: createURL('f6ce29faf686eabc38b410bf4828fa5a', { hash: hash, language: language }) - }); - }); -} - -function setTitleBar(options) { - var language = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en'; - - if (Object.prototype.toString.apply(options) !== '[object Object]') { - return; - } - var titleBar = weex.requireModule('titleBar'); - if (options.color || options.backgroundColor) { - try { - titleBar.setStyle({ - foregroundColor: options.color || '#FFFFFF', - backgroundColor: options.backgroundColor || '#00B4FF' - }); - } catch (e) {} - } - var title = i18n(options.title, language); - if (title) { - try { - titleBar.setTitle(title); - } catch (e) {} - } -} - -var storageKeys = { - doodle: 'WEEX_PLAYGROUND_APP_DOODLE', - guide: 'WEEX_PLAYGROUND_APP_GUIDE', - examples: 'WEEX_PLAYGROUND_APP_EXAMPLES', - news: 'WEEX_PLAYGROUND_APP_NEWS', - about: 'WEEX_PLAYGROUND_APP_ABOUT' -}; -function fetchData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - try { - stream.fetch({ - url: 'http://dotwe.org/query/weex-playground-app', - method: 'post', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - type: 'json', - body: 'name=' + name - }, function (res) { - if (res.ok && res.data && res.data.success) { - done(res.data); - } else { - fail(res); - } - }); - } catch (err) { - fail(err); - } -} -function saveData(name, result) { - var key = storageKeys[name]; - if (!key) return; - if (result && (typeof result === 'undefined' ? 'undefined' : (0, _typeof3.default)(result)) === 'object') { - result.timestamp = Date.now(); - storage.setItem(key, (0, _stringify2.default)(result)); - } -} -function readData(name) { - var done = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; - var fail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {}; - - var key = storageKeys[name]; - if (!key) return fail(); - try { - storage.getItem(key, function (event) { - if (event.result === 'success') { - var result = JSON.parse(event.data); - if (result && Array.isArray(result[name])) { - return done(result[name]); - } - } - fail(event); - }); - } catch (e) { - fail(e); - } -} - -var fetchExamples = exports.fetchExamples = function fetchExamples() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return fetchData.apply(undefined, ['examples'].concat(args)); -}; -var saveExamples = exports.saveExamples = function saveExamples() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - return saveData.apply(undefined, ['examples'].concat(args)); -}; -var readExamples = exports.readExamples = function readExamples() { - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - return readData.apply(undefined, ['examples'].concat(args)); -}; - -var fetchGuide = exports.fetchGuide = function fetchGuide() { - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - return fetchData.apply(undefined, ['guide'].concat(args)); -}; -var saveGuide = exports.saveGuide = function saveGuide() { - for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - - return saveData.apply(undefined, ['guide'].concat(args)); -}; -var readGuide = exports.readGuide = function readGuide() { - for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - return readData.apply(undefined, ['guide'].concat(args)); -}; - -var fetchAbout = exports.fetchAbout = function fetchAbout() { - for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - - return fetchData.apply(undefined, ['about'].concat(args)); -}; -var saveAbout = exports.saveAbout = function saveAbout() { - for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - - return saveData.apply(undefined, ['about'].concat(args)); -}; -var readAbout = exports.readAbout = function readAbout() { - for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - - return readData.apply(undefined, ['about'].concat(args)); -}; - -var fetchDoodle = exports.fetchDoodle = function fetchDoodle() { - for (var _len10 = arguments.length, args = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - args[_key10] = arguments[_key10]; - } - - return fetchData.apply(undefined, ['doodle'].concat(args)); -}; -var fetchNews = exports.fetchNews = function fetchNews() { - for (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { - args[_key11] = arguments[_key11]; - } - - return fetchData.apply(undefined, ['news'].concat(args)); -}; - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var LIBRARY = __webpack_require__(9); -var $export = __webpack_require__(28); -var redefine = __webpack_require__(31); -var hide = __webpack_require__(2); -var Iterators = __webpack_require__(17); -var $iterCreate = __webpack_require__(49); -var setToStringTag = __webpack_require__(22); -var getPrototypeOf = __webpack_require__(56); -var ITERATOR = __webpack_require__(6)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; - -var returnThis = function () { return this; }; - -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries - }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); - } - return methods; -}; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(0); -var core = __webpack_require__(7); -var ctx = __webpack_require__(47); -var hide = __webpack_require__(2); -var has = __webpack_require__(1); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var IS_WRAP = type & $export.W; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE]; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; - var key, own, out; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if (own && has(exports, key)) continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function (C) { - var F = function (a, b, c) { - if (this instanceof C) { - switch (arguments.length) { - case 0: return new C(); - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if (IS_PROTO) { - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); - } - } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = !__webpack_require__(4) && !__webpack_require__(11)(function () { - return Object.defineProperty(__webpack_require__(30)('div'), 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(8); -var document = __webpack_require__(0).document; -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; -}; - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(2); - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __webpack_require__(10); -var dPs = __webpack_require__(50); -var enumBugKeys = __webpack_require__(21); -var IE_PROTO = __webpack_require__(19)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __webpack_require__(30)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - __webpack_require__(55).appendChild(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; - -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); -}; - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(1); -var toIObject = __webpack_require__(5); -var arrayIndexOf = __webpack_require__(52)(false); -var IE_PROTO = __webpack_require__(19)('IE_PROTO'); - -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 35 */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = __webpack_require__(33); -var hiddenKeys = __webpack_require__(21).concat('length', 'prototype'); - -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); -}; - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -__webpack_require__(38); - -var _News = __webpack_require__(73); - -var _News2 = _interopRequireDefault(_News); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// show title bar -try { - var titleBar = weex.requireModule('titleBar'); - titleBar.showTitleBar(true); -} catch (e) {} - -_News2.default.el = '#root'; -new Vue(_News2.default); - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _mixin = __webpack_require__(39); - -var _mixin2 = _interopRequireDefault(_mixin); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// use shared mixins -Vue.mixin(_mixin2.default); - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _index = __webpack_require__(26); - -var utils = _interopRequireWildcard(_index); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var storage = weex.requireModule('storage'); - -exports.default = { - filters: { - i18n: utils.i18n, - url: utils.createURL, - link: utils.createLink - }, - methods: { - createLink: utils.createLink, - createURL: utils.createURL, - i18n: utils.i18n, - getLanguage: utils.getLanguage, - fetchData: utils.fetchData, - saveData: utils.saveData, - readData: utils.readData, - jumpTo: utils.jumpTo - }, - created: function created() { - var _this = this; - - // get and set language - utils.getLanguage(function (language) { - _this.language = language; - utils.setTitleBar(_this.navigationBarOptions, language); - }); - - // listen to the language change event - var channel = new BroadcastChannel('language'); - channel.onmessage = function (event) { - if (event.data && event.data.language) { - _this.language = event.data.language; - } - }; - }, - beforeDestroy: function beforeDestroy() { - storage.removeItem('CURRENT_DOCUMENT_URL'); - storage.removeItem('CURRENT_SOURCE_HASH'); - } -}; - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(41), __esModule: true }; - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -var core = __webpack_require__(7); -var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); -module.exports = function stringify(it) { // eslint-disable-line no-unused-vars - return $JSON.stringify.apply($JSON, arguments); -}; - - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _iterator = __webpack_require__(43); - -var _iterator2 = _interopRequireDefault(_iterator); - -var _symbol = __webpack_require__(62); - -var _symbol2 = _interopRequireDefault(_symbol); - -var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { - return typeof obj === "undefined" ? "undefined" : _typeof(obj); -} : function (obj) { - return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); -}; - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(44), __esModule: true }; - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(45); -__webpack_require__(58); -module.exports = __webpack_require__(23).f('iterator'); - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $at = __webpack_require__(46)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -__webpack_require__(27)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(14); -var defined = __webpack_require__(15); -// true -> String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__(48); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var create = __webpack_require__(32); -var descriptor = __webpack_require__(12); -var setToStringTag = __webpack_require__(22); -var IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(2)(IteratorPrototype, __webpack_require__(6)('iterator'), function () { return this; }); - -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(3); -var anObject = __webpack_require__(10); -var getKeys = __webpack_require__(18); - -module.exports = __webpack_require__(4) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; -}; - - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(34); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; - - -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __webpack_require__(5); -var toLength = __webpack_require__(53); -var toAbsoluteIndex = __webpack_require__(54); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - - -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.15 ToLength -var toInteger = __webpack_require__(14); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; - - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(14); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -var document = __webpack_require__(0).document; -module.exports = document && document.documentElement; - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(1); -var toObject = __webpack_require__(57); -var IE_PROTO = __webpack_require__(19)('IE_PROTO'); -var ObjectProto = Object.prototype; - -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; -}; - - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.1.13 ToObject(argument) -var defined = __webpack_require__(15); -module.exports = function (it) { - return Object(defined(it)); -}; - - -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(59); -var global = __webpack_require__(0); -var hide = __webpack_require__(2); -var Iterators = __webpack_require__(17); -var TO_STRING_TAG = __webpack_require__(6)('toStringTag'); - -var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + - 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + - 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + - 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + - 'TextTrackList,TouchList').split(','); - -for (var i = 0; i < DOMIterables.length; i++) { - var NAME = DOMIterables[i]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = Iterators.Array; -} - - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var addToUnscopables = __webpack_require__(60); -var step = __webpack_require__(61); -var Iterators = __webpack_require__(17); -var toIObject = __webpack_require__(5); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __webpack_require__(27)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - - -/***/ }), -/* 60 */ -/***/ (function(module, exports) { - -module.exports = function () { /* empty */ }; - - -/***/ }), -/* 61 */ -/***/ (function(module, exports) { - -module.exports = function (done, value) { - return { value: value, done: !!done }; -}; - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(63), __esModule: true }; - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(64); -__webpack_require__(70); -__webpack_require__(71); -__webpack_require__(72); -module.exports = __webpack_require__(7).Symbol; - - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// ECMAScript 6 symbols shim -var global = __webpack_require__(0); -var has = __webpack_require__(1); -var DESCRIPTORS = __webpack_require__(4); -var $export = __webpack_require__(28); -var redefine = __webpack_require__(31); -var META = __webpack_require__(65).KEY; -var $fails = __webpack_require__(11); -var shared = __webpack_require__(20); -var setToStringTag = __webpack_require__(22); -var uid = __webpack_require__(13); -var wks = __webpack_require__(6); -var wksExt = __webpack_require__(23); -var wksDefine = __webpack_require__(24); -var enumKeys = __webpack_require__(66); -var isArray = __webpack_require__(67); -var anObject = __webpack_require__(10); -var isObject = __webpack_require__(8); -var toIObject = __webpack_require__(5); -var toPrimitive = __webpack_require__(16); -var createDesc = __webpack_require__(12); -var _create = __webpack_require__(32); -var gOPNExt = __webpack_require__(68); -var $GOPD = __webpack_require__(69); -var $DP = __webpack_require__(3); -var $keys = __webpack_require__(18); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function'; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; - -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; - -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; - -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; - -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; - -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); - - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - __webpack_require__(36).f = gOPNExt.f = $getOwnPropertyNames; - __webpack_require__(25).f = $propertyIsEnumerable; - __webpack_require__(35).f = $getOwnPropertySymbols; - - if (DESCRIPTORS && !__webpack_require__(9)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } - - wksExt.f = function (name) { - return wrap(wks(name)); - }; -} - -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); - -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); - -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); - -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); - -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); - -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); - -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(2)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -var META = __webpack_require__(13)('meta'); -var isObject = __webpack_require__(8); -var has = __webpack_require__(1); -var setDesc = __webpack_require__(3).f; -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !__webpack_require__(11)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; - - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -// all enumerable object keys, includes symbols -var getKeys = __webpack_require__(18); -var gOPS = __webpack_require__(35); -var pIE = __webpack_require__(25); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -// 7.2.2 IsArray(argument) -var cof = __webpack_require__(34); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __webpack_require__(5); -var gOPN = __webpack_require__(36).f; -var toString = {}.toString; - -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; - -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; - -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); -}; - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -var pIE = __webpack_require__(25); -var createDesc = __webpack_require__(12); -var toIObject = __webpack_require__(5); -var toPrimitive = __webpack_require__(16); -var has = __webpack_require__(1); -var IE8_DOM_DEFINE = __webpack_require__(29); -var gOPD = Object.getOwnPropertyDescriptor; - -exports.f = __webpack_require__(4) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; - - -/***/ }), -/* 70 */ -/***/ (function(module, exports) { - - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(24)('asyncIterator'); - - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(24)('observable'); - - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -var __vue_exports__, __vue_options__ -var __vue_styles__ = [] - -/* styles */ -__vue_styles__.push(__webpack_require__(74) -) - -/* script */ -__vue_exports__ = __webpack_require__(75) - -/* template */ -var __vue_template__ = __webpack_require__(76) -__vue_options__ = __vue_exports__ = __vue_exports__ || {} -if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" -) { -if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")} -__vue_options__ = __vue_exports__ = __vue_exports__.default -} -if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options -} -__vue_options__.__file = "/Users/kw/github/weex-vue-examples/src/pages/news/News.vue" -__vue_options__.render = __vue_template__.render -__vue_options__.staticRenderFns = __vue_template__.staticRenderFns -__vue_options__._scopeId = "data-v-59a504d6" -__vue_options__.style = __vue_options__.style || {} -__vue_styles__.forEach(function (module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } -}) -if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) -} - -module.exports = __vue_exports__ - - -/***/ }), -/* 74 */ -/***/ (function(module, exports) { - -module.exports = { - "list": { - "backgroundColor": "#F1F1F1" - }, - "refresh": { - "width": "750", - "alignItems": "center", - "backgroundColor": "#808080" - }, - "indicator-text": { - "color": "#C5C5C5", - "fontSize": "34", - "paddingTop": "50", - "paddingRight": "50", - "paddingBottom": "50", - "paddingLeft": "50", - "textAlign": "center" - }, - "cell": { - "alignItems": "center" - }, - "message-time": { - "marginTop": "25", - "justifyContent": "center" - }, - "time-text": { - "paddingTop": "5", - "paddingBottom": "5", - "paddingLeft": "18", - "paddingRight": "18", - "backgroundColor": "rgba(0,0,0,0.1)", - "fontSize": "25", - "borderRadius": "8", - "color": "#FEFEFE" - }, - "message-box": { - "borderWidth": "1", - "borderColor": "#DDDDDD", - "borderRadius": "15", - "backgroundColor": "#FFFFFF", - "marginTop": "25", - "marginBottom": "35", - "backgroundColor:active": "#F8F8F8" - }, - "related-article": { - "borderTopWidth": "1", - "borderTopColor": "#E6E6E6", - "flexDirection": "row", - "alignItems": "center", - "paddingTop": "10", - "paddingBottom": "15", - "paddingLeft": "30", - "paddingRight": "20", - "backgroundColor": "#FEFEFE" - }, - "poster": { - "width": "680", - "height": "340", - "backgroundColor": "#D2D2D2" - }, - "title": { - "width": "680", - "paddingTop": "30", - "paddingRight": "30", - "paddingBottom": "30", - "paddingLeft": "30", - "fontSize": "38", - "color": "#323232" - }, - "shortcut": { - "width": "80", - "height": "80" - }, - "subtitle": { - "width": "550", - "paddingRight": "25", - "fontSize": "34", - "color": "#454545" - }, - "summary": { - "width": "680", - "marginTop": "-20", - "paddingLeft": "30", - "paddingRight": "30", - "paddingBottom": "30", - "fontSize": "28", - "color": "#929292", - "lines": 3 - } -} - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _utils = __webpack_require__(26); - -var modal = weex.requireModule('modal'); // -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -exports.default = { - data: function data() { - var dict = { - REFRESH: { en: 'Release to refresh', zh: '释放刷新' }, - REFRESHING: { en: 'Fetching ...', zh: '正在加载……' }, - UPDATED: { en: 'Updated', zh: '已更新' }, - LOAD_MERE: { en: 'Load more', zh: '加载更多' }, - NO_MORE_NEWS: { en: 'No more news', zh: '到底了' } - }; - return { - language: 'en', - navigationBarOptions: { - // backgroundColor: '#5F5F5F', - title: { - zh: '资讯', - en: 'News' - } - }, - dict: dict, - refreshNote: dict.REFRESH, - refreshing: false, - visibleCount: 6, - news: [] - }; - }, - - computed: { - visibleNews: function visibleNews() { - return this.news.slice(0, this.visibleCount); - } - }, - beforeCreate: function beforeCreate() { - var _this = this; - - (0, _utils.fetchNews)(function (res) { - if (Array.isArray(res.news)) { - _this.news = res.news; - } - }); - }, - - methods: { - refresh: function refresh() { - var _this2 = this; - - this.refreshing = true; - this.refreshNote = this.dict.REFRESHING; - var finish = function finish() { - _this2.refreshing = false; - setTimeout(function () { - _this2.refreshNote = _this2.dict.REFRESH; - }, 500); - }; - (0, _utils.fetchNews)(function (res) { - if (Array.isArray(res.news)) { - if (_this2.news.length === res.news.length) { - modal.toast({ - message: _this2.i18n(_this2.dict.UPDATED) - }); - } - _this2.news = res.news; - finish(); - } - setTimeout(function () { - return finish(); - }, 5000); - }); - }, - loadmore: function loadmore() { - var step = 4; - var currentCount = this.visibleCount; - this.visibleCount = Math.min(currentCount + step, this.news.length); - modal.toast({ - message: this.visibleCount > currentCount ? this.i18n(this.dict.LOAD_MERE) : this.i18n(this.dict.NO_MORE_NEWS) - }); - } - } -}; - -/***/ }), -/* 76 */ -/***/ (function(module, exports) { - -module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; - return _c('list', { - staticClass: ["list"], - attrs: { - "loadmoreoffset": "10" - }, - on: { - "loadmore": _vm.loadmore - } - }, [_c('refresh', { - staticClass: ["refresh"], - attrs: { - "display": _vm.refreshing ? 'show' : 'hide' - }, - on: { - "refresh": _vm.refresh - } - }, [_c('text', { - staticClass: ["indicator-text"] - }, [_vm._v(_vm._s(_vm.i18n(_vm.refreshNote)))])]), _vm._l((_vm.visibleNews), function(item, i) { - return _c('cell', { - key: i, - staticClass: ["cell"], - appendAsTree: true, - attrs: { - "append": "tree" - } - }, [(item.time) ? _c('div', { - staticClass: ["message-time"] - }, [_c('text', { - staticClass: ["time-text"] - }, [_vm._v(_vm._s(_vm.i18n(item.time)))])]) : _vm._e(), (item.type === 'article') ? _c('div', { - staticClass: ["message-box"] - }, [_c('div', { - staticClass: ["article"], - on: { - "click": function($event) { - _vm.jumpTo(item.link) - } - } - }, [_c('image', { - staticClass: ["poster"], - attrs: { - "resize": "cover", - "src": item.poster - } - }), _c('text', { - staticClass: ["title"] - }, [_vm._v(_vm._s(item.title))]), (item.summary) ? _c('text', { - staticClass: ["summary"], - attrs: { - "lines": 3 - } - }, [_vm._v(_vm._s(item.summary))]) : _vm._e(), _c('div', { - staticClass: ["related"] - }, _vm._l((item.related), function(sub) { - return _c('div', { - key: sub.title, - staticClass: ["related-article"], - on: { - "click": function($event) { - _vm.jumpTo(sub.link) - } - } - }, [_c('text', { - staticClass: ["subtitle"] - }, [_vm._v(_vm._s(sub.title))]), _c('image', { - staticClass: ["shortcut"], - attrs: { - "resize": "cover", - "src": sub.poster - } - })]) - }))])]) : _vm._e()]) - })], 2) -},staticRenderFns: []} -module.exports.render._withStripped = true - -/***/ }) -/******/ ]); \ No newline at end of file diff --git a/android/playground/app/src/main/assets/videoplus.js b/android/playground/app/src/main/assets/videoplus.js deleted file mode 100644 index 69e30afc30..0000000000 --- a/android/playground/app/src/main/assets/videoplus.js +++ /dev/null @@ -1,298 +0,0 @@ -// { "framework": "Vue" } -"use weex:vue"; - -/******/ -(function(modules) { // webpackBootstrap - /******/ // The module cache - /******/ - var installedModules = {}; - /******/ - /******/ // The require function - /******/ - function __webpack_require__(moduleId) { - /******/ - /******/ // Check if module is in cache - /******/ - if (installedModules[moduleId]) { - /******/ - return installedModules[moduleId].exports; - /******/ - } - /******/ // Create a new module (and put it into the cache) - /******/ - var module = installedModules[moduleId] = { - /******/ - i: moduleId, - /******/ - l: false, - /******/ - exports: {} - /******/ - }; - /******/ - /******/ // Execute the module function - /******/ - modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - /******/ - /******/ // Flag the module as loaded - /******/ - module.l = true; - /******/ - /******/ // Return the exports of the module - /******/ - return module.exports; - /******/ - } - /******/ - /******/ - /******/ // expose the modules object (__webpack_modules__) - /******/ - __webpack_require__.m = modules; - /******/ - /******/ // expose the module cache - /******/ - __webpack_require__.c = installedModules; - /******/ - /******/ // define getter function for harmony exports - /******/ - __webpack_require__.d = function(exports, name, getter) { - /******/ - if (!__webpack_require__.o(exports, name)) { - /******/ - Object.defineProperty(exports, name, { - /******/ - configurable: false, - /******/ - enumerable: true, - /******/ - get: getter - /******/ - }); - /******/ - } - /******/ - }; - /******/ - /******/ // getDefaultExport function for compatibility with non-harmony modules - /******/ - __webpack_require__.n = function(module) { - /******/ - var getter = module && module.__esModule ? - /******/ - function getDefault() { - return module['default']; - } : - /******/ - function getModuleExports() { - return module; - }; - /******/ - __webpack_require__.d(getter, 'a', getter); - /******/ - return getter; - /******/ - }; - /******/ - /******/ // Object.prototype.hasOwnProperty.call - /******/ - __webpack_require__.o = function(object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - /******/ - /******/ // __webpack_public_path__ - /******/ - __webpack_require__.p = ""; - /******/ - /******/ // Load entry module and return exports - /******/ - return __webpack_require__(__webpack_require__.s = 0); - /******/ -}) -/************************************************************************/ -/******/ -([ - /* 0 */ - /***/ - (function(module, exports, __webpack_require__) { - - "use strict"; - - - var _App = __webpack_require__(1); - - var _App2 = _interopRequireDefault(_App); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; - } - - _App2.default.el = '#root'; - new Vue(_App2.default); - - /***/ - }), - /* 1 */ - /***/ - (function(module, exports, __webpack_require__) { - - var __vue_exports__, __vue_options__ - var __vue_styles__ = [] - - /* styles */ - __vue_styles__.push(__webpack_require__(2)) - - /* script */ - __vue_exports__ = __webpack_require__(3) - - /* template */ - var __vue_template__ = __webpack_require__(4) - __vue_options__ = __vue_exports__ = __vue_exports__ || {} - if ( - typeof __vue_exports__.default === "object" || - typeof __vue_exports__.default === "function" - ) { - if (Object.keys(__vue_exports__).some(function(key) { - return key !== "default" && key !== "__esModule" - })) { - console.error("named exports are not supported in *.vue files.") - } - __vue_options__ = __vue_exports__ = __vue_exports__.default - } - if (typeof __vue_options__ === "function") { - __vue_options__ = __vue_options__.options - } - __vue_options__.__file = "/usr/src/app/raw/072b3765e21f00b469b67c324c6e3dde/App.vue" - __vue_options__.render = __vue_template__.render - __vue_options__.staticRenderFns = __vue_template__.staticRenderFns - __vue_options__._scopeId = "data-v-f7ea0eb2" - __vue_options__.style = __vue_options__.style || {} - __vue_styles__.forEach(function(module) { - for (var name in module) { - __vue_options__.style[name] = module[name] - } - }) - if (typeof __register_static_styles__ === "function") { - __register_static_styles__(__vue_options__._scopeId, __vue_styles__) - } - - module.exports = __vue_exports__ - - - /***/ - }), - /* 2 */ - /***/ - (function(module, exports) { - - module.exports = { - "video": { - "width": "630", - "height": "350", - "marginTop": "60", - "marginLeft": "60", - "backgroundColor":"red" - }, - "info": { - "marginTop": "40", - "fontSize": "40", - "textAlign": "center" - } - } - - /***/ - }), - /* 3 */ - /***/ - (function(module, exports, __webpack_require__) { - - "use strict"; - - - Object.defineProperty(exports, "__esModule", { - value: true - }); - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - - exports.default = { - data: function data() { - return { - state: '----', - src: 'http://flv2.bn.netease.com/videolib3/1611/01/XGqSL5981/SD/XGqSL5981-mobile.mp4' - }; - }, - - methods: { - onstart: function onstart(event) { - this.state = 'onstart'; - }, - onpause: function onpause(event) { - this.state = 'onpause'; - }, - onfinish: function onfinish(event) { - this.state = 'onfinish'; - }, - onfail: function onfail(event) { - this.state = 'onfinish'; - } - } - }; - - /***/ - }), - /* 4 */ - /***/ - (function(module, exports) { - - module.exports = { - render: function() { - var _vm = this; - var _h = _vm.$createElement; - var _c = _vm._self._c || _h; - return _c('div', [_c('videoplus', { - staticClass: ["video"], - attrs: { - "src": _vm.src, - "autoplay": "", - "controls": "" - }, - on: { - "start": _vm.onstart, - "pause": _vm.onpause, - "finish": _vm.onfinish, - "fail": _vm.onfail - } - }), _c('text', { - staticClass: ["info"] - }, [_vm._v("state: " + _vm._s(_vm.state))])], 1) - }, - staticRenderFns: [] - } - module.exports.render._withStripped = true - - /***/ - }) - /******/ -]); \ No newline at end of file diff --git a/android/playground/app/src/main/assets/weex_config_search.json b/android/playground/app/src/main/assets/weex_config_search.json deleted file mode 100644 index 1dcd86cd16..0000000000 --- a/android/playground/app/src/main/assets/weex_config_search.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "modules":[ - { - "name" : "tool", - "className":"com.taobao.weex.ui.module.WXModalUIModule", - "methods":[ - "toast", - "alert", - "confirm", - "prompt" - ] - }, - { - "name" : "toolError", - "className":"com.taobao.weex.ui.module.WXModalUIModuleError", - "methods":[ - "toast", - "alert" - ] - } - ], - "components":[ - { - "name":"diva", - "className":"com.taobao.weex.ui.component.WXDiv", - "appendTree":false, - "methods":[] - }, - { - "name":"divnot", - "className":"com.taobao.weex.ui.component.WXDivNot", - "appendTree":false, - "methods":[] - } - ] -} \ No newline at end of file diff --git a/android/playground/app/src/main/ic_launcher-web.png b/android/playground/app/src/main/ic_launcher-web.png deleted file mode 100644 index bb9222392478170c8c7cb37868b2d8b6741301c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19935 zcmeFZ`9IX(7dZZ$F|uXLR@M=stVOm7Qw-WjDzcY~vSt}sGSg~HDMfY-k?hHC7)g>W zL-u7X#bjT`I@|X-dcD7&&*S?ye1Bo)KJUF}Klhw-&vT+KSeWs0i*o}2zM{4%Xq+FWh*b06T5m(E-;u_k2{SMiJdf`MUUb#Gt1~Z^kzi(>ZD> z@=LhaK>TkOlvWFnga6ov1aVc3Q0k@>k)>t-|JPp?Blr4QRRP~abI4( zmP-v!bBK6zO!coKJQ`1CvL;v6m_w3ScjsZp@_ z!LTQLYv#`%e5i^&ed{3r+<4A8fT`)2SiXe3efw`0ZF`Lr1IxBr394(Se_47D?t(0U z4Pb`su<7a2h57kCG#ah?ie?;E>o8+co{C^(B1ZOMX58j3V@FNgy?h95{?<91*J(MAC9?8$=%4<=L}RP6WNTpX>rw=yYIkN}5Fi0@Q74>;>*+5hZf%?cDI@a_53 zjMe5XxzqcR_sZEgtUx<;SX~)`pvqAg5WuCb2PiBoZ0Z40bbR_ar0849E$6|kY6X^>$l-Kheq zV}?V^M(TQxbIlIg4ag*_#KK#ZvBkMiVW4`FfGbq2{0uQH@k^KOS5iMtN@<-F7u7%g-7DZrPa_r5_;wGOOzwKb!9RpX;+N{FjMh6mSpdXo zOYG?9tl8Pw`bPj#fct(YR-Iz+cz1XRzC$)73MJ|#M5mXSP$Zrg-}GI1;Wu)fsbXO} zo6%Wm6J2DuKiGS5d*RN^{fBvJdrE2{pxqqT(Xq)0na$%VsL`vi(;pI#I773WXji1g(L`Qptx9SpeIN-J38C3BA@?^UAwD1{SJ1uFGAmrpCWwvbW8|~&R2aY{s@4%uaKO-?PaFCqrb^tf5Zu#yFnbw zoLlj^Yd||+G)}5^q|C*jUO4{N3z20%?m4jZQ}pW4LE|PTJIhh6=0%F9}udtA8(n1no;~&0v{S1{_%H8D8 zT3=o0O1fi1$w!ztD{Ux_j3%h>ti=j{Klgh`7016Q=y>H1i7QlR=k2k~!bm|ZJCEpF zpw8%`D=r2ihy^$a*P58m`Qd;-4DVd!dQ8Q}w&sEtW;;fqeyfZ_2A7($ySn06lr)+0 z$vpIvL!GFJglWJ;a}<{^UDEAr_W|MPk2#RJKIF* zRte-hmEVs}Uq>M49gle?yY$%+B`TvAy+syg?)*Nt56fT12Yq!${I>$RJo@4w3{`51n*5O5GH@obu9F;HKbKb75EIU zJqX-3%rzp1Qp=0BjO-8XP{K*dSsIN2zH8dVCnC6EiP6x(IkMXg_<8p6te4{c*-x-H zxMA=RpbH_0JvW#z6-rk~!_A4CBwn!!gX^Z2{=g?jnDiqA-RIYrj$}b^s{%{U5CV~D zK+k8k@mO~3^B1zf?R#pQan6r##*`L~o-2LevS#uQ;~Z4_2%ZKTcg<3P-B3gdpaD4W zxA~nn5%mTqR=A#9bzr1|<7A6yMtYjU&f0k#dn^v27ot1Lj=hb&EsEVVyK*~R62i&6 zegDq_nB!1c5$ubWc^DFaer6Ydn8&k) z&O0yykKA6A z+XE&&JX3GOYw^+E-8JVbV2B0TA<*!t!R&KYyZZH=K~u~N{a78O-`2GRvZX%?gKxjz zX-BU<;3cX444m53@C>xu99xByR09UmK|230Q&Nh=QXT0nQ)F#-S#fV{o#8Te`8s^P%lnprGa;jn%g$#h@A zc*f^b6v`XM2-eway=U+C`RBLHV%)FxzqC20Q~hlyN{8^Id~gl0L*4`_b( zhJd>vft<)4Z=%BGJg@OvDwOHee7 zXE^~V7RdGs&6vBHSQ%wlYDxJjueu!SUQGVPh8ryE603~qL*q|dzi?m5bn|^BCt6`T zQCT~Z(YgaO7xMI2s00tn+NDle;x{K#=q^R(jd9Fy8)S@~iOiVX&ZFZ(KA+Y6@H-ri zL`=zr093hqlJd@aQJ2nUwbQwMn~2JdS{!M@&_BPyZfiCc=XO^>F#9k%aO2gP&HCD< z+X};b1X+AC@4FrTr^uX%&L!j7!%?fY5(+7m%Z(Yxr13W8Q)A&kL3cUJRUUtzGZNX&HRnQyF-O zH};yfPiXR0cq9wn4~-h$1EN|x?5M2vl#Hq0<3v2pKgJ|qpEf)7oRRnD^_TCH^%=iG zT^~1>^Vjha8l92PEE#?AmN?C#zOK}F5t&HNsUcdfmGx{Ekn1lVvg@0U7^UX=zI$0X zZ#1B4H_Mo>wZtjnkX$YAk>Ve6cn!5`y#5XS!#MrNV%ZGadBR7 zV?9M+;IylKN>0!noSa` z3;hd~&}8|&7CqsU(@w^e9OP1mb*Grdd0uyC!W_g)_9ze_aj}Mia zcsa_cYGZkuuE>MRP!{!?O&hAF-}Cfp91|rrzrmIDh3Nj|fU^gA*DW?U8;yyzLoRWGFK$mcxl&U6}d=C+7A%=QZ&g*u0iL zwsz%pQcL~b`djof0dJQu052>HN$SBlRitJL-B{}C|fI-MH zMf+>RZ)6yKs;n9AthAilXmTP-#o{)XHd^8@(jX6GN0)kG?e`nV{y{)KbW{#-2i){^*4mZrOP z=_NT&*&PNs_QpqLMGk`yr=d=<7IfeH-cWDzxz3TYavwKyiwHn{UE;{)DYPV+YfeJD z&gsWGzGB!VD1UBSEIQqIg#){v5t>Whc)EOs<@^bpX1x8B$Z4(Uq7VD%8^^>EfVm2! zHiiDjd3S&8D?ZH7_$0TuF0en%LnlU5OAdfRI1SJWWSz{Ks;yiuY#FBRFe$3>SaomB2{D5_`(m_gc3A z4a54fpXD;OCjI@<3AGj3t^kYh@zQ3*8!3jZv-mOK?fm60gXQ5;RwMx^QUHsz9y+x1 z-AP;xFy}+xic~!~*83a~fWfPH7r&o#!BN`&4x2XL|FblZJ|f63X;K>{E; zgwGfM)<+Ho;?~Z(rvfg~qI<4XS(v#kTkx>F#LpUHu_GvLEptGl{KS;L)MZB&|8m?K zoy(lxy6OZI;Sj>5)qs~I?`I$`F5IQ;x=&Pbm7cDRGQc^0bjpX(BX)x<8eD!@Y$3W1 z>$^ob#~B;LfSzXd!EpJ^90?Xn&is{lmbz?nril$`95=hlh=aqha3IfNWht7eNxkh0 zz-^&%{!07Z*x;b?*?lTTQJyd0TGVij5bU@w_Sxk_RX=vYWxHKCv;O+px$s_jg z!Wyu^l*Pm7Jpx?6N9%YPnN@zYwT< zaA3-Q0Yp5(lo+uQnO>dz4F-H^c`_Jo!_rLfsZ0Fawh=j+xqVd&%xo;`Yfn)s!iXO` z^6=U$CwZ!s5a;euOy+6Ek#cAF0oj%gmDWO`1+p2-FS`6{yFWw)H7YVZ_E9(hKMx}e zX(1#*+hRHAuafh^X`Rs+z}$E`u~xf?XLqzReF?oHO8;CpL@X0B_gAJtnMhT#`5m}^1 zw%ne2B?EjHer`W+$;r~OXTpHQPVwJ;_X|_M0l={rK58PWK9-}GSloh%A_ST`TGE?7 zVmO6(P;M&GB?D`hO^cz8FFu*5I~t+u8*YVQf=ITLmK^7L0~=W+neU{nfbl%u9}z1G zYZ#YVh^Chob!Ci)cq$eN&^wM0;~h)4y(^fVKDEsIUyc!{93F-5J*9Een5Exf)j+G1XMks-_6OitS`Nk+4OZ6#Q8n>3_}Bpn>T z`aH!t?H>NhbU&x+2a53@ZD;9b`2r(${4Ht_ns;mT^cyK0s*urH(dm-$XYTOU{d&8J zv0^n=i0TR{*;6)l{JD+KRWL?9>&#%{z4SO3^(}KOEJp zzpQpFiqPM;?9dV|1=}!rNB(igSvYpcn|UsG?$$+W*@EVPTd6fodQ>^&>OM0Kb!YXO zF1&Ie9u!<$4zz2bAjD0GR}!}Mt>Qh7WIq?Zp+>B`LdwthiST*i>X=17Pc^aZyp`{9 zu)g+-B}YexAU-&SBzi)m<+sJ`mt%@ho;1#ps$PsYl@_0-Ruxp~ZiN8VDEl2SP?F3$ zjJG}ah@){~yEA}yJ9Qtin~Sf7kCzw!1QJmwSXFtBlG64Pt3+fE)2TjKQ#i(DljSTa znS*Y>vNSwX(aDULWUhtzKRoDbpHAK|WiiJXqI6s6zKc$*G^}cKDTL8^+4A~_doC_j zjSFCTZewHP+I++2#zy^0=g0+e^w&G-<)s7bnf?-~o`E?nJ2?hLv2B3|mq!>;MnV#h zlb{-X-Um>x)AV0th07A~%w`h&LjgM%#|Q`cu5ab|Ah!2ZO7HGlHikMuqrd;6EsPr`a0sPdI( zwDfVQ6s3=!e;|PhDwhKtsyG+cafNE_z4Zw0{PQB{`cBmAF^h_dCcXtSXxkw@=XL&y z*f_kKNefB`p<7!TtY0!%_}oJ&DC-bscx-Hj)90M$9yXs1Tuku8hZzT%8jyy;lE=VY zH0DhPsd(;md;Ml+B$gh=KfjihE>4CbkwJgtRC%LVy0%KO zFr!eaV9na5E4+f3LAB~$gE*r7kTMRL0PL=Q3)O*^!SUp6SzCx?4 zxZyqVqM0w!&R*x+s9;gk=hEOXH%rzDnCTwvuy*$412{i3V=Ba9F6CQgH}id>Q+EdK zw_=k&O-KZ5J<8nt#iQQuV_15np$3jOg`|(E+lg0C6k#GKm&9Ur9@aOU*P6>Tns+yW z*d9u@p6NW#(!ee*Y}&2z49;YDY%>*DU6#1JpCEGj`aa zv!Pu~FPcs^;~C~`m1zU3oQPFTgRUs>G?f(sG?}V_4r@G(Gl)T)&XSndti;qtQN5w# zXLn-uG{aSIA(Yfp)@fkbuxkE*L2Z+IXGmNM=}#GL4r308?b+D!%FQ>`Q_sY?uJS-Y z-EcWGNK^`GKNQUa%P7-{G;}z+foGy|8SPBV8-JMYG!n_D7n4B}9W!89Y;0;<|7tm# z6_4%BDu^E%oDbTKP~5LDe0-1q+<=`R-eV>mY|^PWlbX#)OGYyN6zwTU4x{hgS zfydAf{c;+L%u`J;RBaS(R9GzT-vl#JBqxj@4$QHSlqB6}3h;H+IfS0A9_RHu8}1MpNH|5;XF>>PYAfvKXWbpZ&-(oN=hjo|MaHPd@OyJ0ecZSXddp(o)0YGF;)+R0|yP-$Rgy z0W34}NDa#u>6nZo{mgp`k}Xh7=m8$a#U~4y_uM-tI;n3~TfOpFXMdg^Wd>kp{}RMU zXb#4`aUJpTngIgP=-I%2N1d>V&TKQFL-%ZF)uedZ${io~^uhMU;Dzgr&UY#-gY+Ou z`m|tDLksC0E3A6(RlGCz3@sIoVm}qgUJ~lo>4;!V-4Ro<%`~F_wNz9E6w@$C;S1X* z=(7(SFPtdOjixHynRBIAr&muEZz3@2a3x6{I#B_`yWgoqH=g>NK0MaQs&+`!~oQmhEMf#{#9EY&rEh3T6cUZDFkJa66fza7Gy5me z*|6@ya)P}#F*hUJ&fnj^9EUrltk1DN3k7S1FlI3AP7JxjlzSz>YUFT8yC{p{Z-Ifo zm-Wgyf$YIQ$f8QBc~rxPn+JKlJUsII`uh09LcpTDot?hQo{fIb9|T6y98UyAeskuh zt?<0twZvdA^efV!rEGddOz$34e=QnqEyW5$$rVPmi<{pHQ+GISSE%}ylD8#jPV=g# zPmpsuxz-?xBArqKbacfWU7d?jW_w|ge+wsIx%T8FUYdmyO!Yo)PIsNZ`<~T!P=Dmu zC$j)duJe|5(zegAV+ojGJvm}S(=i{Pp+|IPI?v5ya8!-E?U>oiv3xyznjukxvazvN zg5wnkA%As5zzc}YeJ;(u?vgw=7BVVjM-~ckL1IzT@gffe1zP$=gByKvHZw$7i@QI} z3f#YC#11`1t{Q)X)0yAr*sD=d4yiEADR&NdxiB?0&17nx@;ft~l#lY~Bd+b{7;xg5 z89vM@ktdL2d-~-VecU#Z{V^Rs#PAL0D93H&b&kg*1Vn37wjcT!(1VZTDn)8B-nHbP zArhDz7@hTjX2Ai;@OKvm zFnfkOsNbD1#T+Oh7AS1fiyTSe(Tgp47~t>stfH;Naw`?kkij4g>HWxvKlR%_IQ^|h zKMj5HzhP|JP6PmC%cv)8y<^s&j8*{U3^e}VSAlaU zrhr-rz~4Tq^F@WB0kgZH#{`cj*!*~gL}j-NG+PL~jZ>ZYYP8EAQ(VvmO4KRwv)F*i z>_529*I+5aYX2?^_CLTE;wrsz8)4>(372B}0=09}5Jv>H~ z@mt|X+WFG<5!QBBtlE|URxXv6*pCDSqgLl6Yu6Tq*@Z3{^{D9GTW3?&xJm$?Y4;z_l2(9z8t}Ty z9r`#8Ogh^Q$^Dd)1%8mn9<$66N6KQFRyuHPW|bFbFQF8|8g{+moG*lx0*Bv;VI>uTc3}e+ zwnzP%M2QFH=^UK&Jj@eS;S;RE(hUZ}r1<;06&Mm=G2+-6ph7#!spbKzoHuZ4Y{;8i znuW*y!Heo4t@`4YSdFzu$8l{RQK8io4wiltc2Q67W;AWF{@ z;%wS(Bf*`Irzm;vZkhebkurEt`~rx<$aP{$rPT`zK}*)ClTuE}?od2Ult>b0 z;qt~uUF?4OvoCvCG+KC%s)kVfShTN3TqHhnVC-_s$-Bcp_WLPtxQiQk0PJZ4r;f2> zjd2ZQyTJN>MOLg^59}g&((wgY#$?fR&gqdmQ{c%iVv?R7`_j_RvT#7_SpC|asSFg& zXdoi?2m=t77yGUR8L(3iY2E|Ut>H&GMZC;mVjp_=4vQn40Me8T^m6V99st5(McYzP z3|M!1Dhz)nS!VvZuID)Uk??VrcHQ-xuiT(Utk)VL|5GZB+!#8%Z z%dWAfG#}Ze51<4HqIS1{HqfHgh>FVY=8!Mn{i&#YeWmNH*+N@?67?W&?M;oj1c#IY zCV`K^egHq%u7`dIEy;DH6de@5h}C#ytvrM<7i6*WEkWI=0YyoM?vC4Zs$zHX5XORD zu&k082Yq}I5La^fZ?L@xQhi;M_b{tV5-g5fgK!4seUPanXmWYEU3U=t;4{{Q(P zfGi3i4buySHCXa)YuGK2h2pmPG5riuW4cMd3Wco{5{Ygf%!(thr+ zO9cP{z;FLF;{WpjPILrP+|NM-z!_luZXZ@P79^niEffyo0k%OX0PPmQ>h1q)0vMt6 zFJ>QQ2R8zl1^TofH6}9&#Q&`T+x}qbMJI`}-1}MVz5yGz0{_WuZ(EP3<8ZC_%-X*|A5RRPYA{_fCh*!`H6R`1CKk>`hu9ELug#YC8 z3hG;877%_s_Q-$CwSsnaDb~yj{9gkuicy8dxmN!N;~@?c9i8nx&7xvN!heK<_R|-s zwI1D(FKlq_aIErwy9q*F243PgYEhO>7E|2VT@l@Q2AJptvj1-mIQVb!|N9~CDYPW} zBIS#xxGg9VknQj+n2QIVEF$r+cfc`84!jm1CZ0vj=smYTw@WEF3u5j8d0T!Z;AAx! z%sFH?xA!~(yh;S?V)UO1o`AUfLE{kk*kOe^6S2#Y-kxVv z0E5M1$J(TWz=5Bq6oIyX8X?b(bZVpU5Z)|ylDd`b`VoF?n{9<7_CS&oP3R4Auu@*rNz~h!3A^4v-Yips#Wg}p_V3bZjsy1V%$&E(x}{8&8J>y8 zP+uCko{k{nYr$EA|1|Ej2-d!WI@Wwi=T>ndc()%*-_w+MMhOITfxuFjSBC&ZGRkN8 z=z8oRcr#kxSc>Tg<^*o&R+ytBp)BVfrvh=G6T4q=Z&v&$VsNR^02ga8x1EzXc^KKI?oYX?5t`J{UtgJI)%a2QP!jjH=$GdwNv9o**JPNuzB+Nzl zGe=)(654*ofk4e9f*K6TjAXg5#}+_%s$5Os&42KnJ}AUIvY`H`R_m^k-Kihe2C{-<U{riqnQU5#JS3?VYb7Zpl0lPwcBJ7$MlC2fy%$! zibNd)zcUZS(^I92R@%G-=tBpiA#h;V^$2@lt_M6lMHkL>Pbi>$y9jaQm9t8Fe4c%}5hXpP8^YdsU4D@ymwb8dga5C`oAlPZ z84cwxcG<2W2-z>bD!&!lj>lPw#)KQ3-h`$uM0fiylKMwxV$jE&U0?*~9LkNC1p z^|U>|#zaP4*gzfOU=*`}ZS~2-vZQwo3G7g*5eIJH!;?-EqD~875tX?Wxu04^YOZ={ zmSv`WIu+2tN5u728Ya>U8H@M08_1_(Ees)Z|~r18%teZqpCIAezpx;rb~*J^KY|FeuF zz_UOEe`EBk#0N3QM|Pu0Lmp@CcTmMY+v{)@B_kP6G`ep`YyZN(8&j`00cZ(CEA~v~ zu+6joj7G?wO+#1rr#tg!LQN|dVU;bs^zspB7iFxC&yUmzZ~Md*&zJ5uBiuI$-~D+;_mMI){32QTqE(^_>d!lGBfRk zds3LSS@Wtnrf3Eo{`4GMm|N0Zd*3$HXz2Ty3}tlhD30`f*>Rs+f#`jg&Mm$~ebHUY zz6U^*JcaNF-NIsDiKOzBp@NRbpwAOeDo{se>h7EEh?V(Nk1;(rsbEeRbm!Th!PFA1 zGWPN0b{w^(YR~&&gC2v0@bjnlf4w~_+mGeH_?6`ZE|%;eZ2i&g95yl)Kh2{6;g z$E7VGPBobkeO|bwUbxSToRls$SRqkwo9e{=Q%%3dz&Rjj?W?-gkV8f_boo^4*PwR; zv2WT&sI;|Mh$!~h=2(!`KL*GH-+tU7%1BSt1t8`cKDzEW{kH2D3MoH`=YFd?-j8LD36&X@RGyJ-}dVhc2`g9E!4>Cmv`|zg{ zP1|eLFE3OvUOrp<;q?X%YEXK$zOB(*-Xe9g<=8*R%gs)(c%$sKsndyy$zRyS)O@$( zhyA(f?a#aZ?VB$TRs<9O_DjWYgTx#sqS@xnr$Fj{y~B5p^&E;S!OZAgg;0Y>Lm4+@ zcOy>t6R3c}q28xE3vVyk3+x|F))vl89PEP#2R^n3JWbwbHg_5+t_=>H>hLe?b_V7@ z+(4+mQ*U*%8faJp?}2-+?3tS>_jtw;p>%^4O&tcWNB4{lk=Y3$QfOYEBgNZkd(k_N z1M)7WH@0>HZ9aHdm%Qor<_pV{$Hz3N2Al{zKRc#ufA(%$g$w=Xi+TUawz~w@MtQnc%?AGo*iQR0@4evK zhJwH3Cw~=z%|&6=J88)??)zNaEZ$b731B@QEhL!#%R2@Rh_7bhtplz!B=6bAwMgPvyfavGA3QcwJluPE7xUKIE2HC8R2WXRbzeJs$(EzGV zP5oo~7k}X)N8->xYC2S-A>dB``@Pjh%9V|03A`zSU{GxSHU~IVwFj;;V7P3yxu@3M zE6j5&Z-$Znuq7FifZXW2K4bp4UQYXewpniUgj$Y z2^yt&9mRY3Cs9WH^BcKJ7A+^wR2TJ!go|?#77!*u+LoP&z7ge`k9L%r+mh_8P*BGn z!b$-Juy02JDO~3~|A1BbS-RAkf>*0i5xQXBho@gHN^ZsO4f);ex~Na@hRif93bV)kFrJrynmE|x!f8;%!oZdxp9 zmcPW7AMcR|1{pUj{-u2T#g6jw#&@U(fo(=#KDvnHuN74GouGGq<9ktkT-^YcsRcBV z(AuU~TeP^52FtjP#|dF)%&aXu-A*L4Wk^-vU8I0@eo}~@OvgVyRALZ_O z$bVA?D#RN6;kKQDQSMcK>r6EHqPtmt~C?a zpd7Bx-5VmYv&1`HR@zx!e<&5|Vt?cjZESFZaPzXYBCzqi(jP7W+7VcR>~pp6OwVcZ z@f^dzGy4^X-P-baoL4f+JEG2dEeE~(tsPaQ2M<|Y{beLn8}H(yiDH!)0LZ;I!v&i* zR?kErYW9~1&Qf?sbM{eF2z49w%1lIm<|>WqSBC({CjPPN6e1F@0L%fss7wK(;>6- zc9_3HyQLQZ64zAB$>M=DY(kz8R-$s-NL{5f=Z8ovPv28Bpok<{zgawRnn16;NOfRb zn66~IxLXPmz*eOfNl74dn)_j$qchCZcX0+OQnA)LsAC5fN7QO^52r4XWNlK#Ugs_j z)?GRh0_+AINMP&?DuOJ8%2T~yDOzi!_&9c1t=|}b6t>AWaABvu&$k{EXn>2kSap24 zpqD}Rh?dxuNZh#lc)#*RT}nf5@s2mw!~>P`B3=A+diy+YqbN3FGqP{<@fy9%HD=*p zPRbg+0)Od5M#P2%b0Kn9k>Wgk%ts&U*q`ecoouqbQ)?o21$OV`_$i`T41JLA+Wl{6 zhowbrqOu>Vp;~LZll)u?7ixdln`Nk+1bcTsd{)7uJiXXLIo{{jy)1}pr+;Xo@zX}H zb6P^*_RH_YJ21!gw}zNj4vTZ~!JwcfAc1`{ydwiCBVPi(-7%sVX}sP8?V8z)=dc2% za|e%X($g5P&mgjoBz68xJ}<1pawdW=TBIZo2|4e)`wr37ew|t%G!*{&PXwc9LjMY) zy2}(Yznxlh&;=TIi#k%vfqy1ixjmCs5D2mH5ndQa!dY89-pd<&jM7}0Ub8+>IAb{Y zZG!`R)xqg?c$PePC?(}TQUE+WdX~N+Ld6!&xYnLrZs309|7iS$j&2?~bGJk&Kg-U~ z#}}WcUN2I0zow$Xy)g{!t#UOJ5|O>Ze*xz3YS8JS!qS1mIz*cr2 zhwHnwd=(!6ZvnR#(F-2>Mj5K>xS&O_lYOTE%O=S6mTZnyRnlr)xOEiH65}=h@kfuE zmK6jX1Cf-EBP%*3${r>XA>GXF&l^$RABFI${E)YIxJq7PLwOEW93sHrmD&a!IV`(2 zpVcP3ySBA2vJV}j_E9+P__yKZ`bF`+v;8sNLCqgjjm7&-74`E!3Sw_x73!K4+w(jq z2pcPTqNbm@xRuT-W%=?EIJI=SY>$3}y5URP1M4Fa4tKV6u-k^3gI!#$2IbxbKktpo zq}cy@m9&(ry7#l{Lm@py7v~t#`j<^f&^=&}15q%-`l~C?SGI~^#u#1tJhR2$g}3LfB#6B*vS0+`KEV6 zvvO0<>Z4!hHTo|etW;7;D^$R7|CU{~jNpN}ve5UZz?VmsbpNeBh`v1M6BHY6Jlq~U zfsfX{$^rB85vFhFSF?Cc(viys3!%rgAN8FM__@I10Mz7S)NQ7VCi{`nd#|E&uG9piT=#Uau3Hpk{#e z%uA~&sA3C^ulTBN((4vYKWLZi&V>oERKO~p+?$U2Fe`lj)?OaAg_8U)qUmD)s62xH z6M^58`)OdxOf@C+t?xlA*_5rOYi6{}ATfrIH z-iFez_|D;Ar+=P8uyngyH4toSUbQWqn=tQfDv`UTJVakR(568#sdgzOAM&n{2)yRv zSe(`7BP973nV+wnvxyhkT@BtN1{vg!=<_#YeovNVwW_C{xQXIs&wS}-&{qacSKVh| zL@n%G0pm4)o?z4e0N(b)f24^v9Lfxen>pIu5tS^BIX3x5FHaDAbQQIr>dVroTtH1#sI&uzQ#eYi=C1e6uv zZ0$q(iDnI6LS{L;CwM}(@`Peerms}-dw$AKwbAFYb)x5_CIJI?J9ZNXz!_@3^QBb} z@k$v$A7bkax^AYUvw>Qy_TA@8zlF*EBsJwQIFajf&tf;l0p#D04;(G$Q5L{v9#w&G zm=p)@^KCywe0Ynv5uVNiqIn}5*t?g)-;@ZvI-S*S&>xvzef0U3l6p9HIf3_waO_GQ$Gumtx`(syo09(saxkc>452 z7#Ez~8iGDGx+6|J+b0X0JYmq4xy1&J%d-aPbkIp)FO{~hYhh9~w?lz>r#S1@JifhXpZrgNgzRH(>S!R<+=FYD}CD8v~$L z?&Ab&Fyi7*)gkAaafA&+V)=1gi>fK>(L(_Ft?RZun}kWmuzJXbI1J23;XQ|dM~~Q8 zh#Vfo7%JKID%6x(P$mO+x3*;i4m8(aA(DParPoQaO30j0;D90|Xu-Ex>c6i^&0s0Y zNLUWojjZ8i;^`3LCp1wk+N?o~lQoBBV%=UIE)DMC@eNthyF*wmZo<7viY%ZpO5uyX zf~N93vao#!0O#@^*CrE3M++4c6n0kI)a3x#eb|$x0Nimva!~xO`w;*Fn5VINO77gf zTiTIfgyDp6MgdjMPMT2Q?^p2kD*H9Cc%OIO#RUm=P6UwZ@9#ty(cTF`I4i){8jk=) zzDwY4X=G`E(J}ZA2?1X3<`IUNIXQ<$OI;%j!7i~koJeyR;p(u*3UoQwh|UGUUa%fj zsG(rVj>F*W*Ts#07kX=I^hfK0%M3RLT&r30Giz#gDq0s|NC57xwGp-GE!18Z>VFLm zURvoxe9KMB%F5O^8<=$Pwdmz=7@PntxjXf3$r24p8#wv3Vvo0%XuF<#h(!XqKOuT7 zuEif>-pq$xUG;MWt8Qa=Tcm7cfkq*0&{r-(#6n^K*t-|b4#5T-s&t~5&6)V93ycnb zSp&?Qp#&TbH=zmKYEND-7le&Vak5?qjRzaaNQ0?H)<9g*z zY{*X$%>0iZpUyC6I@0W2jw@WW7r<(85^~O`+(Lye$Lk3SfR_(GTO>ZfuFCh_7}x>S za0)ne2+(xvppnqg@u!irD@b_&0QRjjytW!DDz2=pt*wJ?kiWpL9ELOaQXCHvDlK@yC zUy?itFcy>C()IA~-`~7v=vJ2nswaS)27#@RI?@mk>Ojq6&74|=-LZ#29jG49fx6BW z*_IX@)c2Q_8QpTT&9i(;vVDFMGgwCft%pRdY{tAW*sx8^m&M4)0WvYa-fqeQJ<5O& z;vo?BW2N$W=g$w~_s3Y++fh{L24xw11t0yVp`AY5XEaAA1@xTnx8sfa^~zG} zBrpcX9EGp}V@&Ap#AWXmXFWsm)`zKhD~Ru&&22h$vwt9g&t7=HI;4&U07?^Ib(n<&p$fiLA85Y?LSlG%2o@P?J)xyU}0)Op*{R-mX@!vkC0@$pB z$0H}0;0vJSD+GR%=XYo(H-?`Uj?prnV{FTAwV$Z%uP!aM${J>iwLJg;*q=uj+7xGN z>nwJ5_MM%%;<@{qqm?6fOtaBp`WMfd)^G_xILTK5jMVm@`+Y0h>R}T+&STa7xvyWp z-g_1+MR94k7Z2pHf%@Vmbtx9bFO!gxlgg$9+@%R6v;pEa_FTy4_plL#6^*i zdoW+ei*LsNxjJo9tYIsicV!>|tGc1VRpJlDWdY`(m~RPVJg9}5?rV&SS!P~tdN+@H z-Lho9$jjuFBy(Q9ZYUB42M~}k5F>d94uJ#R+s>eIF8SEjq8B9gbqx*uVD0i$6qC;Z z_Tr|F-J6Q7w2zJa75#FWNfIjq;-mnG1E+4cJ|NM(jhn(4ft^_mmCiMVT#?>_&lUw- z&V$QCI=6?f8C{|E7dso(k(Zt$7Viz+G0rv(3xB=Mlv4#vfShaM;~%X0Ad=d=<6CAe zMtW1B$CQ=N1}%*h_V)HRX}cp}aUg#wstoNJA2~uF*XK!0zhh8)S+YPL?@AN%Co{rV zitwQa5bU9LyMoHO94(^!ls{ZaU0o*pC~giqAPbs`v@xTvw2UvkaHG;9Bao3EJbi%P z?i0TDtoNb$`TcFnMr%xn1BXVp7NJGXSQjI9l^8srgq>oJ_;(uU48M6%q1#o2`F!{R zSq&lzy8p+O%Vwc;v}70x)$Hr$Gx+J|&eqh6IbNL+-^5-l4A1N|z4PtmQ)UvAe;iGC z`JCNCm)k|1a5K?yqbYc8I;s#>F80-gki$OzKFV1F3tAr=LFPU3yNHD016_xp zXr;$#2V9Iz4?(rVzD9xq(B*D8|JTmVd#&sjE)P^g(=RRLeNlQ%B39EXcN}-M}h4=drQDTnXUSZjVFQj%} zIBv@zHf4sXM%{lgoJhb7a=jn=b&)eNgIo6;bd0f4$!uHicgFOLRQuO@nGn<>2CD8( zEl&zch-e(psQsMSp2PW5cY*zxqi*DW@Ml$uyUb$#pJvXzsi`9j<4FvNpynik+{7Se zq*N{jD5z8tX@pP#g`l*GA%Yhwri@BO<&qHPB8f&(3mvOxG*qof5H+A8At;bREf|?X zL;(p%ql6MFmqRY+bm^z)2YBAydG?uo_mAJcjf(r-{W}^m#%lOObwRrfZYdeE>T2$j zV-rR%MiP=ESDHTUyc4@+t7WJd9ZEvgoz^Zh$(X7_;)PlTPUC^s9Klm!ZI-RVlgY?) z!<+jxhXXYIb95fyEY}>o7!t_i5bG|r6jc~n?;l^~zT$4VCUSwHm537#^Tuu~YPx6d zeYKUr*zb?NowB=6_}9oPs;Uv z1_3II7n0Pzb`sd$WgB4`)`Qdw%=MYc*?m79c_-e6=w;GRn*$mvKac$3t_$KQUTelYIQcrKZ`A zY~_&~iuPK5R`MWq^91(x;Wdn9Mn77M_c(gyZ{!&UnXrqDnCsJ=t|}km-eXxD01|a- zrJ^Y%?$s#v+C_|c>x$4JXH;V*wSU31Br*+hp|p*^D29f|Tyo-6L;y12ZWOT!8AoA^ zadxXEt=^Is{395wP=u0&!T>u-3h5l1kQzk@cmAGiY9&X`qr@)qw87!JIEE#Qro2B* z3Fxou1pe~B;9H2g(;PGj+j8*Zr*}G5q_0VZN!;!hNOH2#=9nqHQVBb6P1f9ir5$ zolz|p+waA<4A3e*-$eFT5L@ErYoB*+X{~lBIcwWes&bAxS0E_8AUcMUa5#zhd~cUF zBvh#v(B($;v`O~a3YR{Zod8R>!pE`T9VBR%lIHSzg9jVj$!s5=fSS zF2eS&<&RA_k>EA7#nkvusWZNePl*3e@KT^?4zK6&m4|HeX0m%FH_8$+f*6 z0bLRWw6%ks$DGyHO*znQ7)pIqu}N0Qc>HSo0=*F>VQ(&*EwU=BI>AB~2A2u5+oDzT zb&>PJ$w7XQ2N}tdEX)mwv%8)Ey#RA_RFx%}Net&CBg36D$?)hJk}jSRc*%RPf`>Y+ zgFIsKL4WWC)SRf6LpaTPKSbxun+Swf6XSi5gOX)HKYW_Mld&YpI3&)`x+SQ5N(~#P zHvB2o!37j3%nfP?d4H1b1zmANSi`NR#9tu`|7F(3J3tAB0yI?Ywl(XsN#m zWYe`a*f)nZVR?r(pxK&HZxEI5Se{1{J-KuKIGsF?fU95fJe{vEPA$#LZ5E`&WD0x> zVO{4%)h(}cY}?dA&o6BzQrA$Zpa;ggRxdi^Hz{!HTHNG)Bkyd0Db3H~h%GD!fh(ap zl{{xA+Ub7t{CS3eVO_$nWn!AX1D&$7YTo8YHg+WZI;f#=xv;L$WiJ0Kp2 z9Q6JjDmZ_N7fhe46_gP6^^Ui(?1a5M-&EjU``$Zafh#!vAc|`?Kq7D)TZb3?AIFlF aJ+@$h9DjEAhP%KN94>lO97`U-6a5RR2_WSF diff --git a/android/playground/app/src/main/java/com/alibaba/weex/BenchmarkActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/BenchmarkActivity.java deleted file mode 100644 index 8e7db0010e..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/BenchmarkActivity.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex; - -import android.os.Bundle; -import android.support.test.espresso.idling.CountingIdlingResource; -import android.support.v7.app.AppCompatActivity; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import android.widget.LinearLayout; - -import com.alibaba.weex.commons.adapter.ImageAdapter; -import com.taobao.weex.IWXRenderListener; -import com.taobao.weex.InitConfig; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKEngine; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.common.WXRenderStrategy; -import com.taobao.weex.utils.WXFileUtils; - -import java.util.HashMap; -import java.util.Map; - -public class BenchmarkActivity extends AppCompatActivity implements IWXRenderListener { - - public final static String ROOT = "root"; - private final static String TAG = "WEEX"; - private final static String URL = - "http://h5.m.taobao.com/js/src/weexlist.js"; - private WXSDKInstance mInstance; - private LinearLayout root; - private long startTime; - private long endTime; - private long duration; - private boolean perfStart; - private boolean perfEnd; - private boolean isWeex; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - root = new LinearLayout(this); - root.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT)); - root.setOrientation(LinearLayout.VERTICAL); - root.setContentDescription(ROOT); - setContentView(root); - root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - endTime = System.currentTimeMillis(); - Log.v(TAG, "End: " + endTime); - if (perfStart && (perfEnd||!isWeex)) { - perfStart = false; - perfEnd = false; - duration = (endTime - startTime); - Log.v(TAG, "OnGlobalLayoutListener: " + getDuration()); - } - } - }); - WXEnvironment.isPerf = true; - WXSDKEngine.addCustomOptions("appName", "WXSample"); - WXSDKEngine.addCustomOptions("appGroup", "WXApp"); - WXSDKEngine.initialize(getApplication(), - new InitConfig.Builder().setImgAdapter(new ImageAdapter()).build()); - } - - @Override - public void onStart() { - super.onStart(); - if (mInstance != null) { - mInstance.onActivityStart(); - } - } - - @Override - public void onResume() { - super.onResume(); - if (mInstance != null) { - mInstance.onActivityResume(); - } - } - - @Override - public void onPause() { - super.onPause(); - if (mInstance != null) { - mInstance.onActivityPause(); - } - } - - @Override - public void onStop() { - super.onStop(); - if (mInstance != null) { - mInstance.onActivityStop(); - } - } - - @Override - public void onDestroy() { - super.onDestroy(); - if (mInstance != null) { - mInstance.onActivityDestroy(); - } - } - - @Override - public void onViewCreated(WXSDKInstance instance, View view) { - if (root != null) { - root.removeAllViews(); - root.addView(view); - } - } - - @Override - public void onRenderSuccess(WXSDKInstance instance, int width, int height) { - root.postDelayed(new Runnable() { - @Override - public void run() { - perfEnd = true; - } - }, 1000); - } - - @Override - public void onRefreshSuccess(WXSDKInstance instance, int width, int height) { - - } - - @Override - public void onException(WXSDKInstance instance, String errCode, String msg) { - - } - - public boolean isRenderFinish(){ - return perfEnd; - } - - public WXSDKInstance getWXInstance() { - return mInstance; - } - - public void loadWeexPage(final boolean weex) { - isWeex=weex; - perfEnd = false; - runOnUiThread(new Runnable() { - @Override - public void run() { - if (weex) { - if (mInstance != null) { - mInstance.destroy(); - } - mInstance = new WXSDKInstance(BenchmarkActivity.this); - Map options = new HashMap<>(); - options.put(WXSDKInstance.BUNDLE_URL, "file://assets/hello_weex.js"); - mInstance.registerRenderListener(BenchmarkActivity.this); - perfStart = true; - Log.v(TAG, "Start: " + startTime); - startTime = System.currentTimeMillis(); - mInstance.render(TAG, - WXFileUtils.loadAsset("hello.js", BenchmarkActivity.this), - options, - null, - WXRenderStrategy.APPEND_ASYNC); - } else { - root.removeAllViews(); - perfStart = true; - startTime = System.currentTimeMillis(); - View.inflate(BenchmarkActivity.this, R.layout.hello_weex, root); - } - } - }); - } - - public void loadWeexPage() { - loadWeexPage(URL); - } - - public void loadWeexPage(final String url) { - perfEnd = false; - runOnUiThread(new Runnable() { - @Override - public void run() { - if (mInstance != null) { - mInstance.destroy(); - } - mInstance = new WXSDKInstance(BenchmarkActivity.this); - Map options = new HashMap<>(); - options.put(WXSDKInstance.BUNDLE_URL, url); - mInstance.registerRenderListener(BenchmarkActivity.this); - mInstance.renderByUrl( - TAG, - url, - options, - null, - WXRenderStrategy.APPEND_ASYNC); - } - }); - } - - public long getDuration() { - return duration; - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java deleted file mode 100644 index 2f0f97139f..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/IndexActivity.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.Manifest; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.pm.PackageManager; -import android.graphics.PixelFormat; -import android.os.Bundle; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.support.v4.content.LocalBroadcastManager; -import android.support.v7.widget.Toolbar; -import android.text.TextUtils; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.widget.Toast; - -import com.alibaba.weex.commons.AbstractWeexActivity; -import com.alibaba.weex.update.CheckForUpdateUtil; -import com.google.zxing.client.android.CaptureActivity; -import com.taobao.weex.WXSDKEngine; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.common.WXErrorCode; -import com.taobao.weex.utils.WXFileUtils; -import com.taobao.weex.utils.WXSoInstallMgrSdk; - -public class IndexActivity extends AbstractWeexActivity { - - private static final String TAG = "IndexActivity"; - private static final int CAMERA_PERMISSION_REQUEST_CODE = 0x1; - private static final int WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE = 0x2; - private static final String DEFAULT_IP = "your_current_IP"; - private static String sCurrentIp = DEFAULT_IP; // your_current_IP - - private ProgressBar mProgressBar; - private TextView mTipView; - - private BroadcastReceiver mReloadReceiver; - - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_index); - setContainer((ViewGroup) findViewById(R.id.index_container)); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - getWindow().setFormat(PixelFormat.TRANSLUCENT); - - mProgressBar = (ProgressBar) findViewById(R.id.index_progressBar); - mTipView = (TextView) findViewById(R.id.index_tip); - mProgressBar.setVisibility(View.VISIBLE); - mTipView.setVisibility(View.VISIBLE); - - - if (!WXSoInstallMgrSdk.isCPUSupport()) { - mProgressBar.setVisibility(View.INVISIBLE); - mTipView.setText(R.string.cpu_not_support_tip); - return; - } - - if (TextUtils.equals(sCurrentIp, DEFAULT_IP)) { - renderPage(WXFileUtils.loadAsset("landing.weex.js", this), getIndexUrl()); -// renderPageByURL("http://dotwe.org/raw/dist/2bbe1860da4669a68595c1aed01d7fd2.bundle.wx"); - } else { - renderPageByURL(getIndexUrl()); - } - - - mReloadReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - createWeexInstance(); - if (TextUtils.equals(sCurrentIp, DEFAULT_IP)) { - renderPage(WXFileUtils.loadAsset("landing.weex.js", getApplicationContext()), getIndexUrl()); - } else { - renderPageByURL(getIndexUrl()); - } - mProgressBar.setVisibility(View.VISIBLE); - } - }; - - LocalBroadcastManager.getInstance(this).registerReceiver(mReloadReceiver, new IntentFilter(WXSDKEngine.JS_FRAMEWORK_RELOAD)); - - CheckForUpdateUtil.checkForUpdate(this); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - if (TextUtils.equals(sCurrentIp, DEFAULT_IP)) { - getMenuInflater().inflate(R.menu.main_scan, menu); - } else { - getMenuInflater().inflate(R.menu.main, menu); - } - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.action_refresh: - if (!TextUtils.equals(sCurrentIp, DEFAULT_IP)) { - createWeexInstance(); - renderPageByURL(getIndexUrl()); - mProgressBar.setVisibility(View.VISIBLE); - } - break; - case R.id.action_scan: - if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { - if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { - Toast.makeText(this, "please give me the permission", Toast.LENGTH_SHORT).show(); - } else { - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE); - } - } else { - startActivity(new Intent(this, CaptureActivity.class)); - } - break; - default: - break; - } - - return super.onOptionsItemSelected(item); - } - - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - startActivity(new Intent(this, CaptureActivity.class)); - } else { - Toast.makeText(this, "request camara permission fail!", Toast.LENGTH_SHORT).show(); - } - } else if (requestCode == WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE - && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - } - } - - @Override - public void onRenderSuccess(WXSDKInstance wxsdkInstance, int i, int i1) { - super.onRenderSuccess(wxsdkInstance,i,i1); - mProgressBar.setVisibility(View.GONE); - mTipView.setVisibility(View.GONE); - } - - @Override - public void onException(WXSDKInstance wxsdkInstance, String s, String s1) { - super.onException(wxsdkInstance,s,s1); - mProgressBar.setVisibility(View.GONE); - mTipView.setVisibility(View.VISIBLE); - if (TextUtils.equals(s, WXErrorCode.WX_DEGRAD_ERR_NETWORK_BUNDLE_DOWNLOAD_FAILED.getErrorCode())) { - mTipView.setText(R.string.index_tip); - } else { - mTipView.setText("network render error:" + s1); - } - } - - @Override - public void onDestroy() { - super.onDestroy(); - LocalBroadcastManager.getInstance(this).unregisterReceiver(mReloadReceiver); - } - - @Override - public void onPause() { - super.onPause(); -// WXSDKManager.getInstance().takeJSHeapSnapshot("/sdcard/weex/"); - } - - private static String getIndexUrl() { - return "http://" + sCurrentIp + ":12580/examples/build/index.js"; - } -} - diff --git a/android/playground/app/src/main/java/com/alibaba/weex/SliceTestActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/SliceTestActivity.java deleted file mode 100644 index 2b4c68371a..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/SliceTestActivity.java +++ /dev/null @@ -1,519 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.content.res.AssetFileDescriptor; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.DividerItemDecoration; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.TextView; - -import com.alibaba.fastjson.JSONObject; -import com.taobao.weex.IWXRenderListener; -import com.taobao.weex.WXSDKEngine; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.common.WXException; -import com.taobao.weex.common.WXModule; -import com.taobao.weex.common.WXRenderStrategy; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -public class SliceTestActivity extends AppCompatActivity { - private static final String LOG_TAG = "SliceTestActivity"; - private RecyclerView mRecyclerView; - private TextView mReportTextView; - - private final List mData = new ArrayList<>(); - private WXInstanceAdapter mAdapter; - private final Set mInstances = new HashSet<>(); - - public static class SearchModule extends WXModule { - @JSMethod(uiThread = true) - public void search(JSONObject options) { - Log.e("TestModuel", options.toJSONString()); - } - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - try { - WXSDKEngine.registerModule("searchEvent", SearchModule.class); - } catch (WXException e) { - e.printStackTrace(); - } - setContentView(R.layout.activity_slice_test); - mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); - mReportTextView = (TextView) findViewById(R.id.report_text); - - mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); - mAdapter = new WXInstanceAdapter(); - mRecyclerView.setAdapter(mAdapter); - } - - static int i = 0; - - public void addCellClick(View view) { - //rax case.js - if (i++ % 2 == 0) { - mData.add("{\"model\":{\"tips\":[{\"show\":\"雪纺\",\"q\":\"连衣裙 雪纺\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%221%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]},{\"show\":\"中长款\",\"q\":\"连衣裙 中长款\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%222%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]},{\"show\":\"假两件\",\"q\":\"连衣裙 假两件\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%223%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]},{\"show\":\"A字款\",\"q\":\"连衣裙 A字款\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%224%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]},{\"show\":\"气质淑女\",\"q\":\"连衣裙 气质淑女\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%225%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]}],\"pos\":\"3\",\"src\":\"graph\",\"topic\":\"细选"+i+"\",\"type\":\"1\",\"tItemType\":\"wx_text\",\"tShowTmpl\":\"wx_text\",\"rl\":\"query_type-1|tip_show_type-1|tip_show_page-2\"},\"status\":{\"layoutStyle\":0}}"); - } else { - mData.add("{\"model\":{\"tips\":[{\"show\":\"雪纺\",\"q\":\"连衣裙 雪纺\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%221%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]},{\"show\":\"中长款\",\"q\":\"连衣裙 中长款\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%222%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]},{\"show\":\"假两件\",\"q\":\"连衣裙 假两件\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%223%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]},{\"show\":\"A字款\",\"q\":\"连衣裙 A字款\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%224%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]},{\"show\":\"气质淑女\",\"q\":\"连衣裙 气质淑女\",\"params\":[{\"key\":\"from\",\"value\":\"tips_1\"},{\"key\":\"vClickTrace\",\"value\":\"%7B%22tips_oriq%22%3A%22%E8%BF%9E%E8%A1%A3%E8%A3%99%22%2C%22tips_srppage%22%3A%222%22%2C%22tips_type%22%3A%221%22%2C%22tips_pos%22%3A%225%22%2C%22pre_rn%22%3A%220189c4d06e11f32262fa896f5f364f76%22%7D\"}]}],\"pos\":\"3\",\"src\":\"graph\",\"topic\":\"细选"+i+"\",\"type\":\"1\",\"tItemType\":\"wx_text\",\"tShowTmpl\":\"wx_text\",\"rl\":\"query_type-1|tip_show_type-1|tip_show_page-2\"},\"status\":{\"layoutStyle\":1}}"); - } - - //card.wasm - if (false) { - if (i++ % 2 == 0) { - mData.add("{\n" + - " \"model\": {\n" + - " \"src\": \"tmall_rec\",\n" + - " \"pos\": 3,\n" + - " \"topic\": \"你可能想看"+i+"\",\n" + - " \"type\": \"tmall_rec\",\n" + - " \"tShowTmpl\": \"wx_tmall_discovery\",\n" + - " \"tItemType\": \"wx_tmall_discovery\",\n" + - " \"tips\": [\n" + - " {\n" + - " \"picUrl\": \"https://img.alicdn.com/imgextra/i1/2985924572/TB2EL5XnDnI8KJjy0FfXXcdoVXa_!!2985924572.jpg\",\n" + - " \"show\": \"职场范儿\",\n" + - " \"params\": [\n" + - " {\n" + - " \"value\": \"tmall_rec\",\n" + - " \"key\": \"from\"\n" + - " },\n" + - " {\n" + - " \"value\": \"%7B%22tips_oriq%22%3A%22%E7%BE%BD%E7%BB%92%E6%9C%8D%22%2C%22tips_srppage%22%3A%221%22%2C%22tips_type%22%3A%22mall1%22%2C%22tips_pos%22%3A%220%22%2C%22pre_rn%22%3A%22767d9f52662b4883b2dfcff69f12edce%22%7D\",\n" + - " \"key\": \"vClickTrace\"\n" + - " },\n" + - " {\n" + - " \"value\": \"1001\",\n" + - " \"key\": \"tag_id\"\n" + - " },\n" + - " {\n" + - " \"value\": \"767d9f52662b4883b2dfcff69f12edce\",\n" + - " \"key\": \"sessionid\"\n" + - " },\n" + - " {\n" + - " \"value\": \"tmallRecCard\",\n" + - " \"key\": \"m\"\n" + - " },\n" + - " {\n" + - " \"value\": \"羽绒服\",\n" + - " \"key\": \"q\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"picUrl\": \"https://img.alicdn.com/tfs/TB1.3ctnvDH8KJjy1XcXXcpdXXa-1125-390.png\",\n" + - " \"show\": \"国际大牌\",\n" + - " \"params\": [\n" + - " {\n" + - " \"value\": \"tmall_rec\",\n" + - " \"key\": \"from\"\n" + - " },\n" + - " {\n" + - " \"value\": \"%7B%22tips_oriq%22%3A%22%E7%BE%BD%E7%BB%92%E6%9C%8D%22%2C%22tips_srppage%22%3A%221%22%2C%22tips_type%22%3A%22mall1%22%2C%22tips_pos%22%3A%221%22%2C%22pre_rn%22%3A%22767d9f52662b4883b2dfcff69f12edce%22%7D\",\n" + - " \"key\": \"vClickTrace\"\n" + - " },\n" + - " {\n" + - " \"value\": \"1007\",\n" + - " \"key\": \"tag_id\"\n" + - " },\n" + - " {\n" + - " \"value\": \"767d9f52662b4883b2dfcff69f12edce\",\n" + - " \"key\": \"sessionid\"\n" + - " },\n" + - " {\n" + - " \"value\": \"tmallRecCard\",\n" + - " \"key\": \"m\"\n" + - " },\n" + - " {\n" + - " \"value\": \"羽绒服\",\n" + - " \"key\": \"q\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"picUrl\": \"https://img.alicdn.com/imgextra/i2/263817957/TB2STDSnwLD8KJjSszeXXaGRpXa-263817957.jpg\",\n" + - " \"show\": \"优雅淑女\",\n" + - " \"params\": [\n" + - " {\n" + - " \"value\": \"tmall_rec\",\n" + - " \"key\": \"from\"\n" + - " },\n" + - " {\n" + - " \"value\": \"%7B%22tips_oriq%22%3A%22%E7%BE%BD%E7%BB%92%E6%9C%8D%22%2C%22tips_srppage%22%3A%221%22%2C%22tips_type%22%3A%22mall1%22%2C%22tips_pos%22%3A%222%22%2C%22pre_rn%22%3A%22767d9f52662b4883b2dfcff69f12edce%22%7D\",\n" + - " \"key\": \"vClickTrace\"\n" + - " },\n" + - " {\n" + - " \"value\": \"1002\",\n" + - " \"key\": \"tag_id\"\n" + - " },\n" + - " {\n" + - " \"value\": \"767d9f52662b4883b2dfcff69f12edce\",\n" + - " \"key\": \"sessionid\"\n" + - " },\n" + - " {\n" + - " \"value\": \"tmallRecCard\",\n" + - " \"key\": \"m\"\n" + - " },\n" + - " {\n" + - " \"value\": \"羽绒服\",\n" + - " \"key\": \"q\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"picUrl\": \"https://img.alicdn.com/imgextra/i2/263817957/TB2_JnCnBHH8KJjy0FbXXcqlpXa-263817957.jpg\",\n" + - " \"show\": \"活力少女\",\n" + - " \"params\": [\n" + - " {\n" + - " \"value\": \"tmall_rec\",\n" + - " \"key\": \"from\"\n" + - " },\n" + - " {\n" + - " \"value\": \"%7B%22tips_oriq%22%3A%22%E7%BE%BD%E7%BB%92%E6%9C%8D%22%2C%22tips_srppage%22%3A%221%22%2C%22tips_type%22%3A%22mall1%22%2C%22tips_pos%22%3A%223%22%2C%22pre_rn%22%3A%22767d9f52662b4883b2dfcff69f12edce%22%7D\",\n" + - " \"key\": \"vClickTrace\"\n" + - " },\n" + - " {\n" + - " \"value\": \"1005\",\n" + - " \"key\": \"tag_id\"\n" + - " },\n" + - " {\n" + - " \"value\": \"767d9f52662b4883b2dfcff69f12edce\",\n" + - " \"key\": \"sessionid\"\n" + - " },\n" + - " {\n" + - " \"value\": \"tmallRecCard\",\n" + - " \"key\": \"m\"\n" + - " },\n" + - " {\n" + - " \"value\": \"羽绒服\",\n" + - " \"key\": \"q\"\n" + - " }\n" + - " ]\n" + - " }\n" + - " ]\n" + - " },\n" + - " \"status\": {\n" + - " \"layoutStyle\": 0\n" + - " }\n" + - " }"); - } else { - mData.add("{\n" + - " \"model\": {\n" + - " \"src\": \"tmall_rec\",\n" + - " \"pos\": 3,\n" + - " \"topic\": \"你可能不想看\",\n" + - " \"type\": \"tmall_rec\",\n" + - " \"tShowTmpl\": \"wx_tmall_discovery\",\n" + - " \"tItemType\": \"wx_tmall_discovery\",\n" + - " \"tips\": [\n" + - " {\n" + - " \"picUrl\": \"https://img.alicdn.com/imgextra/i1/2985924572/TB2EL5XnDnI8KJjy0FfXXcdoVXa_!!2985924572.jpg\",\n" + - " \"show\": \"职场范儿\",\n" + - " \"params\": [\n" + - " {\n" + - " \"value\": \"tmall_rec\",\n" + - " \"key\": \"from\"\n" + - " },\n" + - " {\n" + - " \"value\": \"%7B%22tips_oriq%22%3A%22%E7%BE%BD%E7%BB%92%E6%9C%8D%22%2C%22tips_srppage%22%3A%221%22%2C%22tips_type%22%3A%22mall1%22%2C%22tips_pos%22%3A%220%22%2C%22pre_rn%22%3A%22767d9f52662b4883b2dfcff69f12edce%22%7D\",\n" + - " \"key\": \"vClickTrace\"\n" + - " },\n" + - " {\n" + - " \"value\": \"1001\",\n" + - " \"key\": \"tag_id\"\n" + - " },\n" + - " {\n" + - " \"value\": \"767d9f52662b4883b2dfcff69f12edce\",\n" + - " \"key\": \"sessionid\"\n" + - " },\n" + - " {\n" + - " \"value\": \"tmallRecCard\",\n" + - " \"key\": \"m\"\n" + - " },\n" + - " {\n" + - " \"value\": \"羽绒服\",\n" + - " \"key\": \"q\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"picUrl\": \"https://img.alicdn.com/tfs/TB1.3ctnvDH8KJjy1XcXXcpdXXa-1125-390.png\",\n" + - " \"show\": \"国际大牌\",\n" + - " \"params\": [\n" + - " {\n" + - " \"value\": \"tmall_rec\",\n" + - " \"key\": \"from\"\n" + - " },\n" + - " {\n" + - " \"value\": \"%7B%22tips_oriq%22%3A%22%E7%BE%BD%E7%BB%92%E6%9C%8D%22%2C%22tips_srppage%22%3A%221%22%2C%22tips_type%22%3A%22mall1%22%2C%22tips_pos%22%3A%221%22%2C%22pre_rn%22%3A%22767d9f52662b4883b2dfcff69f12edce%22%7D\",\n" + - " \"key\": \"vClickTrace\"\n" + - " },\n" + - " {\n" + - " \"value\": \"1007\",\n" + - " \"key\": \"tag_id\"\n" + - " },\n" + - " {\n" + - " \"value\": \"767d9f52662b4883b2dfcff69f12edce\",\n" + - " \"key\": \"sessionid\"\n" + - " },\n" + - " {\n" + - " \"value\": \"tmallRecCard\",\n" + - " \"key\": \"m\"\n" + - " },\n" + - " {\n" + - " \"value\": \"羽绒服\",\n" + - " \"key\": \"q\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"picUrl\": \"https://img.alicdn.com/imgextra/i2/263817957/TB2STDSnwLD8KJjSszeXXaGRpXa-263817957.jpg\",\n" + - " \"show\": \"优雅淑女\",\n" + - " \"params\": [\n" + - " {\n" + - " \"value\": \"tmall_rec\",\n" + - " \"key\": \"from\"\n" + - " },\n" + - " {\n" + - " \"value\": \"%7B%22tips_oriq%22%3A%22%E7%BE%BD%E7%BB%92%E6%9C%8D%22%2C%22tips_srppage%22%3A%221%22%2C%22tips_type%22%3A%22mall1%22%2C%22tips_pos%22%3A%222%22%2C%22pre_rn%22%3A%22767d9f52662b4883b2dfcff69f12edce%22%7D\",\n" + - " \"key\": \"vClickTrace\"\n" + - " },\n" + - " {\n" + - " \"value\": \"1002\",\n" + - " \"key\": \"tag_id\"\n" + - " },\n" + - " {\n" + - " \"value\": \"767d9f52662b4883b2dfcff69f12edce\",\n" + - " \"key\": \"sessionid\"\n" + - " },\n" + - " {\n" + - " \"value\": \"tmallRecCard\",\n" + - " \"key\": \"m\"\n" + - " },\n" + - " {\n" + - " \"value\": \"羽绒服\",\n" + - " \"key\": \"q\"\n" + - " }\n" + - " ]\n" + - " },\n" + - " {\n" + - " \"picUrl\": \"https://img.alicdn.com/imgextra/i2/263817957/TB2_JnCnBHH8KJjy0FbXXcqlpXa-263817957.jpg\",\n" + - " \"show\": \"活力少女\",\n" + - " \"params\": [\n" + - " {\n" + - " \"value\": \"tmall_rec\",\n" + - " \"key\": \"from\"\n" + - " },\n" + - " {\n" + - " \"value\": \"%7B%22tips_oriq%22%3A%22%E7%BE%BD%E7%BB%92%E6%9C%8D%22%2C%22tips_srppage%22%3A%221%22%2C%22tips_type%22%3A%22mall1%22%2C%22tips_pos%22%3A%223%22%2C%22pre_rn%22%3A%22767d9f52662b4883b2dfcff69f12edce%22%7D\",\n" + - " \"key\": \"vClickTrace\"\n" + - " },\n" + - " {\n" + - " \"value\": \"1005\",\n" + - " \"key\": \"tag_id\"\n" + - " },\n" + - " {\n" + - " \"value\": \"767d9f52662b4883b2dfcff69f12edce\",\n" + - " \"key\": \"sessionid\"\n" + - " },\n" + - " {\n" + - " \"value\": \"tmallRecCard\",\n" + - " \"key\": \"m\"\n" + - " },\n" + - " {\n" + - " \"value\": \"羽绒服\",\n" + - " \"key\": \"q\"\n" + - " }\n" + - " ]\n" + - " }\n" + - " ]\n" + - " },\n" + - " \"status\": {\n" + - " \"layoutStyle\": 1\n" + - " }\n" + - " }"); - } - } - mAdapter.notifyItemInserted(mData.size() - 1); -// mAdapter.notifyDataSetChanged(); - } - - private class WXInstanceAdapter extends RecyclerView.Adapter { - @Override - public WXViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - Log.d(LOG_TAG, "onCreateViewHolder"); - FrameLayout itemView = new FrameLayout(SliceTestActivity.this); - itemView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - return new WXViewHolder(itemView); - } - - @Override - public void onBindViewHolder(WXViewHolder holder, int position) { - String data = mData.get(position); - if (!holder.isRendered()) { - Log.d(LOG_TAG, "render onBindViewHolder " + position); - holder.render(data, position); - } else { - Log.d(LOG_TAG, "refresh onBindViewHolder " + position); - holder.refresh(data, position); - } - } - - @Override - public int getItemCount() { - return mData.size(); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - for (WXSDKInstance instance : mInstances) { - instance.destroy(); - } - mInstances.clear(); - } - - private class WXViewHolder extends RecyclerView.ViewHolder implements IWXRenderListener { - private WXSDKInstance mInstance; - private boolean mRendered; - - private TextView mTextView; - - public WXViewHolder(View itemView) { - super(itemView); - mInstance = new WXSDKInstance(SliceTestActivity.this); - mInstance.registerRenderListener(this); - mInstances.add(mInstance); - mTextView = new TextView(SliceTestActivity.this); - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - params.gravity = Gravity.RIGHT; - ((ViewGroup) itemView).addView(mTextView, params); - } - - public void render(String initData, int position) { -// - if (true) { - - mInstance.render( - "testPage", - loadAssets(), - null, - initData, - WXRenderStrategy.DATA_RENDER - ); - } else { -// - mInstance.render( - "testPage", - loadBytes(), - null, - initData - ); - } - mTextView.setText(String.valueOf(position)); - mRendered = true; - } - - public boolean isRendered() { - return mRendered; - } - - public void refresh(String initData, int position) { - mInstance.refreshInstance(initData); - mTextView.setText(String.valueOf(position)); - } - - @Override - public void onViewCreated(WXSDKInstance instance, View view) { - ((ViewGroup) itemView).addView(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - } - - @Override - public void onRenderSuccess(WXSDKInstance instance, int width, int height) { - } - - @Override - public void onRefreshSuccess(WXSDKInstance instance, int width, int height) { - - } - - @Override - public void onException(WXSDKInstance instance, String errCode, String msg) { - - } - } - - @NonNull - private String loadAssets() { - StringBuilder buf = new StringBuilder(); - try { - InputStream json = getAssets().open("lite_template/case.js"); - BufferedReader in = - new BufferedReader(new InputStreamReader(json, "UTF-8")); - String str; - - while ((str = in.readLine()) != null) { - buf.append(str); - } - - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - return buf.toString(); - } - - private byte[] loadBytes() { - try { - AssetFileDescriptor assetFileDescriptor = getAssets().openFd("lite_template/card.wasm"); - long len = assetFileDescriptor.getDeclaredLength(); - ByteBuffer buf = ByteBuffer.allocate((int) len); - InputStream json = assetFileDescriptor.createInputStream(); - json.read(buf.array()); - json.close(); - return buf.array(); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/SplashActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/SplashActivity.java deleted file mode 100644 index 0b56571707..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/SplashActivity.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.content.Intent; -import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.view.View; -import android.view.animation.Animation; -import android.view.animation.AnimationSet; -import android.view.animation.RotateAnimation; -import android.view.animation.ScaleAnimation; - -public class SplashActivity extends AppCompatActivity { - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_splash); - - View textView = findViewById(R.id.fullscreen_content); - ScaleAnimation scaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - RotateAnimation rotateAnimation = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - - AnimationSet animationSet = new AnimationSet(false); - animationSet.addAnimation(scaleAnimation); - animationSet.addAnimation(rotateAnimation); - animationSet.setDuration(1500); - - animationSet.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - } - - @Override - public void onAnimationEnd(Animation animation) { - startActivity(new Intent(SplashActivity.this, IndexActivity.class)); - finish(); - } - - @Override - public void onAnimationRepeat(Animation animation) { - } - }); - textView.startAnimation(animationSet); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/Utility.java b/android/playground/app/src/main/java/com/alibaba/weex/Utility.java deleted file mode 100644 index 7c07a45116..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/Utility.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.util.Pair; - -import java.util.Map; - -/** - * Created by sospartan on 28/03/2017. - */ - -public class Utility { - private static final int[] ID_STUBS = { - R.id.weex_id_4999,R.id.weex_id_4998,R.id.weex_id_4997,R.id.weex_id_4996,R.id.weex_id_4995,R.id.weex_id_4994,R.id.weex_id_4993,R.id.weex_id_4992,R.id.weex_id_4991,R.id.weex_id_4990,R.id.weex_id_4989,R.id.weex_id_4988,R.id.weex_id_4987,R.id.weex_id_4986,R.id.weex_id_4985,R.id.weex_id_4984,R.id.weex_id_4983,R.id.weex_id_4982,R.id.weex_id_4981,R.id.weex_id_4980,R.id.weex_id_4979,R.id.weex_id_4978,R.id.weex_id_4977,R.id.weex_id_4976,R.id.weex_id_4975,R.id.weex_id_4974,R.id.weex_id_4973,R.id.weex_id_4972,R.id.weex_id_4971,R.id.weex_id_4970,R.id.weex_id_4969,R.id.weex_id_4968,R.id.weex_id_4967,R.id.weex_id_4966,R.id.weex_id_4965,R.id.weex_id_4964,R.id.weex_id_4963,R.id.weex_id_4962,R.id.weex_id_4961,R.id.weex_id_4960,R.id.weex_id_4959,R.id.weex_id_4958,R.id.weex_id_4957,R.id.weex_id_4956,R.id.weex_id_4955,R.id.weex_id_4954,R.id.weex_id_4953,R.id.weex_id_4952,R.id.weex_id_4951,R.id.weex_id_4950,R.id.weex_id_4949,R.id.weex_id_4948,R.id.weex_id_4947,R.id.weex_id_4946,R.id.weex_id_4945,R.id.weex_id_4944,R.id.weex_id_4943,R.id.weex_id_4942,R.id.weex_id_4941,R.id.weex_id_4940,R.id.weex_id_4939,R.id.weex_id_4938,R.id.weex_id_4937,R.id.weex_id_4936,R.id.weex_id_4935,R.id.weex_id_4934,R.id.weex_id_4933,R.id.weex_id_4932,R.id.weex_id_4931,R.id.weex_id_4930,R.id.weex_id_4929,R.id.weex_id_4928,R.id.weex_id_4927,R.id.weex_id_4926,R.id.weex_id_4925,R.id.weex_id_4924,R.id.weex_id_4923,R.id.weex_id_4922,R.id.weex_id_4921,R.id.weex_id_4920,R.id.weex_id_4919,R.id.weex_id_4918,R.id.weex_id_4917,R.id.weex_id_4916,R.id.weex_id_4915,R.id.weex_id_4914,R.id.weex_id_4913,R.id.weex_id_4912,R.id.weex_id_4911,R.id.weex_id_4910,R.id.weex_id_4909,R.id.weex_id_4908,R.id.weex_id_4907,R.id.weex_id_4906,R.id.weex_id_4905,R.id.weex_id_4904,R.id.weex_id_4903,R.id.weex_id_4902,R.id.weex_id_4901,R.id.weex_id_4900, - R.id.weex_id_4899,R.id.weex_id_4898,R.id.weex_id_4897,R.id.weex_id_4896,R.id.weex_id_4895,R.id.weex_id_4894,R.id.weex_id_4893,R.id.weex_id_4892,R.id.weex_id_4891,R.id.weex_id_4890,R.id.weex_id_4889,R.id.weex_id_4888,R.id.weex_id_4887,R.id.weex_id_4886,R.id.weex_id_4885,R.id.weex_id_4884,R.id.weex_id_4883,R.id.weex_id_4882,R.id.weex_id_4881,R.id.weex_id_4880,R.id.weex_id_4879,R.id.weex_id_4878,R.id.weex_id_4877,R.id.weex_id_4876,R.id.weex_id_4875,R.id.weex_id_4874,R.id.weex_id_4873,R.id.weex_id_4872,R.id.weex_id_4871,R.id.weex_id_4870,R.id.weex_id_4869,R.id.weex_id_4868,R.id.weex_id_4867,R.id.weex_id_4866,R.id.weex_id_4865,R.id.weex_id_4864,R.id.weex_id_4863,R.id.weex_id_4862,R.id.weex_id_4861,R.id.weex_id_4860,R.id.weex_id_4859,R.id.weex_id_4858,R.id.weex_id_4857,R.id.weex_id_4856,R.id.weex_id_4855,R.id.weex_id_4854,R.id.weex_id_4853,R.id.weex_id_4852,R.id.weex_id_4851,R.id.weex_id_4850,R.id.weex_id_4849,R.id.weex_id_4848,R.id.weex_id_4847,R.id.weex_id_4846,R.id.weex_id_4845,R.id.weex_id_4844,R.id.weex_id_4843,R.id.weex_id_4842,R.id.weex_id_4841,R.id.weex_id_4840,R.id.weex_id_4839,R.id.weex_id_4838,R.id.weex_id_4837,R.id.weex_id_4836,R.id.weex_id_4835,R.id.weex_id_4834,R.id.weex_id_4833,R.id.weex_id_4832,R.id.weex_id_4831,R.id.weex_id_4830,R.id.weex_id_4829,R.id.weex_id_4828,R.id.weex_id_4827,R.id.weex_id_4826,R.id.weex_id_4825,R.id.weex_id_4824,R.id.weex_id_4823,R.id.weex_id_4822,R.id.weex_id_4821,R.id.weex_id_4820,R.id.weex_id_4819,R.id.weex_id_4818,R.id.weex_id_4817,R.id.weex_id_4816,R.id.weex_id_4815,R.id.weex_id_4814,R.id.weex_id_4813,R.id.weex_id_4812,R.id.weex_id_4811,R.id.weex_id_4810,R.id.weex_id_4809,R.id.weex_id_4808,R.id.weex_id_4807,R.id.weex_id_4806,R.id.weex_id_4805,R.id.weex_id_4804,R.id.weex_id_4803,R.id.weex_id_4802,R.id.weex_id_4801,R.id.weex_id_4800, - R.id.weex_id_4799,R.id.weex_id_4798,R.id.weex_id_4797,R.id.weex_id_4796,R.id.weex_id_4795,R.id.weex_id_4794,R.id.weex_id_4793,R.id.weex_id_4792,R.id.weex_id_4791,R.id.weex_id_4790,R.id.weex_id_4789,R.id.weex_id_4788,R.id.weex_id_4787,R.id.weex_id_4786,R.id.weex_id_4785,R.id.weex_id_4784,R.id.weex_id_4783,R.id.weex_id_4782,R.id.weex_id_4781,R.id.weex_id_4780,R.id.weex_id_4779,R.id.weex_id_4778,R.id.weex_id_4777,R.id.weex_id_4776,R.id.weex_id_4775,R.id.weex_id_4774,R.id.weex_id_4773,R.id.weex_id_4772,R.id.weex_id_4771,R.id.weex_id_4770,R.id.weex_id_4769,R.id.weex_id_4768,R.id.weex_id_4767,R.id.weex_id_4766,R.id.weex_id_4765,R.id.weex_id_4764,R.id.weex_id_4763,R.id.weex_id_4762,R.id.weex_id_4761,R.id.weex_id_4760,R.id.weex_id_4759,R.id.weex_id_4758,R.id.weex_id_4757,R.id.weex_id_4756,R.id.weex_id_4755,R.id.weex_id_4754,R.id.weex_id_4753,R.id.weex_id_4752,R.id.weex_id_4751,R.id.weex_id_4750,R.id.weex_id_4749,R.id.weex_id_4748,R.id.weex_id_4747,R.id.weex_id_4746,R.id.weex_id_4745,R.id.weex_id_4744,R.id.weex_id_4743,R.id.weex_id_4742,R.id.weex_id_4741,R.id.weex_id_4740,R.id.weex_id_4739,R.id.weex_id_4738,R.id.weex_id_4737,R.id.weex_id_4736,R.id.weex_id_4735,R.id.weex_id_4734,R.id.weex_id_4733,R.id.weex_id_4732,R.id.weex_id_4731,R.id.weex_id_4730,R.id.weex_id_4729,R.id.weex_id_4728,R.id.weex_id_4727,R.id.weex_id_4726,R.id.weex_id_4725,R.id.weex_id_4724,R.id.weex_id_4723,R.id.weex_id_4722,R.id.weex_id_4721,R.id.weex_id_4720,R.id.weex_id_4719,R.id.weex_id_4718,R.id.weex_id_4717,R.id.weex_id_4716,R.id.weex_id_4715,R.id.weex_id_4714,R.id.weex_id_4713,R.id.weex_id_4712,R.id.weex_id_4711,R.id.weex_id_4710,R.id.weex_id_4709,R.id.weex_id_4708,R.id.weex_id_4707,R.id.weex_id_4706,R.id.weex_id_4705,R.id.weex_id_4704,R.id.weex_id_4703,R.id.weex_id_4702,R.id.weex_id_4701,R.id.weex_id_4700, - R.id.weex_id_4699,R.id.weex_id_4698,R.id.weex_id_4697,R.id.weex_id_4696,R.id.weex_id_4695,R.id.weex_id_4694,R.id.weex_id_4693,R.id.weex_id_4692,R.id.weex_id_4691,R.id.weex_id_4690,R.id.weex_id_4689,R.id.weex_id_4688,R.id.weex_id_4687,R.id.weex_id_4686,R.id.weex_id_4685,R.id.weex_id_4684,R.id.weex_id_4683,R.id.weex_id_4682,R.id.weex_id_4681,R.id.weex_id_4680,R.id.weex_id_4679,R.id.weex_id_4678,R.id.weex_id_4677,R.id.weex_id_4676,R.id.weex_id_4675,R.id.weex_id_4674,R.id.weex_id_4673,R.id.weex_id_4672,R.id.weex_id_4671,R.id.weex_id_4670,R.id.weex_id_4669,R.id.weex_id_4668,R.id.weex_id_4667,R.id.weex_id_4666,R.id.weex_id_4665,R.id.weex_id_4664,R.id.weex_id_4663,R.id.weex_id_4662,R.id.weex_id_4661,R.id.weex_id_4660,R.id.weex_id_4659,R.id.weex_id_4658,R.id.weex_id_4657,R.id.weex_id_4656,R.id.weex_id_4655,R.id.weex_id_4654,R.id.weex_id_4653,R.id.weex_id_4652,R.id.weex_id_4651,R.id.weex_id_4650,R.id.weex_id_4649,R.id.weex_id_4648,R.id.weex_id_4647,R.id.weex_id_4646,R.id.weex_id_4645,R.id.weex_id_4644,R.id.weex_id_4643,R.id.weex_id_4642,R.id.weex_id_4641,R.id.weex_id_4640,R.id.weex_id_4639,R.id.weex_id_4638,R.id.weex_id_4637,R.id.weex_id_4636,R.id.weex_id_4635,R.id.weex_id_4634,R.id.weex_id_4633,R.id.weex_id_4632,R.id.weex_id_4631,R.id.weex_id_4630,R.id.weex_id_4629,R.id.weex_id_4628,R.id.weex_id_4627,R.id.weex_id_4626,R.id.weex_id_4625,R.id.weex_id_4624,R.id.weex_id_4623,R.id.weex_id_4622,R.id.weex_id_4621,R.id.weex_id_4620,R.id.weex_id_4619,R.id.weex_id_4618,R.id.weex_id_4617,R.id.weex_id_4616,R.id.weex_id_4615,R.id.weex_id_4614,R.id.weex_id_4613,R.id.weex_id_4612,R.id.weex_id_4611,R.id.weex_id_4610,R.id.weex_id_4609,R.id.weex_id_4608,R.id.weex_id_4607,R.id.weex_id_4606,R.id.weex_id_4605,R.id.weex_id_4604,R.id.weex_id_4603,R.id.weex_id_4602,R.id.weex_id_4601,R.id.weex_id_4600, - R.id.weex_id_4599,R.id.weex_id_4598,R.id.weex_id_4597,R.id.weex_id_4596,R.id.weex_id_4595,R.id.weex_id_4594,R.id.weex_id_4593,R.id.weex_id_4592,R.id.weex_id_4591,R.id.weex_id_4590,R.id.weex_id_4589,R.id.weex_id_4588,R.id.weex_id_4587,R.id.weex_id_4586,R.id.weex_id_4585,R.id.weex_id_4584,R.id.weex_id_4583,R.id.weex_id_4582,R.id.weex_id_4581,R.id.weex_id_4580,R.id.weex_id_4579,R.id.weex_id_4578,R.id.weex_id_4577,R.id.weex_id_4576,R.id.weex_id_4575,R.id.weex_id_4574,R.id.weex_id_4573,R.id.weex_id_4572,R.id.weex_id_4571,R.id.weex_id_4570,R.id.weex_id_4569,R.id.weex_id_4568,R.id.weex_id_4567,R.id.weex_id_4566,R.id.weex_id_4565,R.id.weex_id_4564,R.id.weex_id_4563,R.id.weex_id_4562,R.id.weex_id_4561,R.id.weex_id_4560,R.id.weex_id_4559,R.id.weex_id_4558,R.id.weex_id_4557,R.id.weex_id_4556,R.id.weex_id_4555,R.id.weex_id_4554,R.id.weex_id_4553,R.id.weex_id_4552,R.id.weex_id_4551,R.id.weex_id_4550,R.id.weex_id_4549,R.id.weex_id_4548,R.id.weex_id_4547,R.id.weex_id_4546,R.id.weex_id_4545,R.id.weex_id_4544,R.id.weex_id_4543,R.id.weex_id_4542,R.id.weex_id_4541,R.id.weex_id_4540,R.id.weex_id_4539,R.id.weex_id_4538,R.id.weex_id_4537,R.id.weex_id_4536,R.id.weex_id_4535,R.id.weex_id_4534,R.id.weex_id_4533,R.id.weex_id_4532,R.id.weex_id_4531,R.id.weex_id_4530,R.id.weex_id_4529,R.id.weex_id_4528,R.id.weex_id_4527,R.id.weex_id_4526,R.id.weex_id_4525,R.id.weex_id_4524,R.id.weex_id_4523,R.id.weex_id_4522,R.id.weex_id_4521,R.id.weex_id_4520,R.id.weex_id_4519,R.id.weex_id_4518,R.id.weex_id_4517,R.id.weex_id_4516,R.id.weex_id_4515,R.id.weex_id_4514,R.id.weex_id_4513,R.id.weex_id_4512,R.id.weex_id_4511,R.id.weex_id_4510,R.id.weex_id_4509,R.id.weex_id_4508,R.id.weex_id_4507,R.id.weex_id_4506,R.id.weex_id_4505,R.id.weex_id_4504,R.id.weex_id_4503,R.id.weex_id_4502,R.id.weex_id_4501,R.id.weex_id_4500, - R.id.weex_id_4499,R.id.weex_id_4498,R.id.weex_id_4497,R.id.weex_id_4496,R.id.weex_id_4495,R.id.weex_id_4494,R.id.weex_id_4493,R.id.weex_id_4492,R.id.weex_id_4491,R.id.weex_id_4490,R.id.weex_id_4489,R.id.weex_id_4488,R.id.weex_id_4487,R.id.weex_id_4486,R.id.weex_id_4485,R.id.weex_id_4484,R.id.weex_id_4483,R.id.weex_id_4482,R.id.weex_id_4481,R.id.weex_id_4480,R.id.weex_id_4479,R.id.weex_id_4478,R.id.weex_id_4477,R.id.weex_id_4476,R.id.weex_id_4475,R.id.weex_id_4474,R.id.weex_id_4473,R.id.weex_id_4472,R.id.weex_id_4471,R.id.weex_id_4470,R.id.weex_id_4469,R.id.weex_id_4468,R.id.weex_id_4467,R.id.weex_id_4466,R.id.weex_id_4465,R.id.weex_id_4464,R.id.weex_id_4463,R.id.weex_id_4462,R.id.weex_id_4461,R.id.weex_id_4460,R.id.weex_id_4459,R.id.weex_id_4458,R.id.weex_id_4457,R.id.weex_id_4456,R.id.weex_id_4455,R.id.weex_id_4454,R.id.weex_id_4453,R.id.weex_id_4452,R.id.weex_id_4451,R.id.weex_id_4450,R.id.weex_id_4449,R.id.weex_id_4448,R.id.weex_id_4447,R.id.weex_id_4446,R.id.weex_id_4445,R.id.weex_id_4444,R.id.weex_id_4443,R.id.weex_id_4442,R.id.weex_id_4441,R.id.weex_id_4440,R.id.weex_id_4439,R.id.weex_id_4438,R.id.weex_id_4437,R.id.weex_id_4436,R.id.weex_id_4435,R.id.weex_id_4434,R.id.weex_id_4433,R.id.weex_id_4432,R.id.weex_id_4431,R.id.weex_id_4430,R.id.weex_id_4429,R.id.weex_id_4428,R.id.weex_id_4427,R.id.weex_id_4426,R.id.weex_id_4425,R.id.weex_id_4424,R.id.weex_id_4423,R.id.weex_id_4422,R.id.weex_id_4421,R.id.weex_id_4420,R.id.weex_id_4419,R.id.weex_id_4418,R.id.weex_id_4417,R.id.weex_id_4416,R.id.weex_id_4415,R.id.weex_id_4414,R.id.weex_id_4413,R.id.weex_id_4412,R.id.weex_id_4411,R.id.weex_id_4410,R.id.weex_id_4409,R.id.weex_id_4408,R.id.weex_id_4407,R.id.weex_id_4406,R.id.weex_id_4405,R.id.weex_id_4404,R.id.weex_id_4403,R.id.weex_id_4402,R.id.weex_id_4401,R.id.weex_id_4400, - R.id.weex_id_4399,R.id.weex_id_4398,R.id.weex_id_4397,R.id.weex_id_4396,R.id.weex_id_4395,R.id.weex_id_4394,R.id.weex_id_4393,R.id.weex_id_4392,R.id.weex_id_4391,R.id.weex_id_4390,R.id.weex_id_4389,R.id.weex_id_4388,R.id.weex_id_4387,R.id.weex_id_4386,R.id.weex_id_4385,R.id.weex_id_4384,R.id.weex_id_4383,R.id.weex_id_4382,R.id.weex_id_4381,R.id.weex_id_4380,R.id.weex_id_4379,R.id.weex_id_4378,R.id.weex_id_4377,R.id.weex_id_4376,R.id.weex_id_4375,R.id.weex_id_4374,R.id.weex_id_4373,R.id.weex_id_4372,R.id.weex_id_4371,R.id.weex_id_4370,R.id.weex_id_4369,R.id.weex_id_4368,R.id.weex_id_4367,R.id.weex_id_4366,R.id.weex_id_4365,R.id.weex_id_4364,R.id.weex_id_4363,R.id.weex_id_4362,R.id.weex_id_4361,R.id.weex_id_4360,R.id.weex_id_4359,R.id.weex_id_4358,R.id.weex_id_4357,R.id.weex_id_4356,R.id.weex_id_4355,R.id.weex_id_4354,R.id.weex_id_4353,R.id.weex_id_4352,R.id.weex_id_4351,R.id.weex_id_4350,R.id.weex_id_4349,R.id.weex_id_4348,R.id.weex_id_4347,R.id.weex_id_4346,R.id.weex_id_4345,R.id.weex_id_4344,R.id.weex_id_4343,R.id.weex_id_4342,R.id.weex_id_4341,R.id.weex_id_4340,R.id.weex_id_4339,R.id.weex_id_4338,R.id.weex_id_4337,R.id.weex_id_4336,R.id.weex_id_4335,R.id.weex_id_4334,R.id.weex_id_4333,R.id.weex_id_4332,R.id.weex_id_4331,R.id.weex_id_4330,R.id.weex_id_4329,R.id.weex_id_4328,R.id.weex_id_4327,R.id.weex_id_4326,R.id.weex_id_4325,R.id.weex_id_4324,R.id.weex_id_4323,R.id.weex_id_4322,R.id.weex_id_4321,R.id.weex_id_4320,R.id.weex_id_4319,R.id.weex_id_4318,R.id.weex_id_4317,R.id.weex_id_4316,R.id.weex_id_4315,R.id.weex_id_4314,R.id.weex_id_4313,R.id.weex_id_4312,R.id.weex_id_4311,R.id.weex_id_4310,R.id.weex_id_4309,R.id.weex_id_4308,R.id.weex_id_4307,R.id.weex_id_4306,R.id.weex_id_4305,R.id.weex_id_4304,R.id.weex_id_4303,R.id.weex_id_4302,R.id.weex_id_4301,R.id.weex_id_4300, - R.id.weex_id_4299,R.id.weex_id_4298,R.id.weex_id_4297,R.id.weex_id_4296,R.id.weex_id_4295,R.id.weex_id_4294,R.id.weex_id_4293,R.id.weex_id_4292,R.id.weex_id_4291,R.id.weex_id_4290,R.id.weex_id_4289,R.id.weex_id_4288,R.id.weex_id_4287,R.id.weex_id_4286,R.id.weex_id_4285,R.id.weex_id_4284,R.id.weex_id_4283,R.id.weex_id_4282,R.id.weex_id_4281,R.id.weex_id_4280,R.id.weex_id_4279,R.id.weex_id_4278,R.id.weex_id_4277,R.id.weex_id_4276,R.id.weex_id_4275,R.id.weex_id_4274,R.id.weex_id_4273,R.id.weex_id_4272,R.id.weex_id_4271,R.id.weex_id_4270,R.id.weex_id_4269,R.id.weex_id_4268,R.id.weex_id_4267,R.id.weex_id_4266,R.id.weex_id_4265,R.id.weex_id_4264,R.id.weex_id_4263,R.id.weex_id_4262,R.id.weex_id_4261,R.id.weex_id_4260,R.id.weex_id_4259,R.id.weex_id_4258,R.id.weex_id_4257,R.id.weex_id_4256,R.id.weex_id_4255,R.id.weex_id_4254,R.id.weex_id_4253,R.id.weex_id_4252,R.id.weex_id_4251,R.id.weex_id_4250,R.id.weex_id_4249,R.id.weex_id_4248,R.id.weex_id_4247,R.id.weex_id_4246,R.id.weex_id_4245,R.id.weex_id_4244,R.id.weex_id_4243,R.id.weex_id_4242,R.id.weex_id_4241,R.id.weex_id_4240,R.id.weex_id_4239,R.id.weex_id_4238,R.id.weex_id_4237,R.id.weex_id_4236,R.id.weex_id_4235,R.id.weex_id_4234,R.id.weex_id_4233,R.id.weex_id_4232,R.id.weex_id_4231,R.id.weex_id_4230,R.id.weex_id_4229,R.id.weex_id_4228,R.id.weex_id_4227,R.id.weex_id_4226,R.id.weex_id_4225,R.id.weex_id_4224,R.id.weex_id_4223,R.id.weex_id_4222,R.id.weex_id_4221,R.id.weex_id_4220,R.id.weex_id_4219,R.id.weex_id_4218,R.id.weex_id_4217,R.id.weex_id_4216,R.id.weex_id_4215,R.id.weex_id_4214,R.id.weex_id_4213,R.id.weex_id_4212,R.id.weex_id_4211,R.id.weex_id_4210,R.id.weex_id_4209,R.id.weex_id_4208,R.id.weex_id_4207,R.id.weex_id_4206,R.id.weex_id_4205,R.id.weex_id_4204,R.id.weex_id_4203,R.id.weex_id_4202,R.id.weex_id_4201,R.id.weex_id_4200, - R.id.weex_id_4199,R.id.weex_id_4198,R.id.weex_id_4197,R.id.weex_id_4196,R.id.weex_id_4195,R.id.weex_id_4194,R.id.weex_id_4193,R.id.weex_id_4192,R.id.weex_id_4191,R.id.weex_id_4190,R.id.weex_id_4189,R.id.weex_id_4188,R.id.weex_id_4187,R.id.weex_id_4186,R.id.weex_id_4185,R.id.weex_id_4184,R.id.weex_id_4183,R.id.weex_id_4182,R.id.weex_id_4181,R.id.weex_id_4180,R.id.weex_id_4179,R.id.weex_id_4178,R.id.weex_id_4177,R.id.weex_id_4176,R.id.weex_id_4175,R.id.weex_id_4174,R.id.weex_id_4173,R.id.weex_id_4172,R.id.weex_id_4171,R.id.weex_id_4170,R.id.weex_id_4169,R.id.weex_id_4168,R.id.weex_id_4167,R.id.weex_id_4166,R.id.weex_id_4165,R.id.weex_id_4164,R.id.weex_id_4163,R.id.weex_id_4162,R.id.weex_id_4161,R.id.weex_id_4160,R.id.weex_id_4159,R.id.weex_id_4158,R.id.weex_id_4157,R.id.weex_id_4156,R.id.weex_id_4155,R.id.weex_id_4154,R.id.weex_id_4153,R.id.weex_id_4152,R.id.weex_id_4151,R.id.weex_id_4150,R.id.weex_id_4149,R.id.weex_id_4148,R.id.weex_id_4147,R.id.weex_id_4146,R.id.weex_id_4145,R.id.weex_id_4144,R.id.weex_id_4143,R.id.weex_id_4142,R.id.weex_id_4141,R.id.weex_id_4140,R.id.weex_id_4139,R.id.weex_id_4138,R.id.weex_id_4137,R.id.weex_id_4136,R.id.weex_id_4135,R.id.weex_id_4134,R.id.weex_id_4133,R.id.weex_id_4132,R.id.weex_id_4131,R.id.weex_id_4130,R.id.weex_id_4129,R.id.weex_id_4128,R.id.weex_id_4127,R.id.weex_id_4126,R.id.weex_id_4125,R.id.weex_id_4124,R.id.weex_id_4123,R.id.weex_id_4122,R.id.weex_id_4121,R.id.weex_id_4120,R.id.weex_id_4119,R.id.weex_id_4118,R.id.weex_id_4117,R.id.weex_id_4116,R.id.weex_id_4115,R.id.weex_id_4114,R.id.weex_id_4113,R.id.weex_id_4112,R.id.weex_id_4111,R.id.weex_id_4110,R.id.weex_id_4109,R.id.weex_id_4108,R.id.weex_id_4107,R.id.weex_id_4106,R.id.weex_id_4105,R.id.weex_id_4104,R.id.weex_id_4103,R.id.weex_id_4102,R.id.weex_id_4101,R.id.weex_id_4100, - R.id.weex_id_4099,R.id.weex_id_4098,R.id.weex_id_4097,R.id.weex_id_4096,R.id.weex_id_4095,R.id.weex_id_4094,R.id.weex_id_4093,R.id.weex_id_4092,R.id.weex_id_4091,R.id.weex_id_4090,R.id.weex_id_4089,R.id.weex_id_4088,R.id.weex_id_4087,R.id.weex_id_4086,R.id.weex_id_4085,R.id.weex_id_4084,R.id.weex_id_4083,R.id.weex_id_4082,R.id.weex_id_4081,R.id.weex_id_4080,R.id.weex_id_4079,R.id.weex_id_4078,R.id.weex_id_4077,R.id.weex_id_4076,R.id.weex_id_4075,R.id.weex_id_4074,R.id.weex_id_4073,R.id.weex_id_4072,R.id.weex_id_4071,R.id.weex_id_4070,R.id.weex_id_4069,R.id.weex_id_4068,R.id.weex_id_4067,R.id.weex_id_4066,R.id.weex_id_4065,R.id.weex_id_4064,R.id.weex_id_4063,R.id.weex_id_4062,R.id.weex_id_4061,R.id.weex_id_4060,R.id.weex_id_4059,R.id.weex_id_4058,R.id.weex_id_4057,R.id.weex_id_4056,R.id.weex_id_4055,R.id.weex_id_4054,R.id.weex_id_4053,R.id.weex_id_4052,R.id.weex_id_4051,R.id.weex_id_4050,R.id.weex_id_4049,R.id.weex_id_4048,R.id.weex_id_4047,R.id.weex_id_4046,R.id.weex_id_4045,R.id.weex_id_4044,R.id.weex_id_4043,R.id.weex_id_4042,R.id.weex_id_4041,R.id.weex_id_4040,R.id.weex_id_4039,R.id.weex_id_4038,R.id.weex_id_4037,R.id.weex_id_4036,R.id.weex_id_4035,R.id.weex_id_4034,R.id.weex_id_4033,R.id.weex_id_4032,R.id.weex_id_4031,R.id.weex_id_4030,R.id.weex_id_4029,R.id.weex_id_4028,R.id.weex_id_4027,R.id.weex_id_4026,R.id.weex_id_4025,R.id.weex_id_4024,R.id.weex_id_4023,R.id.weex_id_4022,R.id.weex_id_4021,R.id.weex_id_4020,R.id.weex_id_4019,R.id.weex_id_4018,R.id.weex_id_4017,R.id.weex_id_4016,R.id.weex_id_4015,R.id.weex_id_4014,R.id.weex_id_4013,R.id.weex_id_4012,R.id.weex_id_4011,R.id.weex_id_4010,R.id.weex_id_4009,R.id.weex_id_4008,R.id.weex_id_4007,R.id.weex_id_4006,R.id.weex_id_4005,R.id.weex_id_4004,R.id.weex_id_4003,R.id.weex_id_4002,R.id.weex_id_4001,R.id.weex_id_4000, - R.id.weex_id_3999,R.id.weex_id_3998,R.id.weex_id_3997,R.id.weex_id_3996,R.id.weex_id_3995,R.id.weex_id_3994,R.id.weex_id_3993,R.id.weex_id_3992,R.id.weex_id_3991,R.id.weex_id_3990,R.id.weex_id_3989,R.id.weex_id_3988,R.id.weex_id_3987,R.id.weex_id_3986,R.id.weex_id_3985,R.id.weex_id_3984,R.id.weex_id_3983,R.id.weex_id_3982,R.id.weex_id_3981,R.id.weex_id_3980,R.id.weex_id_3979,R.id.weex_id_3978,R.id.weex_id_3977,R.id.weex_id_3976,R.id.weex_id_3975,R.id.weex_id_3974,R.id.weex_id_3973,R.id.weex_id_3972,R.id.weex_id_3971,R.id.weex_id_3970,R.id.weex_id_3969,R.id.weex_id_3968,R.id.weex_id_3967,R.id.weex_id_3966,R.id.weex_id_3965,R.id.weex_id_3964,R.id.weex_id_3963,R.id.weex_id_3962,R.id.weex_id_3961,R.id.weex_id_3960,R.id.weex_id_3959,R.id.weex_id_3958,R.id.weex_id_3957,R.id.weex_id_3956,R.id.weex_id_3955,R.id.weex_id_3954,R.id.weex_id_3953,R.id.weex_id_3952,R.id.weex_id_3951,R.id.weex_id_3950,R.id.weex_id_3949,R.id.weex_id_3948,R.id.weex_id_3947,R.id.weex_id_3946,R.id.weex_id_3945,R.id.weex_id_3944,R.id.weex_id_3943,R.id.weex_id_3942,R.id.weex_id_3941,R.id.weex_id_3940,R.id.weex_id_3939,R.id.weex_id_3938,R.id.weex_id_3937,R.id.weex_id_3936,R.id.weex_id_3935,R.id.weex_id_3934,R.id.weex_id_3933,R.id.weex_id_3932,R.id.weex_id_3931,R.id.weex_id_3930,R.id.weex_id_3929,R.id.weex_id_3928,R.id.weex_id_3927,R.id.weex_id_3926,R.id.weex_id_3925,R.id.weex_id_3924,R.id.weex_id_3923,R.id.weex_id_3922,R.id.weex_id_3921,R.id.weex_id_3920,R.id.weex_id_3919,R.id.weex_id_3918,R.id.weex_id_3917,R.id.weex_id_3916,R.id.weex_id_3915,R.id.weex_id_3914,R.id.weex_id_3913,R.id.weex_id_3912,R.id.weex_id_3911,R.id.weex_id_3910,R.id.weex_id_3909,R.id.weex_id_3908,R.id.weex_id_3907,R.id.weex_id_3906,R.id.weex_id_3905,R.id.weex_id_3904,R.id.weex_id_3903,R.id.weex_id_3902,R.id.weex_id_3901,R.id.weex_id_3900, - R.id.weex_id_3899,R.id.weex_id_3898,R.id.weex_id_3897,R.id.weex_id_3896,R.id.weex_id_3895,R.id.weex_id_3894,R.id.weex_id_3893,R.id.weex_id_3892,R.id.weex_id_3891,R.id.weex_id_3890,R.id.weex_id_3889,R.id.weex_id_3888,R.id.weex_id_3887,R.id.weex_id_3886,R.id.weex_id_3885,R.id.weex_id_3884,R.id.weex_id_3883,R.id.weex_id_3882,R.id.weex_id_3881,R.id.weex_id_3880,R.id.weex_id_3879,R.id.weex_id_3878,R.id.weex_id_3877,R.id.weex_id_3876,R.id.weex_id_3875,R.id.weex_id_3874,R.id.weex_id_3873,R.id.weex_id_3872,R.id.weex_id_3871,R.id.weex_id_3870,R.id.weex_id_3869,R.id.weex_id_3868,R.id.weex_id_3867,R.id.weex_id_3866,R.id.weex_id_3865,R.id.weex_id_3864,R.id.weex_id_3863,R.id.weex_id_3862,R.id.weex_id_3861,R.id.weex_id_3860,R.id.weex_id_3859,R.id.weex_id_3858,R.id.weex_id_3857,R.id.weex_id_3856,R.id.weex_id_3855,R.id.weex_id_3854,R.id.weex_id_3853,R.id.weex_id_3852,R.id.weex_id_3851,R.id.weex_id_3850,R.id.weex_id_3849,R.id.weex_id_3848,R.id.weex_id_3847,R.id.weex_id_3846,R.id.weex_id_3845,R.id.weex_id_3844,R.id.weex_id_3843,R.id.weex_id_3842,R.id.weex_id_3841,R.id.weex_id_3840,R.id.weex_id_3839,R.id.weex_id_3838,R.id.weex_id_3837,R.id.weex_id_3836,R.id.weex_id_3835,R.id.weex_id_3834,R.id.weex_id_3833,R.id.weex_id_3832,R.id.weex_id_3831,R.id.weex_id_3830,R.id.weex_id_3829,R.id.weex_id_3828,R.id.weex_id_3827,R.id.weex_id_3826,R.id.weex_id_3825,R.id.weex_id_3824,R.id.weex_id_3823,R.id.weex_id_3822,R.id.weex_id_3821,R.id.weex_id_3820,R.id.weex_id_3819,R.id.weex_id_3818,R.id.weex_id_3817,R.id.weex_id_3816,R.id.weex_id_3815,R.id.weex_id_3814,R.id.weex_id_3813,R.id.weex_id_3812,R.id.weex_id_3811,R.id.weex_id_3810,R.id.weex_id_3809,R.id.weex_id_3808,R.id.weex_id_3807,R.id.weex_id_3806,R.id.weex_id_3805,R.id.weex_id_3804,R.id.weex_id_3803,R.id.weex_id_3802,R.id.weex_id_3801,R.id.weex_id_3800, - R.id.weex_id_3799,R.id.weex_id_3798,R.id.weex_id_3797,R.id.weex_id_3796,R.id.weex_id_3795,R.id.weex_id_3794,R.id.weex_id_3793,R.id.weex_id_3792,R.id.weex_id_3791,R.id.weex_id_3790,R.id.weex_id_3789,R.id.weex_id_3788,R.id.weex_id_3787,R.id.weex_id_3786,R.id.weex_id_3785,R.id.weex_id_3784,R.id.weex_id_3783,R.id.weex_id_3782,R.id.weex_id_3781,R.id.weex_id_3780,R.id.weex_id_3779,R.id.weex_id_3778,R.id.weex_id_3777,R.id.weex_id_3776,R.id.weex_id_3775,R.id.weex_id_3774,R.id.weex_id_3773,R.id.weex_id_3772,R.id.weex_id_3771,R.id.weex_id_3770,R.id.weex_id_3769,R.id.weex_id_3768,R.id.weex_id_3767,R.id.weex_id_3766,R.id.weex_id_3765,R.id.weex_id_3764,R.id.weex_id_3763,R.id.weex_id_3762,R.id.weex_id_3761,R.id.weex_id_3760,R.id.weex_id_3759,R.id.weex_id_3758,R.id.weex_id_3757,R.id.weex_id_3756,R.id.weex_id_3755,R.id.weex_id_3754,R.id.weex_id_3753,R.id.weex_id_3752,R.id.weex_id_3751,R.id.weex_id_3750,R.id.weex_id_3749,R.id.weex_id_3748,R.id.weex_id_3747,R.id.weex_id_3746,R.id.weex_id_3745,R.id.weex_id_3744,R.id.weex_id_3743,R.id.weex_id_3742,R.id.weex_id_3741,R.id.weex_id_3740,R.id.weex_id_3739,R.id.weex_id_3738,R.id.weex_id_3737,R.id.weex_id_3736,R.id.weex_id_3735,R.id.weex_id_3734,R.id.weex_id_3733,R.id.weex_id_3732,R.id.weex_id_3731,R.id.weex_id_3730,R.id.weex_id_3729,R.id.weex_id_3728,R.id.weex_id_3727,R.id.weex_id_3726,R.id.weex_id_3725,R.id.weex_id_3724,R.id.weex_id_3723,R.id.weex_id_3722,R.id.weex_id_3721,R.id.weex_id_3720,R.id.weex_id_3719,R.id.weex_id_3718,R.id.weex_id_3717,R.id.weex_id_3716,R.id.weex_id_3715,R.id.weex_id_3714,R.id.weex_id_3713,R.id.weex_id_3712,R.id.weex_id_3711,R.id.weex_id_3710,R.id.weex_id_3709,R.id.weex_id_3708,R.id.weex_id_3707,R.id.weex_id_3706,R.id.weex_id_3705,R.id.weex_id_3704,R.id.weex_id_3703,R.id.weex_id_3702,R.id.weex_id_3701,R.id.weex_id_3700, - R.id.weex_id_3699,R.id.weex_id_3698,R.id.weex_id_3697,R.id.weex_id_3696,R.id.weex_id_3695,R.id.weex_id_3694,R.id.weex_id_3693,R.id.weex_id_3692,R.id.weex_id_3691,R.id.weex_id_3690,R.id.weex_id_3689,R.id.weex_id_3688,R.id.weex_id_3687,R.id.weex_id_3686,R.id.weex_id_3685,R.id.weex_id_3684,R.id.weex_id_3683,R.id.weex_id_3682,R.id.weex_id_3681,R.id.weex_id_3680,R.id.weex_id_3679,R.id.weex_id_3678,R.id.weex_id_3677,R.id.weex_id_3676,R.id.weex_id_3675,R.id.weex_id_3674,R.id.weex_id_3673,R.id.weex_id_3672,R.id.weex_id_3671,R.id.weex_id_3670,R.id.weex_id_3669,R.id.weex_id_3668,R.id.weex_id_3667,R.id.weex_id_3666,R.id.weex_id_3665,R.id.weex_id_3664,R.id.weex_id_3663,R.id.weex_id_3662,R.id.weex_id_3661,R.id.weex_id_3660,R.id.weex_id_3659,R.id.weex_id_3658,R.id.weex_id_3657,R.id.weex_id_3656,R.id.weex_id_3655,R.id.weex_id_3654,R.id.weex_id_3653,R.id.weex_id_3652,R.id.weex_id_3651,R.id.weex_id_3650,R.id.weex_id_3649,R.id.weex_id_3648,R.id.weex_id_3647,R.id.weex_id_3646,R.id.weex_id_3645,R.id.weex_id_3644,R.id.weex_id_3643,R.id.weex_id_3642,R.id.weex_id_3641,R.id.weex_id_3640,R.id.weex_id_3639,R.id.weex_id_3638,R.id.weex_id_3637,R.id.weex_id_3636,R.id.weex_id_3635,R.id.weex_id_3634,R.id.weex_id_3633,R.id.weex_id_3632,R.id.weex_id_3631,R.id.weex_id_3630,R.id.weex_id_3629,R.id.weex_id_3628,R.id.weex_id_3627,R.id.weex_id_3626,R.id.weex_id_3625,R.id.weex_id_3624,R.id.weex_id_3623,R.id.weex_id_3622,R.id.weex_id_3621,R.id.weex_id_3620,R.id.weex_id_3619,R.id.weex_id_3618,R.id.weex_id_3617,R.id.weex_id_3616,R.id.weex_id_3615,R.id.weex_id_3614,R.id.weex_id_3613,R.id.weex_id_3612,R.id.weex_id_3611,R.id.weex_id_3610,R.id.weex_id_3609,R.id.weex_id_3608,R.id.weex_id_3607,R.id.weex_id_3606,R.id.weex_id_3605,R.id.weex_id_3604,R.id.weex_id_3603,R.id.weex_id_3602,R.id.weex_id_3601,R.id.weex_id_3600, - R.id.weex_id_3599,R.id.weex_id_3598,R.id.weex_id_3597,R.id.weex_id_3596,R.id.weex_id_3595,R.id.weex_id_3594,R.id.weex_id_3593,R.id.weex_id_3592,R.id.weex_id_3591,R.id.weex_id_3590,R.id.weex_id_3589,R.id.weex_id_3588,R.id.weex_id_3587,R.id.weex_id_3586,R.id.weex_id_3585,R.id.weex_id_3584,R.id.weex_id_3583,R.id.weex_id_3582,R.id.weex_id_3581,R.id.weex_id_3580,R.id.weex_id_3579,R.id.weex_id_3578,R.id.weex_id_3577,R.id.weex_id_3576,R.id.weex_id_3575,R.id.weex_id_3574,R.id.weex_id_3573,R.id.weex_id_3572,R.id.weex_id_3571,R.id.weex_id_3570,R.id.weex_id_3569,R.id.weex_id_3568,R.id.weex_id_3567,R.id.weex_id_3566,R.id.weex_id_3565,R.id.weex_id_3564,R.id.weex_id_3563,R.id.weex_id_3562,R.id.weex_id_3561,R.id.weex_id_3560,R.id.weex_id_3559,R.id.weex_id_3558,R.id.weex_id_3557,R.id.weex_id_3556,R.id.weex_id_3555,R.id.weex_id_3554,R.id.weex_id_3553,R.id.weex_id_3552,R.id.weex_id_3551,R.id.weex_id_3550,R.id.weex_id_3549,R.id.weex_id_3548,R.id.weex_id_3547,R.id.weex_id_3546,R.id.weex_id_3545,R.id.weex_id_3544,R.id.weex_id_3543,R.id.weex_id_3542,R.id.weex_id_3541,R.id.weex_id_3540,R.id.weex_id_3539,R.id.weex_id_3538,R.id.weex_id_3537,R.id.weex_id_3536,R.id.weex_id_3535,R.id.weex_id_3534,R.id.weex_id_3533,R.id.weex_id_3532,R.id.weex_id_3531,R.id.weex_id_3530,R.id.weex_id_3529,R.id.weex_id_3528,R.id.weex_id_3527,R.id.weex_id_3526,R.id.weex_id_3525,R.id.weex_id_3524,R.id.weex_id_3523,R.id.weex_id_3522,R.id.weex_id_3521,R.id.weex_id_3520,R.id.weex_id_3519,R.id.weex_id_3518,R.id.weex_id_3517,R.id.weex_id_3516,R.id.weex_id_3515,R.id.weex_id_3514,R.id.weex_id_3513,R.id.weex_id_3512,R.id.weex_id_3511,R.id.weex_id_3510,R.id.weex_id_3509,R.id.weex_id_3508,R.id.weex_id_3507,R.id.weex_id_3506,R.id.weex_id_3505,R.id.weex_id_3504,R.id.weex_id_3503,R.id.weex_id_3502,R.id.weex_id_3501,R.id.weex_id_3500, - R.id.weex_id_3499,R.id.weex_id_3498,R.id.weex_id_3497,R.id.weex_id_3496,R.id.weex_id_3495,R.id.weex_id_3494,R.id.weex_id_3493,R.id.weex_id_3492,R.id.weex_id_3491,R.id.weex_id_3490,R.id.weex_id_3489,R.id.weex_id_3488,R.id.weex_id_3487,R.id.weex_id_3486,R.id.weex_id_3485,R.id.weex_id_3484,R.id.weex_id_3483,R.id.weex_id_3482,R.id.weex_id_3481,R.id.weex_id_3480,R.id.weex_id_3479,R.id.weex_id_3478,R.id.weex_id_3477,R.id.weex_id_3476,R.id.weex_id_3475,R.id.weex_id_3474,R.id.weex_id_3473,R.id.weex_id_3472,R.id.weex_id_3471,R.id.weex_id_3470,R.id.weex_id_3469,R.id.weex_id_3468,R.id.weex_id_3467,R.id.weex_id_3466,R.id.weex_id_3465,R.id.weex_id_3464,R.id.weex_id_3463,R.id.weex_id_3462,R.id.weex_id_3461,R.id.weex_id_3460,R.id.weex_id_3459,R.id.weex_id_3458,R.id.weex_id_3457,R.id.weex_id_3456,R.id.weex_id_3455,R.id.weex_id_3454,R.id.weex_id_3453,R.id.weex_id_3452,R.id.weex_id_3451,R.id.weex_id_3450,R.id.weex_id_3449,R.id.weex_id_3448,R.id.weex_id_3447,R.id.weex_id_3446,R.id.weex_id_3445,R.id.weex_id_3444,R.id.weex_id_3443,R.id.weex_id_3442,R.id.weex_id_3441,R.id.weex_id_3440,R.id.weex_id_3439,R.id.weex_id_3438,R.id.weex_id_3437,R.id.weex_id_3436,R.id.weex_id_3435,R.id.weex_id_3434,R.id.weex_id_3433,R.id.weex_id_3432,R.id.weex_id_3431,R.id.weex_id_3430,R.id.weex_id_3429,R.id.weex_id_3428,R.id.weex_id_3427,R.id.weex_id_3426,R.id.weex_id_3425,R.id.weex_id_3424,R.id.weex_id_3423,R.id.weex_id_3422,R.id.weex_id_3421,R.id.weex_id_3420,R.id.weex_id_3419,R.id.weex_id_3418,R.id.weex_id_3417,R.id.weex_id_3416,R.id.weex_id_3415,R.id.weex_id_3414,R.id.weex_id_3413,R.id.weex_id_3412,R.id.weex_id_3411,R.id.weex_id_3410,R.id.weex_id_3409,R.id.weex_id_3408,R.id.weex_id_3407,R.id.weex_id_3406,R.id.weex_id_3405,R.id.weex_id_3404,R.id.weex_id_3403,R.id.weex_id_3402,R.id.weex_id_3401,R.id.weex_id_3400, - R.id.weex_id_3399,R.id.weex_id_3398,R.id.weex_id_3397,R.id.weex_id_3396,R.id.weex_id_3395,R.id.weex_id_3394,R.id.weex_id_3393,R.id.weex_id_3392,R.id.weex_id_3391,R.id.weex_id_3390,R.id.weex_id_3389,R.id.weex_id_3388,R.id.weex_id_3387,R.id.weex_id_3386,R.id.weex_id_3385,R.id.weex_id_3384,R.id.weex_id_3383,R.id.weex_id_3382,R.id.weex_id_3381,R.id.weex_id_3380,R.id.weex_id_3379,R.id.weex_id_3378,R.id.weex_id_3377,R.id.weex_id_3376,R.id.weex_id_3375,R.id.weex_id_3374,R.id.weex_id_3373,R.id.weex_id_3372,R.id.weex_id_3371,R.id.weex_id_3370,R.id.weex_id_3369,R.id.weex_id_3368,R.id.weex_id_3367,R.id.weex_id_3366,R.id.weex_id_3365,R.id.weex_id_3364,R.id.weex_id_3363,R.id.weex_id_3362,R.id.weex_id_3361,R.id.weex_id_3360,R.id.weex_id_3359,R.id.weex_id_3358,R.id.weex_id_3357,R.id.weex_id_3356,R.id.weex_id_3355,R.id.weex_id_3354,R.id.weex_id_3353,R.id.weex_id_3352,R.id.weex_id_3351,R.id.weex_id_3350,R.id.weex_id_3349,R.id.weex_id_3348,R.id.weex_id_3347,R.id.weex_id_3346,R.id.weex_id_3345,R.id.weex_id_3344,R.id.weex_id_3343,R.id.weex_id_3342,R.id.weex_id_3341,R.id.weex_id_3340,R.id.weex_id_3339,R.id.weex_id_3338,R.id.weex_id_3337,R.id.weex_id_3336,R.id.weex_id_3335,R.id.weex_id_3334,R.id.weex_id_3333,R.id.weex_id_3332,R.id.weex_id_3331,R.id.weex_id_3330,R.id.weex_id_3329,R.id.weex_id_3328,R.id.weex_id_3327,R.id.weex_id_3326,R.id.weex_id_3325,R.id.weex_id_3324,R.id.weex_id_3323,R.id.weex_id_3322,R.id.weex_id_3321,R.id.weex_id_3320,R.id.weex_id_3319,R.id.weex_id_3318,R.id.weex_id_3317,R.id.weex_id_3316,R.id.weex_id_3315,R.id.weex_id_3314,R.id.weex_id_3313,R.id.weex_id_3312,R.id.weex_id_3311,R.id.weex_id_3310,R.id.weex_id_3309,R.id.weex_id_3308,R.id.weex_id_3307,R.id.weex_id_3306,R.id.weex_id_3305,R.id.weex_id_3304,R.id.weex_id_3303,R.id.weex_id_3302,R.id.weex_id_3301,R.id.weex_id_3300, - R.id.weex_id_3299,R.id.weex_id_3298,R.id.weex_id_3297,R.id.weex_id_3296,R.id.weex_id_3295,R.id.weex_id_3294,R.id.weex_id_3293,R.id.weex_id_3292,R.id.weex_id_3291,R.id.weex_id_3290,R.id.weex_id_3289,R.id.weex_id_3288,R.id.weex_id_3287,R.id.weex_id_3286,R.id.weex_id_3285,R.id.weex_id_3284,R.id.weex_id_3283,R.id.weex_id_3282,R.id.weex_id_3281,R.id.weex_id_3280,R.id.weex_id_3279,R.id.weex_id_3278,R.id.weex_id_3277,R.id.weex_id_3276,R.id.weex_id_3275,R.id.weex_id_3274,R.id.weex_id_3273,R.id.weex_id_3272,R.id.weex_id_3271,R.id.weex_id_3270,R.id.weex_id_3269,R.id.weex_id_3268,R.id.weex_id_3267,R.id.weex_id_3266,R.id.weex_id_3265,R.id.weex_id_3264,R.id.weex_id_3263,R.id.weex_id_3262,R.id.weex_id_3261,R.id.weex_id_3260,R.id.weex_id_3259,R.id.weex_id_3258,R.id.weex_id_3257,R.id.weex_id_3256,R.id.weex_id_3255,R.id.weex_id_3254,R.id.weex_id_3253,R.id.weex_id_3252,R.id.weex_id_3251,R.id.weex_id_3250,R.id.weex_id_3249,R.id.weex_id_3248,R.id.weex_id_3247,R.id.weex_id_3246,R.id.weex_id_3245,R.id.weex_id_3244,R.id.weex_id_3243,R.id.weex_id_3242,R.id.weex_id_3241,R.id.weex_id_3240,R.id.weex_id_3239,R.id.weex_id_3238,R.id.weex_id_3237,R.id.weex_id_3236,R.id.weex_id_3235,R.id.weex_id_3234,R.id.weex_id_3233,R.id.weex_id_3232,R.id.weex_id_3231,R.id.weex_id_3230,R.id.weex_id_3229,R.id.weex_id_3228,R.id.weex_id_3227,R.id.weex_id_3226,R.id.weex_id_3225,R.id.weex_id_3224,R.id.weex_id_3223,R.id.weex_id_3222,R.id.weex_id_3221,R.id.weex_id_3220,R.id.weex_id_3219,R.id.weex_id_3218,R.id.weex_id_3217,R.id.weex_id_3216,R.id.weex_id_3215,R.id.weex_id_3214,R.id.weex_id_3213,R.id.weex_id_3212,R.id.weex_id_3211,R.id.weex_id_3210,R.id.weex_id_3209,R.id.weex_id_3208,R.id.weex_id_3207,R.id.weex_id_3206,R.id.weex_id_3205,R.id.weex_id_3204,R.id.weex_id_3203,R.id.weex_id_3202,R.id.weex_id_3201,R.id.weex_id_3200, - R.id.weex_id_3199,R.id.weex_id_3198,R.id.weex_id_3197,R.id.weex_id_3196,R.id.weex_id_3195,R.id.weex_id_3194,R.id.weex_id_3193,R.id.weex_id_3192,R.id.weex_id_3191,R.id.weex_id_3190,R.id.weex_id_3189,R.id.weex_id_3188,R.id.weex_id_3187,R.id.weex_id_3186,R.id.weex_id_3185,R.id.weex_id_3184,R.id.weex_id_3183,R.id.weex_id_3182,R.id.weex_id_3181,R.id.weex_id_3180,R.id.weex_id_3179,R.id.weex_id_3178,R.id.weex_id_3177,R.id.weex_id_3176,R.id.weex_id_3175,R.id.weex_id_3174,R.id.weex_id_3173,R.id.weex_id_3172,R.id.weex_id_3171,R.id.weex_id_3170,R.id.weex_id_3169,R.id.weex_id_3168,R.id.weex_id_3167,R.id.weex_id_3166,R.id.weex_id_3165,R.id.weex_id_3164,R.id.weex_id_3163,R.id.weex_id_3162,R.id.weex_id_3161,R.id.weex_id_3160,R.id.weex_id_3159,R.id.weex_id_3158,R.id.weex_id_3157,R.id.weex_id_3156,R.id.weex_id_3155,R.id.weex_id_3154,R.id.weex_id_3153,R.id.weex_id_3152,R.id.weex_id_3151,R.id.weex_id_3150,R.id.weex_id_3149,R.id.weex_id_3148,R.id.weex_id_3147,R.id.weex_id_3146,R.id.weex_id_3145,R.id.weex_id_3144,R.id.weex_id_3143,R.id.weex_id_3142,R.id.weex_id_3141,R.id.weex_id_3140,R.id.weex_id_3139,R.id.weex_id_3138,R.id.weex_id_3137,R.id.weex_id_3136,R.id.weex_id_3135,R.id.weex_id_3134,R.id.weex_id_3133,R.id.weex_id_3132,R.id.weex_id_3131,R.id.weex_id_3130,R.id.weex_id_3129,R.id.weex_id_3128,R.id.weex_id_3127,R.id.weex_id_3126,R.id.weex_id_3125,R.id.weex_id_3124,R.id.weex_id_3123,R.id.weex_id_3122,R.id.weex_id_3121,R.id.weex_id_3120,R.id.weex_id_3119,R.id.weex_id_3118,R.id.weex_id_3117,R.id.weex_id_3116,R.id.weex_id_3115,R.id.weex_id_3114,R.id.weex_id_3113,R.id.weex_id_3112,R.id.weex_id_3111,R.id.weex_id_3110,R.id.weex_id_3109,R.id.weex_id_3108,R.id.weex_id_3107,R.id.weex_id_3106,R.id.weex_id_3105,R.id.weex_id_3104,R.id.weex_id_3103,R.id.weex_id_3102,R.id.weex_id_3101,R.id.weex_id_3100, - R.id.weex_id_3099,R.id.weex_id_3098,R.id.weex_id_3097,R.id.weex_id_3096,R.id.weex_id_3095,R.id.weex_id_3094,R.id.weex_id_3093,R.id.weex_id_3092,R.id.weex_id_3091,R.id.weex_id_3090,R.id.weex_id_3089,R.id.weex_id_3088,R.id.weex_id_3087,R.id.weex_id_3086,R.id.weex_id_3085,R.id.weex_id_3084,R.id.weex_id_3083,R.id.weex_id_3082,R.id.weex_id_3081,R.id.weex_id_3080,R.id.weex_id_3079,R.id.weex_id_3078,R.id.weex_id_3077,R.id.weex_id_3076,R.id.weex_id_3075,R.id.weex_id_3074,R.id.weex_id_3073,R.id.weex_id_3072,R.id.weex_id_3071,R.id.weex_id_3070,R.id.weex_id_3069,R.id.weex_id_3068,R.id.weex_id_3067,R.id.weex_id_3066,R.id.weex_id_3065,R.id.weex_id_3064,R.id.weex_id_3063,R.id.weex_id_3062,R.id.weex_id_3061,R.id.weex_id_3060,R.id.weex_id_3059,R.id.weex_id_3058,R.id.weex_id_3057,R.id.weex_id_3056,R.id.weex_id_3055,R.id.weex_id_3054,R.id.weex_id_3053,R.id.weex_id_3052,R.id.weex_id_3051,R.id.weex_id_3050,R.id.weex_id_3049,R.id.weex_id_3048,R.id.weex_id_3047,R.id.weex_id_3046,R.id.weex_id_3045,R.id.weex_id_3044,R.id.weex_id_3043,R.id.weex_id_3042,R.id.weex_id_3041,R.id.weex_id_3040,R.id.weex_id_3039,R.id.weex_id_3038,R.id.weex_id_3037,R.id.weex_id_3036,R.id.weex_id_3035,R.id.weex_id_3034,R.id.weex_id_3033,R.id.weex_id_3032,R.id.weex_id_3031,R.id.weex_id_3030,R.id.weex_id_3029,R.id.weex_id_3028,R.id.weex_id_3027,R.id.weex_id_3026,R.id.weex_id_3025,R.id.weex_id_3024,R.id.weex_id_3023,R.id.weex_id_3022,R.id.weex_id_3021,R.id.weex_id_3020,R.id.weex_id_3019,R.id.weex_id_3018,R.id.weex_id_3017,R.id.weex_id_3016,R.id.weex_id_3015,R.id.weex_id_3014,R.id.weex_id_3013,R.id.weex_id_3012,R.id.weex_id_3011,R.id.weex_id_3010,R.id.weex_id_3009,R.id.weex_id_3008,R.id.weex_id_3007,R.id.weex_id_3006,R.id.weex_id_3005,R.id.weex_id_3004,R.id.weex_id_3003,R.id.weex_id_3002,R.id.weex_id_3001,R.id.weex_id_3000, - R.id.weex_id_2999,R.id.weex_id_2998,R.id.weex_id_2997,R.id.weex_id_2996,R.id.weex_id_2995,R.id.weex_id_2994,R.id.weex_id_2993,R.id.weex_id_2992,R.id.weex_id_2991,R.id.weex_id_2990,R.id.weex_id_2989,R.id.weex_id_2988,R.id.weex_id_2987,R.id.weex_id_2986,R.id.weex_id_2985,R.id.weex_id_2984,R.id.weex_id_2983,R.id.weex_id_2982,R.id.weex_id_2981,R.id.weex_id_2980,R.id.weex_id_2979,R.id.weex_id_2978,R.id.weex_id_2977,R.id.weex_id_2976,R.id.weex_id_2975,R.id.weex_id_2974,R.id.weex_id_2973,R.id.weex_id_2972,R.id.weex_id_2971,R.id.weex_id_2970,R.id.weex_id_2969,R.id.weex_id_2968,R.id.weex_id_2967,R.id.weex_id_2966,R.id.weex_id_2965,R.id.weex_id_2964,R.id.weex_id_2963,R.id.weex_id_2962,R.id.weex_id_2961,R.id.weex_id_2960,R.id.weex_id_2959,R.id.weex_id_2958,R.id.weex_id_2957,R.id.weex_id_2956,R.id.weex_id_2955,R.id.weex_id_2954,R.id.weex_id_2953,R.id.weex_id_2952,R.id.weex_id_2951,R.id.weex_id_2950,R.id.weex_id_2949,R.id.weex_id_2948,R.id.weex_id_2947,R.id.weex_id_2946,R.id.weex_id_2945,R.id.weex_id_2944,R.id.weex_id_2943,R.id.weex_id_2942,R.id.weex_id_2941,R.id.weex_id_2940,R.id.weex_id_2939,R.id.weex_id_2938,R.id.weex_id_2937,R.id.weex_id_2936,R.id.weex_id_2935,R.id.weex_id_2934,R.id.weex_id_2933,R.id.weex_id_2932,R.id.weex_id_2931,R.id.weex_id_2930,R.id.weex_id_2929,R.id.weex_id_2928,R.id.weex_id_2927,R.id.weex_id_2926,R.id.weex_id_2925,R.id.weex_id_2924,R.id.weex_id_2923,R.id.weex_id_2922,R.id.weex_id_2921,R.id.weex_id_2920,R.id.weex_id_2919,R.id.weex_id_2918,R.id.weex_id_2917,R.id.weex_id_2916,R.id.weex_id_2915,R.id.weex_id_2914,R.id.weex_id_2913,R.id.weex_id_2912,R.id.weex_id_2911,R.id.weex_id_2910,R.id.weex_id_2909,R.id.weex_id_2908,R.id.weex_id_2907,R.id.weex_id_2906,R.id.weex_id_2905,R.id.weex_id_2904,R.id.weex_id_2903,R.id.weex_id_2902,R.id.weex_id_2901,R.id.weex_id_2900, - R.id.weex_id_2899,R.id.weex_id_2898,R.id.weex_id_2897,R.id.weex_id_2896,R.id.weex_id_2895,R.id.weex_id_2894,R.id.weex_id_2893,R.id.weex_id_2892,R.id.weex_id_2891,R.id.weex_id_2890,R.id.weex_id_2889,R.id.weex_id_2888,R.id.weex_id_2887,R.id.weex_id_2886,R.id.weex_id_2885,R.id.weex_id_2884,R.id.weex_id_2883,R.id.weex_id_2882,R.id.weex_id_2881,R.id.weex_id_2880,R.id.weex_id_2879,R.id.weex_id_2878,R.id.weex_id_2877,R.id.weex_id_2876,R.id.weex_id_2875,R.id.weex_id_2874,R.id.weex_id_2873,R.id.weex_id_2872,R.id.weex_id_2871,R.id.weex_id_2870,R.id.weex_id_2869,R.id.weex_id_2868,R.id.weex_id_2867,R.id.weex_id_2866,R.id.weex_id_2865,R.id.weex_id_2864,R.id.weex_id_2863,R.id.weex_id_2862,R.id.weex_id_2861,R.id.weex_id_2860,R.id.weex_id_2859,R.id.weex_id_2858,R.id.weex_id_2857,R.id.weex_id_2856,R.id.weex_id_2855,R.id.weex_id_2854,R.id.weex_id_2853,R.id.weex_id_2852,R.id.weex_id_2851,R.id.weex_id_2850,R.id.weex_id_2849,R.id.weex_id_2848,R.id.weex_id_2847,R.id.weex_id_2846,R.id.weex_id_2845,R.id.weex_id_2844,R.id.weex_id_2843,R.id.weex_id_2842,R.id.weex_id_2841,R.id.weex_id_2840,R.id.weex_id_2839,R.id.weex_id_2838,R.id.weex_id_2837,R.id.weex_id_2836,R.id.weex_id_2835,R.id.weex_id_2834,R.id.weex_id_2833,R.id.weex_id_2832,R.id.weex_id_2831,R.id.weex_id_2830,R.id.weex_id_2829,R.id.weex_id_2828,R.id.weex_id_2827,R.id.weex_id_2826,R.id.weex_id_2825,R.id.weex_id_2824,R.id.weex_id_2823,R.id.weex_id_2822,R.id.weex_id_2821,R.id.weex_id_2820,R.id.weex_id_2819,R.id.weex_id_2818,R.id.weex_id_2817,R.id.weex_id_2816,R.id.weex_id_2815,R.id.weex_id_2814,R.id.weex_id_2813,R.id.weex_id_2812,R.id.weex_id_2811,R.id.weex_id_2810,R.id.weex_id_2809,R.id.weex_id_2808,R.id.weex_id_2807,R.id.weex_id_2806,R.id.weex_id_2805,R.id.weex_id_2804,R.id.weex_id_2803,R.id.weex_id_2802,R.id.weex_id_2801,R.id.weex_id_2800, - R.id.weex_id_2799,R.id.weex_id_2798,R.id.weex_id_2797,R.id.weex_id_2796,R.id.weex_id_2795,R.id.weex_id_2794,R.id.weex_id_2793,R.id.weex_id_2792,R.id.weex_id_2791,R.id.weex_id_2790,R.id.weex_id_2789,R.id.weex_id_2788,R.id.weex_id_2787,R.id.weex_id_2786,R.id.weex_id_2785,R.id.weex_id_2784,R.id.weex_id_2783,R.id.weex_id_2782,R.id.weex_id_2781,R.id.weex_id_2780,R.id.weex_id_2779,R.id.weex_id_2778,R.id.weex_id_2777,R.id.weex_id_2776,R.id.weex_id_2775,R.id.weex_id_2774,R.id.weex_id_2773,R.id.weex_id_2772,R.id.weex_id_2771,R.id.weex_id_2770,R.id.weex_id_2769,R.id.weex_id_2768,R.id.weex_id_2767,R.id.weex_id_2766,R.id.weex_id_2765,R.id.weex_id_2764,R.id.weex_id_2763,R.id.weex_id_2762,R.id.weex_id_2761,R.id.weex_id_2760,R.id.weex_id_2759,R.id.weex_id_2758,R.id.weex_id_2757,R.id.weex_id_2756,R.id.weex_id_2755,R.id.weex_id_2754,R.id.weex_id_2753,R.id.weex_id_2752,R.id.weex_id_2751,R.id.weex_id_2750,R.id.weex_id_2749,R.id.weex_id_2748,R.id.weex_id_2747,R.id.weex_id_2746,R.id.weex_id_2745,R.id.weex_id_2744,R.id.weex_id_2743,R.id.weex_id_2742,R.id.weex_id_2741,R.id.weex_id_2740,R.id.weex_id_2739,R.id.weex_id_2738,R.id.weex_id_2737,R.id.weex_id_2736,R.id.weex_id_2735,R.id.weex_id_2734,R.id.weex_id_2733,R.id.weex_id_2732,R.id.weex_id_2731,R.id.weex_id_2730,R.id.weex_id_2729,R.id.weex_id_2728,R.id.weex_id_2727,R.id.weex_id_2726,R.id.weex_id_2725,R.id.weex_id_2724,R.id.weex_id_2723,R.id.weex_id_2722,R.id.weex_id_2721,R.id.weex_id_2720,R.id.weex_id_2719,R.id.weex_id_2718,R.id.weex_id_2717,R.id.weex_id_2716,R.id.weex_id_2715,R.id.weex_id_2714,R.id.weex_id_2713,R.id.weex_id_2712,R.id.weex_id_2711,R.id.weex_id_2710,R.id.weex_id_2709,R.id.weex_id_2708,R.id.weex_id_2707,R.id.weex_id_2706,R.id.weex_id_2705,R.id.weex_id_2704,R.id.weex_id_2703,R.id.weex_id_2702,R.id.weex_id_2701,R.id.weex_id_2700, - R.id.weex_id_2699,R.id.weex_id_2698,R.id.weex_id_2697,R.id.weex_id_2696,R.id.weex_id_2695,R.id.weex_id_2694,R.id.weex_id_2693,R.id.weex_id_2692,R.id.weex_id_2691,R.id.weex_id_2690,R.id.weex_id_2689,R.id.weex_id_2688,R.id.weex_id_2687,R.id.weex_id_2686,R.id.weex_id_2685,R.id.weex_id_2684,R.id.weex_id_2683,R.id.weex_id_2682,R.id.weex_id_2681,R.id.weex_id_2680,R.id.weex_id_2679,R.id.weex_id_2678,R.id.weex_id_2677,R.id.weex_id_2676,R.id.weex_id_2675,R.id.weex_id_2674,R.id.weex_id_2673,R.id.weex_id_2672,R.id.weex_id_2671,R.id.weex_id_2670,R.id.weex_id_2669,R.id.weex_id_2668,R.id.weex_id_2667,R.id.weex_id_2666,R.id.weex_id_2665,R.id.weex_id_2664,R.id.weex_id_2663,R.id.weex_id_2662,R.id.weex_id_2661,R.id.weex_id_2660,R.id.weex_id_2659,R.id.weex_id_2658,R.id.weex_id_2657,R.id.weex_id_2656,R.id.weex_id_2655,R.id.weex_id_2654,R.id.weex_id_2653,R.id.weex_id_2652,R.id.weex_id_2651,R.id.weex_id_2650,R.id.weex_id_2649,R.id.weex_id_2648,R.id.weex_id_2647,R.id.weex_id_2646,R.id.weex_id_2645,R.id.weex_id_2644,R.id.weex_id_2643,R.id.weex_id_2642,R.id.weex_id_2641,R.id.weex_id_2640,R.id.weex_id_2639,R.id.weex_id_2638,R.id.weex_id_2637,R.id.weex_id_2636,R.id.weex_id_2635,R.id.weex_id_2634,R.id.weex_id_2633,R.id.weex_id_2632,R.id.weex_id_2631,R.id.weex_id_2630,R.id.weex_id_2629,R.id.weex_id_2628,R.id.weex_id_2627,R.id.weex_id_2626,R.id.weex_id_2625,R.id.weex_id_2624,R.id.weex_id_2623,R.id.weex_id_2622,R.id.weex_id_2621,R.id.weex_id_2620,R.id.weex_id_2619,R.id.weex_id_2618,R.id.weex_id_2617,R.id.weex_id_2616,R.id.weex_id_2615,R.id.weex_id_2614,R.id.weex_id_2613,R.id.weex_id_2612,R.id.weex_id_2611,R.id.weex_id_2610,R.id.weex_id_2609,R.id.weex_id_2608,R.id.weex_id_2607,R.id.weex_id_2606,R.id.weex_id_2605,R.id.weex_id_2604,R.id.weex_id_2603,R.id.weex_id_2602,R.id.weex_id_2601,R.id.weex_id_2600, - R.id.weex_id_2599,R.id.weex_id_2598,R.id.weex_id_2597,R.id.weex_id_2596,R.id.weex_id_2595,R.id.weex_id_2594,R.id.weex_id_2593,R.id.weex_id_2592,R.id.weex_id_2591,R.id.weex_id_2590,R.id.weex_id_2589,R.id.weex_id_2588,R.id.weex_id_2587,R.id.weex_id_2586,R.id.weex_id_2585,R.id.weex_id_2584,R.id.weex_id_2583,R.id.weex_id_2582,R.id.weex_id_2581,R.id.weex_id_2580,R.id.weex_id_2579,R.id.weex_id_2578,R.id.weex_id_2577,R.id.weex_id_2576,R.id.weex_id_2575,R.id.weex_id_2574,R.id.weex_id_2573,R.id.weex_id_2572,R.id.weex_id_2571,R.id.weex_id_2570,R.id.weex_id_2569,R.id.weex_id_2568,R.id.weex_id_2567,R.id.weex_id_2566,R.id.weex_id_2565,R.id.weex_id_2564,R.id.weex_id_2563,R.id.weex_id_2562,R.id.weex_id_2561,R.id.weex_id_2560,R.id.weex_id_2559,R.id.weex_id_2558,R.id.weex_id_2557,R.id.weex_id_2556,R.id.weex_id_2555,R.id.weex_id_2554,R.id.weex_id_2553,R.id.weex_id_2552,R.id.weex_id_2551,R.id.weex_id_2550,R.id.weex_id_2549,R.id.weex_id_2548,R.id.weex_id_2547,R.id.weex_id_2546,R.id.weex_id_2545,R.id.weex_id_2544,R.id.weex_id_2543,R.id.weex_id_2542,R.id.weex_id_2541,R.id.weex_id_2540,R.id.weex_id_2539,R.id.weex_id_2538,R.id.weex_id_2537,R.id.weex_id_2536,R.id.weex_id_2535,R.id.weex_id_2534,R.id.weex_id_2533,R.id.weex_id_2532,R.id.weex_id_2531,R.id.weex_id_2530,R.id.weex_id_2529,R.id.weex_id_2528,R.id.weex_id_2527,R.id.weex_id_2526,R.id.weex_id_2525,R.id.weex_id_2524,R.id.weex_id_2523,R.id.weex_id_2522,R.id.weex_id_2521,R.id.weex_id_2520,R.id.weex_id_2519,R.id.weex_id_2518,R.id.weex_id_2517,R.id.weex_id_2516,R.id.weex_id_2515,R.id.weex_id_2514,R.id.weex_id_2513,R.id.weex_id_2512,R.id.weex_id_2511,R.id.weex_id_2510,R.id.weex_id_2509,R.id.weex_id_2508,R.id.weex_id_2507,R.id.weex_id_2506,R.id.weex_id_2505,R.id.weex_id_2504,R.id.weex_id_2503,R.id.weex_id_2502,R.id.weex_id_2501,R.id.weex_id_2500, - R.id.weex_id_2499,R.id.weex_id_2498,R.id.weex_id_2497,R.id.weex_id_2496,R.id.weex_id_2495,R.id.weex_id_2494,R.id.weex_id_2493,R.id.weex_id_2492,R.id.weex_id_2491,R.id.weex_id_2490,R.id.weex_id_2489,R.id.weex_id_2488,R.id.weex_id_2487,R.id.weex_id_2486,R.id.weex_id_2485,R.id.weex_id_2484,R.id.weex_id_2483,R.id.weex_id_2482,R.id.weex_id_2481,R.id.weex_id_2480,R.id.weex_id_2479,R.id.weex_id_2478,R.id.weex_id_2477,R.id.weex_id_2476,R.id.weex_id_2475,R.id.weex_id_2474,R.id.weex_id_2473,R.id.weex_id_2472,R.id.weex_id_2471,R.id.weex_id_2470,R.id.weex_id_2469,R.id.weex_id_2468,R.id.weex_id_2467,R.id.weex_id_2466,R.id.weex_id_2465,R.id.weex_id_2464,R.id.weex_id_2463,R.id.weex_id_2462,R.id.weex_id_2461,R.id.weex_id_2460,R.id.weex_id_2459,R.id.weex_id_2458,R.id.weex_id_2457,R.id.weex_id_2456,R.id.weex_id_2455,R.id.weex_id_2454,R.id.weex_id_2453,R.id.weex_id_2452,R.id.weex_id_2451,R.id.weex_id_2450,R.id.weex_id_2449,R.id.weex_id_2448,R.id.weex_id_2447,R.id.weex_id_2446,R.id.weex_id_2445,R.id.weex_id_2444,R.id.weex_id_2443,R.id.weex_id_2442,R.id.weex_id_2441,R.id.weex_id_2440,R.id.weex_id_2439,R.id.weex_id_2438,R.id.weex_id_2437,R.id.weex_id_2436,R.id.weex_id_2435,R.id.weex_id_2434,R.id.weex_id_2433,R.id.weex_id_2432,R.id.weex_id_2431,R.id.weex_id_2430,R.id.weex_id_2429,R.id.weex_id_2428,R.id.weex_id_2427,R.id.weex_id_2426,R.id.weex_id_2425,R.id.weex_id_2424,R.id.weex_id_2423,R.id.weex_id_2422,R.id.weex_id_2421,R.id.weex_id_2420,R.id.weex_id_2419,R.id.weex_id_2418,R.id.weex_id_2417,R.id.weex_id_2416,R.id.weex_id_2415,R.id.weex_id_2414,R.id.weex_id_2413,R.id.weex_id_2412,R.id.weex_id_2411,R.id.weex_id_2410,R.id.weex_id_2409,R.id.weex_id_2408,R.id.weex_id_2407,R.id.weex_id_2406,R.id.weex_id_2405,R.id.weex_id_2404,R.id.weex_id_2403,R.id.weex_id_2402,R.id.weex_id_2401,R.id.weex_id_2400, - R.id.weex_id_2399,R.id.weex_id_2398,R.id.weex_id_2397,R.id.weex_id_2396,R.id.weex_id_2395,R.id.weex_id_2394,R.id.weex_id_2393,R.id.weex_id_2392,R.id.weex_id_2391,R.id.weex_id_2390,R.id.weex_id_2389,R.id.weex_id_2388,R.id.weex_id_2387,R.id.weex_id_2386,R.id.weex_id_2385,R.id.weex_id_2384,R.id.weex_id_2383,R.id.weex_id_2382,R.id.weex_id_2381,R.id.weex_id_2380,R.id.weex_id_2379,R.id.weex_id_2378,R.id.weex_id_2377,R.id.weex_id_2376,R.id.weex_id_2375,R.id.weex_id_2374,R.id.weex_id_2373,R.id.weex_id_2372,R.id.weex_id_2371,R.id.weex_id_2370,R.id.weex_id_2369,R.id.weex_id_2368,R.id.weex_id_2367,R.id.weex_id_2366,R.id.weex_id_2365,R.id.weex_id_2364,R.id.weex_id_2363,R.id.weex_id_2362,R.id.weex_id_2361,R.id.weex_id_2360,R.id.weex_id_2359,R.id.weex_id_2358,R.id.weex_id_2357,R.id.weex_id_2356,R.id.weex_id_2355,R.id.weex_id_2354,R.id.weex_id_2353,R.id.weex_id_2352,R.id.weex_id_2351,R.id.weex_id_2350,R.id.weex_id_2349,R.id.weex_id_2348,R.id.weex_id_2347,R.id.weex_id_2346,R.id.weex_id_2345,R.id.weex_id_2344,R.id.weex_id_2343,R.id.weex_id_2342,R.id.weex_id_2341,R.id.weex_id_2340,R.id.weex_id_2339,R.id.weex_id_2338,R.id.weex_id_2337,R.id.weex_id_2336,R.id.weex_id_2335,R.id.weex_id_2334,R.id.weex_id_2333,R.id.weex_id_2332,R.id.weex_id_2331,R.id.weex_id_2330,R.id.weex_id_2329,R.id.weex_id_2328,R.id.weex_id_2327,R.id.weex_id_2326,R.id.weex_id_2325,R.id.weex_id_2324,R.id.weex_id_2323,R.id.weex_id_2322,R.id.weex_id_2321,R.id.weex_id_2320,R.id.weex_id_2319,R.id.weex_id_2318,R.id.weex_id_2317,R.id.weex_id_2316,R.id.weex_id_2315,R.id.weex_id_2314,R.id.weex_id_2313,R.id.weex_id_2312,R.id.weex_id_2311,R.id.weex_id_2310,R.id.weex_id_2309,R.id.weex_id_2308,R.id.weex_id_2307,R.id.weex_id_2306,R.id.weex_id_2305,R.id.weex_id_2304,R.id.weex_id_2303,R.id.weex_id_2302,R.id.weex_id_2301,R.id.weex_id_2300, - R.id.weex_id_2299,R.id.weex_id_2298,R.id.weex_id_2297,R.id.weex_id_2296,R.id.weex_id_2295,R.id.weex_id_2294,R.id.weex_id_2293,R.id.weex_id_2292,R.id.weex_id_2291,R.id.weex_id_2290,R.id.weex_id_2289,R.id.weex_id_2288,R.id.weex_id_2287,R.id.weex_id_2286,R.id.weex_id_2285,R.id.weex_id_2284,R.id.weex_id_2283,R.id.weex_id_2282,R.id.weex_id_2281,R.id.weex_id_2280,R.id.weex_id_2279,R.id.weex_id_2278,R.id.weex_id_2277,R.id.weex_id_2276,R.id.weex_id_2275,R.id.weex_id_2274,R.id.weex_id_2273,R.id.weex_id_2272,R.id.weex_id_2271,R.id.weex_id_2270,R.id.weex_id_2269,R.id.weex_id_2268,R.id.weex_id_2267,R.id.weex_id_2266,R.id.weex_id_2265,R.id.weex_id_2264,R.id.weex_id_2263,R.id.weex_id_2262,R.id.weex_id_2261,R.id.weex_id_2260,R.id.weex_id_2259,R.id.weex_id_2258,R.id.weex_id_2257,R.id.weex_id_2256,R.id.weex_id_2255,R.id.weex_id_2254,R.id.weex_id_2253,R.id.weex_id_2252,R.id.weex_id_2251,R.id.weex_id_2250,R.id.weex_id_2249,R.id.weex_id_2248,R.id.weex_id_2247,R.id.weex_id_2246,R.id.weex_id_2245,R.id.weex_id_2244,R.id.weex_id_2243,R.id.weex_id_2242,R.id.weex_id_2241,R.id.weex_id_2240,R.id.weex_id_2239,R.id.weex_id_2238,R.id.weex_id_2237,R.id.weex_id_2236,R.id.weex_id_2235,R.id.weex_id_2234,R.id.weex_id_2233,R.id.weex_id_2232,R.id.weex_id_2231,R.id.weex_id_2230,R.id.weex_id_2229,R.id.weex_id_2228,R.id.weex_id_2227,R.id.weex_id_2226,R.id.weex_id_2225,R.id.weex_id_2224,R.id.weex_id_2223,R.id.weex_id_2222,R.id.weex_id_2221,R.id.weex_id_2220,R.id.weex_id_2219,R.id.weex_id_2218,R.id.weex_id_2217,R.id.weex_id_2216,R.id.weex_id_2215,R.id.weex_id_2214,R.id.weex_id_2213,R.id.weex_id_2212,R.id.weex_id_2211,R.id.weex_id_2210,R.id.weex_id_2209,R.id.weex_id_2208,R.id.weex_id_2207,R.id.weex_id_2206,R.id.weex_id_2205,R.id.weex_id_2204,R.id.weex_id_2203,R.id.weex_id_2202,R.id.weex_id_2201,R.id.weex_id_2200, - R.id.weex_id_2199,R.id.weex_id_2198,R.id.weex_id_2197,R.id.weex_id_2196,R.id.weex_id_2195,R.id.weex_id_2194,R.id.weex_id_2193,R.id.weex_id_2192,R.id.weex_id_2191,R.id.weex_id_2190,R.id.weex_id_2189,R.id.weex_id_2188,R.id.weex_id_2187,R.id.weex_id_2186,R.id.weex_id_2185,R.id.weex_id_2184,R.id.weex_id_2183,R.id.weex_id_2182,R.id.weex_id_2181,R.id.weex_id_2180,R.id.weex_id_2179,R.id.weex_id_2178,R.id.weex_id_2177,R.id.weex_id_2176,R.id.weex_id_2175,R.id.weex_id_2174,R.id.weex_id_2173,R.id.weex_id_2172,R.id.weex_id_2171,R.id.weex_id_2170,R.id.weex_id_2169,R.id.weex_id_2168,R.id.weex_id_2167,R.id.weex_id_2166,R.id.weex_id_2165,R.id.weex_id_2164,R.id.weex_id_2163,R.id.weex_id_2162,R.id.weex_id_2161,R.id.weex_id_2160,R.id.weex_id_2159,R.id.weex_id_2158,R.id.weex_id_2157,R.id.weex_id_2156,R.id.weex_id_2155,R.id.weex_id_2154,R.id.weex_id_2153,R.id.weex_id_2152,R.id.weex_id_2151,R.id.weex_id_2150,R.id.weex_id_2149,R.id.weex_id_2148,R.id.weex_id_2147,R.id.weex_id_2146,R.id.weex_id_2145,R.id.weex_id_2144,R.id.weex_id_2143,R.id.weex_id_2142,R.id.weex_id_2141,R.id.weex_id_2140,R.id.weex_id_2139,R.id.weex_id_2138,R.id.weex_id_2137,R.id.weex_id_2136,R.id.weex_id_2135,R.id.weex_id_2134,R.id.weex_id_2133,R.id.weex_id_2132,R.id.weex_id_2131,R.id.weex_id_2130,R.id.weex_id_2129,R.id.weex_id_2128,R.id.weex_id_2127,R.id.weex_id_2126,R.id.weex_id_2125,R.id.weex_id_2124,R.id.weex_id_2123,R.id.weex_id_2122,R.id.weex_id_2121,R.id.weex_id_2120,R.id.weex_id_2119,R.id.weex_id_2118,R.id.weex_id_2117,R.id.weex_id_2116,R.id.weex_id_2115,R.id.weex_id_2114,R.id.weex_id_2113,R.id.weex_id_2112,R.id.weex_id_2111,R.id.weex_id_2110,R.id.weex_id_2109,R.id.weex_id_2108,R.id.weex_id_2107,R.id.weex_id_2106,R.id.weex_id_2105,R.id.weex_id_2104,R.id.weex_id_2103,R.id.weex_id_2102,R.id.weex_id_2101,R.id.weex_id_2100, - R.id.weex_id_2099,R.id.weex_id_2098,R.id.weex_id_2097,R.id.weex_id_2096,R.id.weex_id_2095,R.id.weex_id_2094,R.id.weex_id_2093,R.id.weex_id_2092,R.id.weex_id_2091,R.id.weex_id_2090,R.id.weex_id_2089,R.id.weex_id_2088,R.id.weex_id_2087,R.id.weex_id_2086,R.id.weex_id_2085,R.id.weex_id_2084,R.id.weex_id_2083,R.id.weex_id_2082,R.id.weex_id_2081,R.id.weex_id_2080,R.id.weex_id_2079,R.id.weex_id_2078,R.id.weex_id_2077,R.id.weex_id_2076,R.id.weex_id_2075,R.id.weex_id_2074,R.id.weex_id_2073,R.id.weex_id_2072,R.id.weex_id_2071,R.id.weex_id_2070,R.id.weex_id_2069,R.id.weex_id_2068,R.id.weex_id_2067,R.id.weex_id_2066,R.id.weex_id_2065,R.id.weex_id_2064,R.id.weex_id_2063,R.id.weex_id_2062,R.id.weex_id_2061,R.id.weex_id_2060,R.id.weex_id_2059,R.id.weex_id_2058,R.id.weex_id_2057,R.id.weex_id_2056,R.id.weex_id_2055,R.id.weex_id_2054,R.id.weex_id_2053,R.id.weex_id_2052,R.id.weex_id_2051,R.id.weex_id_2050,R.id.weex_id_2049,R.id.weex_id_2048,R.id.weex_id_2047,R.id.weex_id_2046,R.id.weex_id_2045,R.id.weex_id_2044,R.id.weex_id_2043,R.id.weex_id_2042,R.id.weex_id_2041,R.id.weex_id_2040,R.id.weex_id_2039,R.id.weex_id_2038,R.id.weex_id_2037,R.id.weex_id_2036,R.id.weex_id_2035,R.id.weex_id_2034,R.id.weex_id_2033,R.id.weex_id_2032,R.id.weex_id_2031,R.id.weex_id_2030,R.id.weex_id_2029,R.id.weex_id_2028,R.id.weex_id_2027,R.id.weex_id_2026,R.id.weex_id_2025,R.id.weex_id_2024,R.id.weex_id_2023,R.id.weex_id_2022,R.id.weex_id_2021,R.id.weex_id_2020,R.id.weex_id_2019,R.id.weex_id_2018,R.id.weex_id_2017,R.id.weex_id_2016,R.id.weex_id_2015,R.id.weex_id_2014,R.id.weex_id_2013,R.id.weex_id_2012,R.id.weex_id_2011,R.id.weex_id_2010,R.id.weex_id_2009,R.id.weex_id_2008,R.id.weex_id_2007,R.id.weex_id_2006,R.id.weex_id_2005,R.id.weex_id_2004,R.id.weex_id_2003,R.id.weex_id_2002,R.id.weex_id_2001,R.id.weex_id_2000, - R.id.weex_id_1999,R.id.weex_id_1998,R.id.weex_id_1997,R.id.weex_id_1996,R.id.weex_id_1995,R.id.weex_id_1994,R.id.weex_id_1993,R.id.weex_id_1992,R.id.weex_id_1991,R.id.weex_id_1990,R.id.weex_id_1989,R.id.weex_id_1988,R.id.weex_id_1987,R.id.weex_id_1986,R.id.weex_id_1985,R.id.weex_id_1984,R.id.weex_id_1983,R.id.weex_id_1982,R.id.weex_id_1981,R.id.weex_id_1980,R.id.weex_id_1979,R.id.weex_id_1978,R.id.weex_id_1977,R.id.weex_id_1976,R.id.weex_id_1975,R.id.weex_id_1974,R.id.weex_id_1973,R.id.weex_id_1972,R.id.weex_id_1971,R.id.weex_id_1970,R.id.weex_id_1969,R.id.weex_id_1968,R.id.weex_id_1967,R.id.weex_id_1966,R.id.weex_id_1965,R.id.weex_id_1964,R.id.weex_id_1963,R.id.weex_id_1962,R.id.weex_id_1961,R.id.weex_id_1960,R.id.weex_id_1959,R.id.weex_id_1958,R.id.weex_id_1957,R.id.weex_id_1956,R.id.weex_id_1955,R.id.weex_id_1954,R.id.weex_id_1953,R.id.weex_id_1952,R.id.weex_id_1951,R.id.weex_id_1950,R.id.weex_id_1949,R.id.weex_id_1948,R.id.weex_id_1947,R.id.weex_id_1946,R.id.weex_id_1945,R.id.weex_id_1944,R.id.weex_id_1943,R.id.weex_id_1942,R.id.weex_id_1941,R.id.weex_id_1940,R.id.weex_id_1939,R.id.weex_id_1938,R.id.weex_id_1937,R.id.weex_id_1936,R.id.weex_id_1935,R.id.weex_id_1934,R.id.weex_id_1933,R.id.weex_id_1932,R.id.weex_id_1931,R.id.weex_id_1930,R.id.weex_id_1929,R.id.weex_id_1928,R.id.weex_id_1927,R.id.weex_id_1926,R.id.weex_id_1925,R.id.weex_id_1924,R.id.weex_id_1923,R.id.weex_id_1922,R.id.weex_id_1921,R.id.weex_id_1920,R.id.weex_id_1919,R.id.weex_id_1918,R.id.weex_id_1917,R.id.weex_id_1916,R.id.weex_id_1915,R.id.weex_id_1914,R.id.weex_id_1913,R.id.weex_id_1912,R.id.weex_id_1911,R.id.weex_id_1910,R.id.weex_id_1909,R.id.weex_id_1908,R.id.weex_id_1907,R.id.weex_id_1906,R.id.weex_id_1905,R.id.weex_id_1904,R.id.weex_id_1903,R.id.weex_id_1902,R.id.weex_id_1901,R.id.weex_id_1900, - R.id.weex_id_1899,R.id.weex_id_1898,R.id.weex_id_1897,R.id.weex_id_1896,R.id.weex_id_1895,R.id.weex_id_1894,R.id.weex_id_1893,R.id.weex_id_1892,R.id.weex_id_1891,R.id.weex_id_1890,R.id.weex_id_1889,R.id.weex_id_1888,R.id.weex_id_1887,R.id.weex_id_1886,R.id.weex_id_1885,R.id.weex_id_1884,R.id.weex_id_1883,R.id.weex_id_1882,R.id.weex_id_1881,R.id.weex_id_1880,R.id.weex_id_1879,R.id.weex_id_1878,R.id.weex_id_1877,R.id.weex_id_1876,R.id.weex_id_1875,R.id.weex_id_1874,R.id.weex_id_1873,R.id.weex_id_1872,R.id.weex_id_1871,R.id.weex_id_1870,R.id.weex_id_1869,R.id.weex_id_1868,R.id.weex_id_1867,R.id.weex_id_1866,R.id.weex_id_1865,R.id.weex_id_1864,R.id.weex_id_1863,R.id.weex_id_1862,R.id.weex_id_1861,R.id.weex_id_1860,R.id.weex_id_1859,R.id.weex_id_1858,R.id.weex_id_1857,R.id.weex_id_1856,R.id.weex_id_1855,R.id.weex_id_1854,R.id.weex_id_1853,R.id.weex_id_1852,R.id.weex_id_1851,R.id.weex_id_1850,R.id.weex_id_1849,R.id.weex_id_1848,R.id.weex_id_1847,R.id.weex_id_1846,R.id.weex_id_1845,R.id.weex_id_1844,R.id.weex_id_1843,R.id.weex_id_1842,R.id.weex_id_1841,R.id.weex_id_1840,R.id.weex_id_1839,R.id.weex_id_1838,R.id.weex_id_1837,R.id.weex_id_1836,R.id.weex_id_1835,R.id.weex_id_1834,R.id.weex_id_1833,R.id.weex_id_1832,R.id.weex_id_1831,R.id.weex_id_1830,R.id.weex_id_1829,R.id.weex_id_1828,R.id.weex_id_1827,R.id.weex_id_1826,R.id.weex_id_1825,R.id.weex_id_1824,R.id.weex_id_1823,R.id.weex_id_1822,R.id.weex_id_1821,R.id.weex_id_1820,R.id.weex_id_1819,R.id.weex_id_1818,R.id.weex_id_1817,R.id.weex_id_1816,R.id.weex_id_1815,R.id.weex_id_1814,R.id.weex_id_1813,R.id.weex_id_1812,R.id.weex_id_1811,R.id.weex_id_1810,R.id.weex_id_1809,R.id.weex_id_1808,R.id.weex_id_1807,R.id.weex_id_1806,R.id.weex_id_1805,R.id.weex_id_1804,R.id.weex_id_1803,R.id.weex_id_1802,R.id.weex_id_1801,R.id.weex_id_1800, - R.id.weex_id_1799,R.id.weex_id_1798,R.id.weex_id_1797,R.id.weex_id_1796,R.id.weex_id_1795,R.id.weex_id_1794,R.id.weex_id_1793,R.id.weex_id_1792,R.id.weex_id_1791,R.id.weex_id_1790,R.id.weex_id_1789,R.id.weex_id_1788,R.id.weex_id_1787,R.id.weex_id_1786,R.id.weex_id_1785,R.id.weex_id_1784,R.id.weex_id_1783,R.id.weex_id_1782,R.id.weex_id_1781,R.id.weex_id_1780,R.id.weex_id_1779,R.id.weex_id_1778,R.id.weex_id_1777,R.id.weex_id_1776,R.id.weex_id_1775,R.id.weex_id_1774,R.id.weex_id_1773,R.id.weex_id_1772,R.id.weex_id_1771,R.id.weex_id_1770,R.id.weex_id_1769,R.id.weex_id_1768,R.id.weex_id_1767,R.id.weex_id_1766,R.id.weex_id_1765,R.id.weex_id_1764,R.id.weex_id_1763,R.id.weex_id_1762,R.id.weex_id_1761,R.id.weex_id_1760,R.id.weex_id_1759,R.id.weex_id_1758,R.id.weex_id_1757,R.id.weex_id_1756,R.id.weex_id_1755,R.id.weex_id_1754,R.id.weex_id_1753,R.id.weex_id_1752,R.id.weex_id_1751,R.id.weex_id_1750,R.id.weex_id_1749,R.id.weex_id_1748,R.id.weex_id_1747,R.id.weex_id_1746,R.id.weex_id_1745,R.id.weex_id_1744,R.id.weex_id_1743,R.id.weex_id_1742,R.id.weex_id_1741,R.id.weex_id_1740,R.id.weex_id_1739,R.id.weex_id_1738,R.id.weex_id_1737,R.id.weex_id_1736,R.id.weex_id_1735,R.id.weex_id_1734,R.id.weex_id_1733,R.id.weex_id_1732,R.id.weex_id_1731,R.id.weex_id_1730,R.id.weex_id_1729,R.id.weex_id_1728,R.id.weex_id_1727,R.id.weex_id_1726,R.id.weex_id_1725,R.id.weex_id_1724,R.id.weex_id_1723,R.id.weex_id_1722,R.id.weex_id_1721,R.id.weex_id_1720,R.id.weex_id_1719,R.id.weex_id_1718,R.id.weex_id_1717,R.id.weex_id_1716,R.id.weex_id_1715,R.id.weex_id_1714,R.id.weex_id_1713,R.id.weex_id_1712,R.id.weex_id_1711,R.id.weex_id_1710,R.id.weex_id_1709,R.id.weex_id_1708,R.id.weex_id_1707,R.id.weex_id_1706,R.id.weex_id_1705,R.id.weex_id_1704,R.id.weex_id_1703,R.id.weex_id_1702,R.id.weex_id_1701,R.id.weex_id_1700, - R.id.weex_id_1699,R.id.weex_id_1698,R.id.weex_id_1697,R.id.weex_id_1696,R.id.weex_id_1695,R.id.weex_id_1694,R.id.weex_id_1693,R.id.weex_id_1692,R.id.weex_id_1691,R.id.weex_id_1690,R.id.weex_id_1689,R.id.weex_id_1688,R.id.weex_id_1687,R.id.weex_id_1686,R.id.weex_id_1685,R.id.weex_id_1684,R.id.weex_id_1683,R.id.weex_id_1682,R.id.weex_id_1681,R.id.weex_id_1680,R.id.weex_id_1679,R.id.weex_id_1678,R.id.weex_id_1677,R.id.weex_id_1676,R.id.weex_id_1675,R.id.weex_id_1674,R.id.weex_id_1673,R.id.weex_id_1672,R.id.weex_id_1671,R.id.weex_id_1670,R.id.weex_id_1669,R.id.weex_id_1668,R.id.weex_id_1667,R.id.weex_id_1666,R.id.weex_id_1665,R.id.weex_id_1664,R.id.weex_id_1663,R.id.weex_id_1662,R.id.weex_id_1661,R.id.weex_id_1660,R.id.weex_id_1659,R.id.weex_id_1658,R.id.weex_id_1657,R.id.weex_id_1656,R.id.weex_id_1655,R.id.weex_id_1654,R.id.weex_id_1653,R.id.weex_id_1652,R.id.weex_id_1651,R.id.weex_id_1650,R.id.weex_id_1649,R.id.weex_id_1648,R.id.weex_id_1647,R.id.weex_id_1646,R.id.weex_id_1645,R.id.weex_id_1644,R.id.weex_id_1643,R.id.weex_id_1642,R.id.weex_id_1641,R.id.weex_id_1640,R.id.weex_id_1639,R.id.weex_id_1638,R.id.weex_id_1637,R.id.weex_id_1636,R.id.weex_id_1635,R.id.weex_id_1634,R.id.weex_id_1633,R.id.weex_id_1632,R.id.weex_id_1631,R.id.weex_id_1630,R.id.weex_id_1629,R.id.weex_id_1628,R.id.weex_id_1627,R.id.weex_id_1626,R.id.weex_id_1625,R.id.weex_id_1624,R.id.weex_id_1623,R.id.weex_id_1622,R.id.weex_id_1621,R.id.weex_id_1620,R.id.weex_id_1619,R.id.weex_id_1618,R.id.weex_id_1617,R.id.weex_id_1616,R.id.weex_id_1615,R.id.weex_id_1614,R.id.weex_id_1613,R.id.weex_id_1612,R.id.weex_id_1611,R.id.weex_id_1610,R.id.weex_id_1609,R.id.weex_id_1608,R.id.weex_id_1607,R.id.weex_id_1606,R.id.weex_id_1605,R.id.weex_id_1604,R.id.weex_id_1603,R.id.weex_id_1602,R.id.weex_id_1601,R.id.weex_id_1600, - R.id.weex_id_1599,R.id.weex_id_1598,R.id.weex_id_1597,R.id.weex_id_1596,R.id.weex_id_1595,R.id.weex_id_1594,R.id.weex_id_1593,R.id.weex_id_1592,R.id.weex_id_1591,R.id.weex_id_1590,R.id.weex_id_1589,R.id.weex_id_1588,R.id.weex_id_1587,R.id.weex_id_1586,R.id.weex_id_1585,R.id.weex_id_1584,R.id.weex_id_1583,R.id.weex_id_1582,R.id.weex_id_1581,R.id.weex_id_1580,R.id.weex_id_1579,R.id.weex_id_1578,R.id.weex_id_1577,R.id.weex_id_1576,R.id.weex_id_1575,R.id.weex_id_1574,R.id.weex_id_1573,R.id.weex_id_1572,R.id.weex_id_1571,R.id.weex_id_1570,R.id.weex_id_1569,R.id.weex_id_1568,R.id.weex_id_1567,R.id.weex_id_1566,R.id.weex_id_1565,R.id.weex_id_1564,R.id.weex_id_1563,R.id.weex_id_1562,R.id.weex_id_1561,R.id.weex_id_1560,R.id.weex_id_1559,R.id.weex_id_1558,R.id.weex_id_1557,R.id.weex_id_1556,R.id.weex_id_1555,R.id.weex_id_1554,R.id.weex_id_1553,R.id.weex_id_1552,R.id.weex_id_1551,R.id.weex_id_1550,R.id.weex_id_1549,R.id.weex_id_1548,R.id.weex_id_1547,R.id.weex_id_1546,R.id.weex_id_1545,R.id.weex_id_1544,R.id.weex_id_1543,R.id.weex_id_1542,R.id.weex_id_1541,R.id.weex_id_1540,R.id.weex_id_1539,R.id.weex_id_1538,R.id.weex_id_1537,R.id.weex_id_1536,R.id.weex_id_1535,R.id.weex_id_1534,R.id.weex_id_1533,R.id.weex_id_1532,R.id.weex_id_1531,R.id.weex_id_1530,R.id.weex_id_1529,R.id.weex_id_1528,R.id.weex_id_1527,R.id.weex_id_1526,R.id.weex_id_1525,R.id.weex_id_1524,R.id.weex_id_1523,R.id.weex_id_1522,R.id.weex_id_1521,R.id.weex_id_1520,R.id.weex_id_1519,R.id.weex_id_1518,R.id.weex_id_1517,R.id.weex_id_1516,R.id.weex_id_1515,R.id.weex_id_1514,R.id.weex_id_1513,R.id.weex_id_1512,R.id.weex_id_1511,R.id.weex_id_1510,R.id.weex_id_1509,R.id.weex_id_1508,R.id.weex_id_1507,R.id.weex_id_1506,R.id.weex_id_1505,R.id.weex_id_1504,R.id.weex_id_1503,R.id.weex_id_1502,R.id.weex_id_1501,R.id.weex_id_1500, - R.id.weex_id_1499,R.id.weex_id_1498,R.id.weex_id_1497,R.id.weex_id_1496,R.id.weex_id_1495,R.id.weex_id_1494,R.id.weex_id_1493,R.id.weex_id_1492,R.id.weex_id_1491,R.id.weex_id_1490,R.id.weex_id_1489,R.id.weex_id_1488,R.id.weex_id_1487,R.id.weex_id_1486,R.id.weex_id_1485,R.id.weex_id_1484,R.id.weex_id_1483,R.id.weex_id_1482,R.id.weex_id_1481,R.id.weex_id_1480,R.id.weex_id_1479,R.id.weex_id_1478,R.id.weex_id_1477,R.id.weex_id_1476,R.id.weex_id_1475,R.id.weex_id_1474,R.id.weex_id_1473,R.id.weex_id_1472,R.id.weex_id_1471,R.id.weex_id_1470,R.id.weex_id_1469,R.id.weex_id_1468,R.id.weex_id_1467,R.id.weex_id_1466,R.id.weex_id_1465,R.id.weex_id_1464,R.id.weex_id_1463,R.id.weex_id_1462,R.id.weex_id_1461,R.id.weex_id_1460,R.id.weex_id_1459,R.id.weex_id_1458,R.id.weex_id_1457,R.id.weex_id_1456,R.id.weex_id_1455,R.id.weex_id_1454,R.id.weex_id_1453,R.id.weex_id_1452,R.id.weex_id_1451,R.id.weex_id_1450,R.id.weex_id_1449,R.id.weex_id_1448,R.id.weex_id_1447,R.id.weex_id_1446,R.id.weex_id_1445,R.id.weex_id_1444,R.id.weex_id_1443,R.id.weex_id_1442,R.id.weex_id_1441,R.id.weex_id_1440,R.id.weex_id_1439,R.id.weex_id_1438,R.id.weex_id_1437,R.id.weex_id_1436,R.id.weex_id_1435,R.id.weex_id_1434,R.id.weex_id_1433,R.id.weex_id_1432,R.id.weex_id_1431,R.id.weex_id_1430,R.id.weex_id_1429,R.id.weex_id_1428,R.id.weex_id_1427,R.id.weex_id_1426,R.id.weex_id_1425,R.id.weex_id_1424,R.id.weex_id_1423,R.id.weex_id_1422,R.id.weex_id_1421,R.id.weex_id_1420,R.id.weex_id_1419,R.id.weex_id_1418,R.id.weex_id_1417,R.id.weex_id_1416,R.id.weex_id_1415,R.id.weex_id_1414,R.id.weex_id_1413,R.id.weex_id_1412,R.id.weex_id_1411,R.id.weex_id_1410,R.id.weex_id_1409,R.id.weex_id_1408,R.id.weex_id_1407,R.id.weex_id_1406,R.id.weex_id_1405,R.id.weex_id_1404,R.id.weex_id_1403,R.id.weex_id_1402,R.id.weex_id_1401,R.id.weex_id_1400, - R.id.weex_id_1399,R.id.weex_id_1398,R.id.weex_id_1397,R.id.weex_id_1396,R.id.weex_id_1395,R.id.weex_id_1394,R.id.weex_id_1393,R.id.weex_id_1392,R.id.weex_id_1391,R.id.weex_id_1390,R.id.weex_id_1389,R.id.weex_id_1388,R.id.weex_id_1387,R.id.weex_id_1386,R.id.weex_id_1385,R.id.weex_id_1384,R.id.weex_id_1383,R.id.weex_id_1382,R.id.weex_id_1381,R.id.weex_id_1380,R.id.weex_id_1379,R.id.weex_id_1378,R.id.weex_id_1377,R.id.weex_id_1376,R.id.weex_id_1375,R.id.weex_id_1374,R.id.weex_id_1373,R.id.weex_id_1372,R.id.weex_id_1371,R.id.weex_id_1370,R.id.weex_id_1369,R.id.weex_id_1368,R.id.weex_id_1367,R.id.weex_id_1366,R.id.weex_id_1365,R.id.weex_id_1364,R.id.weex_id_1363,R.id.weex_id_1362,R.id.weex_id_1361,R.id.weex_id_1360,R.id.weex_id_1359,R.id.weex_id_1358,R.id.weex_id_1357,R.id.weex_id_1356,R.id.weex_id_1355,R.id.weex_id_1354,R.id.weex_id_1353,R.id.weex_id_1352,R.id.weex_id_1351,R.id.weex_id_1350,R.id.weex_id_1349,R.id.weex_id_1348,R.id.weex_id_1347,R.id.weex_id_1346,R.id.weex_id_1345,R.id.weex_id_1344,R.id.weex_id_1343,R.id.weex_id_1342,R.id.weex_id_1341,R.id.weex_id_1340,R.id.weex_id_1339,R.id.weex_id_1338,R.id.weex_id_1337,R.id.weex_id_1336,R.id.weex_id_1335,R.id.weex_id_1334,R.id.weex_id_1333,R.id.weex_id_1332,R.id.weex_id_1331,R.id.weex_id_1330,R.id.weex_id_1329,R.id.weex_id_1328,R.id.weex_id_1327,R.id.weex_id_1326,R.id.weex_id_1325,R.id.weex_id_1324,R.id.weex_id_1323,R.id.weex_id_1322,R.id.weex_id_1321,R.id.weex_id_1320,R.id.weex_id_1319,R.id.weex_id_1318,R.id.weex_id_1317,R.id.weex_id_1316,R.id.weex_id_1315,R.id.weex_id_1314,R.id.weex_id_1313,R.id.weex_id_1312,R.id.weex_id_1311,R.id.weex_id_1310,R.id.weex_id_1309,R.id.weex_id_1308,R.id.weex_id_1307,R.id.weex_id_1306,R.id.weex_id_1305,R.id.weex_id_1304,R.id.weex_id_1303,R.id.weex_id_1302,R.id.weex_id_1301,R.id.weex_id_1300, - R.id.weex_id_1299,R.id.weex_id_1298,R.id.weex_id_1297,R.id.weex_id_1296,R.id.weex_id_1295,R.id.weex_id_1294,R.id.weex_id_1293,R.id.weex_id_1292,R.id.weex_id_1291,R.id.weex_id_1290,R.id.weex_id_1289,R.id.weex_id_1288,R.id.weex_id_1287,R.id.weex_id_1286,R.id.weex_id_1285,R.id.weex_id_1284,R.id.weex_id_1283,R.id.weex_id_1282,R.id.weex_id_1281,R.id.weex_id_1280,R.id.weex_id_1279,R.id.weex_id_1278,R.id.weex_id_1277,R.id.weex_id_1276,R.id.weex_id_1275,R.id.weex_id_1274,R.id.weex_id_1273,R.id.weex_id_1272,R.id.weex_id_1271,R.id.weex_id_1270,R.id.weex_id_1269,R.id.weex_id_1268,R.id.weex_id_1267,R.id.weex_id_1266,R.id.weex_id_1265,R.id.weex_id_1264,R.id.weex_id_1263,R.id.weex_id_1262,R.id.weex_id_1261,R.id.weex_id_1260,R.id.weex_id_1259,R.id.weex_id_1258,R.id.weex_id_1257,R.id.weex_id_1256,R.id.weex_id_1255,R.id.weex_id_1254,R.id.weex_id_1253,R.id.weex_id_1252,R.id.weex_id_1251,R.id.weex_id_1250,R.id.weex_id_1249,R.id.weex_id_1248,R.id.weex_id_1247,R.id.weex_id_1246,R.id.weex_id_1245,R.id.weex_id_1244,R.id.weex_id_1243,R.id.weex_id_1242,R.id.weex_id_1241,R.id.weex_id_1240,R.id.weex_id_1239,R.id.weex_id_1238,R.id.weex_id_1237,R.id.weex_id_1236,R.id.weex_id_1235,R.id.weex_id_1234,R.id.weex_id_1233,R.id.weex_id_1232,R.id.weex_id_1231,R.id.weex_id_1230,R.id.weex_id_1229,R.id.weex_id_1228,R.id.weex_id_1227,R.id.weex_id_1226,R.id.weex_id_1225,R.id.weex_id_1224,R.id.weex_id_1223,R.id.weex_id_1222,R.id.weex_id_1221,R.id.weex_id_1220,R.id.weex_id_1219,R.id.weex_id_1218,R.id.weex_id_1217,R.id.weex_id_1216,R.id.weex_id_1215,R.id.weex_id_1214,R.id.weex_id_1213,R.id.weex_id_1212,R.id.weex_id_1211,R.id.weex_id_1210,R.id.weex_id_1209,R.id.weex_id_1208,R.id.weex_id_1207,R.id.weex_id_1206,R.id.weex_id_1205,R.id.weex_id_1204,R.id.weex_id_1203,R.id.weex_id_1202,R.id.weex_id_1201,R.id.weex_id_1200, - R.id.weex_id_1199,R.id.weex_id_1198,R.id.weex_id_1197,R.id.weex_id_1196,R.id.weex_id_1195,R.id.weex_id_1194,R.id.weex_id_1193,R.id.weex_id_1192,R.id.weex_id_1191,R.id.weex_id_1190,R.id.weex_id_1189,R.id.weex_id_1188,R.id.weex_id_1187,R.id.weex_id_1186,R.id.weex_id_1185,R.id.weex_id_1184,R.id.weex_id_1183,R.id.weex_id_1182,R.id.weex_id_1181,R.id.weex_id_1180,R.id.weex_id_1179,R.id.weex_id_1178,R.id.weex_id_1177,R.id.weex_id_1176,R.id.weex_id_1175,R.id.weex_id_1174,R.id.weex_id_1173,R.id.weex_id_1172,R.id.weex_id_1171,R.id.weex_id_1170,R.id.weex_id_1169,R.id.weex_id_1168,R.id.weex_id_1167,R.id.weex_id_1166,R.id.weex_id_1165,R.id.weex_id_1164,R.id.weex_id_1163,R.id.weex_id_1162,R.id.weex_id_1161,R.id.weex_id_1160,R.id.weex_id_1159,R.id.weex_id_1158,R.id.weex_id_1157,R.id.weex_id_1156,R.id.weex_id_1155,R.id.weex_id_1154,R.id.weex_id_1153,R.id.weex_id_1152,R.id.weex_id_1151,R.id.weex_id_1150,R.id.weex_id_1149,R.id.weex_id_1148,R.id.weex_id_1147,R.id.weex_id_1146,R.id.weex_id_1145,R.id.weex_id_1144,R.id.weex_id_1143,R.id.weex_id_1142,R.id.weex_id_1141,R.id.weex_id_1140,R.id.weex_id_1139,R.id.weex_id_1138,R.id.weex_id_1137,R.id.weex_id_1136,R.id.weex_id_1135,R.id.weex_id_1134,R.id.weex_id_1133,R.id.weex_id_1132,R.id.weex_id_1131,R.id.weex_id_1130,R.id.weex_id_1129,R.id.weex_id_1128,R.id.weex_id_1127,R.id.weex_id_1126,R.id.weex_id_1125,R.id.weex_id_1124,R.id.weex_id_1123,R.id.weex_id_1122,R.id.weex_id_1121,R.id.weex_id_1120,R.id.weex_id_1119,R.id.weex_id_1118,R.id.weex_id_1117,R.id.weex_id_1116,R.id.weex_id_1115,R.id.weex_id_1114,R.id.weex_id_1113,R.id.weex_id_1112,R.id.weex_id_1111,R.id.weex_id_1110,R.id.weex_id_1109,R.id.weex_id_1108,R.id.weex_id_1107,R.id.weex_id_1106,R.id.weex_id_1105,R.id.weex_id_1104,R.id.weex_id_1103,R.id.weex_id_1102,R.id.weex_id_1101,R.id.weex_id_1100, - R.id.weex_id_1099,R.id.weex_id_1098,R.id.weex_id_1097,R.id.weex_id_1096,R.id.weex_id_1095,R.id.weex_id_1094,R.id.weex_id_1093,R.id.weex_id_1092,R.id.weex_id_1091,R.id.weex_id_1090,R.id.weex_id_1089,R.id.weex_id_1088,R.id.weex_id_1087,R.id.weex_id_1086,R.id.weex_id_1085,R.id.weex_id_1084,R.id.weex_id_1083,R.id.weex_id_1082,R.id.weex_id_1081,R.id.weex_id_1080,R.id.weex_id_1079,R.id.weex_id_1078,R.id.weex_id_1077,R.id.weex_id_1076,R.id.weex_id_1075,R.id.weex_id_1074,R.id.weex_id_1073,R.id.weex_id_1072,R.id.weex_id_1071,R.id.weex_id_1070,R.id.weex_id_1069,R.id.weex_id_1068,R.id.weex_id_1067,R.id.weex_id_1066,R.id.weex_id_1065,R.id.weex_id_1064,R.id.weex_id_1063,R.id.weex_id_1062,R.id.weex_id_1061,R.id.weex_id_1060,R.id.weex_id_1059,R.id.weex_id_1058,R.id.weex_id_1057,R.id.weex_id_1056,R.id.weex_id_1055,R.id.weex_id_1054,R.id.weex_id_1053,R.id.weex_id_1052,R.id.weex_id_1051,R.id.weex_id_1050,R.id.weex_id_1049,R.id.weex_id_1048,R.id.weex_id_1047,R.id.weex_id_1046,R.id.weex_id_1045,R.id.weex_id_1044,R.id.weex_id_1043,R.id.weex_id_1042,R.id.weex_id_1041,R.id.weex_id_1040,R.id.weex_id_1039,R.id.weex_id_1038,R.id.weex_id_1037,R.id.weex_id_1036,R.id.weex_id_1035,R.id.weex_id_1034,R.id.weex_id_1033,R.id.weex_id_1032,R.id.weex_id_1031,R.id.weex_id_1030,R.id.weex_id_1029,R.id.weex_id_1028,R.id.weex_id_1027,R.id.weex_id_1026,R.id.weex_id_1025,R.id.weex_id_1024,R.id.weex_id_1023,R.id.weex_id_1022,R.id.weex_id_1021,R.id.weex_id_1020,R.id.weex_id_1019,R.id.weex_id_1018,R.id.weex_id_1017,R.id.weex_id_1016,R.id.weex_id_1015,R.id.weex_id_1014,R.id.weex_id_1013,R.id.weex_id_1012,R.id.weex_id_1011,R.id.weex_id_1010,R.id.weex_id_1009,R.id.weex_id_1008,R.id.weex_id_1007,R.id.weex_id_1006,R.id.weex_id_1005,R.id.weex_id_1004,R.id.weex_id_1003,R.id.weex_id_1002,R.id.weex_id_1001,R.id.weex_id_1000, - R.id.weex_id_999,R.id.weex_id_998,R.id.weex_id_997,R.id.weex_id_996,R.id.weex_id_995,R.id.weex_id_994,R.id.weex_id_993,R.id.weex_id_992,R.id.weex_id_991,R.id.weex_id_990,R.id.weex_id_989,R.id.weex_id_988,R.id.weex_id_987,R.id.weex_id_986,R.id.weex_id_985,R.id.weex_id_984,R.id.weex_id_983,R.id.weex_id_982,R.id.weex_id_981,R.id.weex_id_980,R.id.weex_id_979,R.id.weex_id_978,R.id.weex_id_977,R.id.weex_id_976,R.id.weex_id_975,R.id.weex_id_974,R.id.weex_id_973,R.id.weex_id_972,R.id.weex_id_971,R.id.weex_id_970,R.id.weex_id_969,R.id.weex_id_968,R.id.weex_id_967,R.id.weex_id_966,R.id.weex_id_965,R.id.weex_id_964,R.id.weex_id_963,R.id.weex_id_962,R.id.weex_id_961,R.id.weex_id_960,R.id.weex_id_959,R.id.weex_id_958,R.id.weex_id_957,R.id.weex_id_956,R.id.weex_id_955,R.id.weex_id_954,R.id.weex_id_953,R.id.weex_id_952,R.id.weex_id_951,R.id.weex_id_950,R.id.weex_id_949,R.id.weex_id_948,R.id.weex_id_947,R.id.weex_id_946,R.id.weex_id_945,R.id.weex_id_944,R.id.weex_id_943,R.id.weex_id_942,R.id.weex_id_941,R.id.weex_id_940,R.id.weex_id_939,R.id.weex_id_938,R.id.weex_id_937,R.id.weex_id_936,R.id.weex_id_935,R.id.weex_id_934,R.id.weex_id_933,R.id.weex_id_932,R.id.weex_id_931,R.id.weex_id_930,R.id.weex_id_929,R.id.weex_id_928,R.id.weex_id_927,R.id.weex_id_926,R.id.weex_id_925,R.id.weex_id_924,R.id.weex_id_923,R.id.weex_id_922,R.id.weex_id_921,R.id.weex_id_920,R.id.weex_id_919,R.id.weex_id_918,R.id.weex_id_917,R.id.weex_id_916,R.id.weex_id_915,R.id.weex_id_914,R.id.weex_id_913,R.id.weex_id_912,R.id.weex_id_911,R.id.weex_id_910,R.id.weex_id_909,R.id.weex_id_908,R.id.weex_id_907,R.id.weex_id_906,R.id.weex_id_905,R.id.weex_id_904,R.id.weex_id_903,R.id.weex_id_902,R.id.weex_id_901,R.id.weex_id_900, - R.id.weex_id_899,R.id.weex_id_898,R.id.weex_id_897,R.id.weex_id_896,R.id.weex_id_895,R.id.weex_id_894,R.id.weex_id_893,R.id.weex_id_892,R.id.weex_id_891,R.id.weex_id_890,R.id.weex_id_889,R.id.weex_id_888,R.id.weex_id_887,R.id.weex_id_886,R.id.weex_id_885,R.id.weex_id_884,R.id.weex_id_883,R.id.weex_id_882,R.id.weex_id_881,R.id.weex_id_880,R.id.weex_id_879,R.id.weex_id_878,R.id.weex_id_877,R.id.weex_id_876,R.id.weex_id_875,R.id.weex_id_874,R.id.weex_id_873,R.id.weex_id_872,R.id.weex_id_871,R.id.weex_id_870,R.id.weex_id_869,R.id.weex_id_868,R.id.weex_id_867,R.id.weex_id_866,R.id.weex_id_865,R.id.weex_id_864,R.id.weex_id_863,R.id.weex_id_862,R.id.weex_id_861,R.id.weex_id_860,R.id.weex_id_859,R.id.weex_id_858,R.id.weex_id_857,R.id.weex_id_856,R.id.weex_id_855,R.id.weex_id_854,R.id.weex_id_853,R.id.weex_id_852,R.id.weex_id_851,R.id.weex_id_850,R.id.weex_id_849,R.id.weex_id_848,R.id.weex_id_847,R.id.weex_id_846,R.id.weex_id_845,R.id.weex_id_844,R.id.weex_id_843,R.id.weex_id_842,R.id.weex_id_841,R.id.weex_id_840,R.id.weex_id_839,R.id.weex_id_838,R.id.weex_id_837,R.id.weex_id_836,R.id.weex_id_835,R.id.weex_id_834,R.id.weex_id_833,R.id.weex_id_832,R.id.weex_id_831,R.id.weex_id_830,R.id.weex_id_829,R.id.weex_id_828,R.id.weex_id_827,R.id.weex_id_826,R.id.weex_id_825,R.id.weex_id_824,R.id.weex_id_823,R.id.weex_id_822,R.id.weex_id_821,R.id.weex_id_820,R.id.weex_id_819,R.id.weex_id_818,R.id.weex_id_817,R.id.weex_id_816,R.id.weex_id_815,R.id.weex_id_814,R.id.weex_id_813,R.id.weex_id_812,R.id.weex_id_811,R.id.weex_id_810,R.id.weex_id_809,R.id.weex_id_808,R.id.weex_id_807,R.id.weex_id_806,R.id.weex_id_805,R.id.weex_id_804,R.id.weex_id_803,R.id.weex_id_802,R.id.weex_id_801,R.id.weex_id_800, - R.id.weex_id_799,R.id.weex_id_798,R.id.weex_id_797,R.id.weex_id_796,R.id.weex_id_795,R.id.weex_id_794,R.id.weex_id_793,R.id.weex_id_792,R.id.weex_id_791,R.id.weex_id_790,R.id.weex_id_789,R.id.weex_id_788,R.id.weex_id_787,R.id.weex_id_786,R.id.weex_id_785,R.id.weex_id_784,R.id.weex_id_783,R.id.weex_id_782,R.id.weex_id_781,R.id.weex_id_780,R.id.weex_id_779,R.id.weex_id_778,R.id.weex_id_777,R.id.weex_id_776,R.id.weex_id_775,R.id.weex_id_774,R.id.weex_id_773,R.id.weex_id_772,R.id.weex_id_771,R.id.weex_id_770,R.id.weex_id_769,R.id.weex_id_768,R.id.weex_id_767,R.id.weex_id_766,R.id.weex_id_765,R.id.weex_id_764,R.id.weex_id_763,R.id.weex_id_762,R.id.weex_id_761,R.id.weex_id_760,R.id.weex_id_759,R.id.weex_id_758,R.id.weex_id_757,R.id.weex_id_756,R.id.weex_id_755,R.id.weex_id_754,R.id.weex_id_753,R.id.weex_id_752,R.id.weex_id_751,R.id.weex_id_750,R.id.weex_id_749,R.id.weex_id_748,R.id.weex_id_747,R.id.weex_id_746,R.id.weex_id_745,R.id.weex_id_744,R.id.weex_id_743,R.id.weex_id_742,R.id.weex_id_741,R.id.weex_id_740,R.id.weex_id_739,R.id.weex_id_738,R.id.weex_id_737,R.id.weex_id_736,R.id.weex_id_735,R.id.weex_id_734,R.id.weex_id_733,R.id.weex_id_732,R.id.weex_id_731,R.id.weex_id_730,R.id.weex_id_729,R.id.weex_id_728,R.id.weex_id_727,R.id.weex_id_726,R.id.weex_id_725,R.id.weex_id_724,R.id.weex_id_723,R.id.weex_id_722,R.id.weex_id_721,R.id.weex_id_720,R.id.weex_id_719,R.id.weex_id_718,R.id.weex_id_717,R.id.weex_id_716,R.id.weex_id_715,R.id.weex_id_714,R.id.weex_id_713,R.id.weex_id_712,R.id.weex_id_711,R.id.weex_id_710,R.id.weex_id_709,R.id.weex_id_708,R.id.weex_id_707,R.id.weex_id_706,R.id.weex_id_705,R.id.weex_id_704,R.id.weex_id_703,R.id.weex_id_702,R.id.weex_id_701,R.id.weex_id_700, - R.id.weex_id_699,R.id.weex_id_698,R.id.weex_id_697,R.id.weex_id_696,R.id.weex_id_695,R.id.weex_id_694,R.id.weex_id_693,R.id.weex_id_692,R.id.weex_id_691,R.id.weex_id_690,R.id.weex_id_689,R.id.weex_id_688,R.id.weex_id_687,R.id.weex_id_686,R.id.weex_id_685,R.id.weex_id_684,R.id.weex_id_683,R.id.weex_id_682,R.id.weex_id_681,R.id.weex_id_680,R.id.weex_id_679,R.id.weex_id_678,R.id.weex_id_677,R.id.weex_id_676,R.id.weex_id_675,R.id.weex_id_674,R.id.weex_id_673,R.id.weex_id_672,R.id.weex_id_671,R.id.weex_id_670,R.id.weex_id_669,R.id.weex_id_668,R.id.weex_id_667,R.id.weex_id_666,R.id.weex_id_665,R.id.weex_id_664,R.id.weex_id_663,R.id.weex_id_662,R.id.weex_id_661,R.id.weex_id_660,R.id.weex_id_659,R.id.weex_id_658,R.id.weex_id_657,R.id.weex_id_656,R.id.weex_id_655,R.id.weex_id_654,R.id.weex_id_653,R.id.weex_id_652,R.id.weex_id_651,R.id.weex_id_650,R.id.weex_id_649,R.id.weex_id_648,R.id.weex_id_647,R.id.weex_id_646,R.id.weex_id_645,R.id.weex_id_644,R.id.weex_id_643,R.id.weex_id_642,R.id.weex_id_641,R.id.weex_id_640,R.id.weex_id_639,R.id.weex_id_638,R.id.weex_id_637,R.id.weex_id_636,R.id.weex_id_635,R.id.weex_id_634,R.id.weex_id_633,R.id.weex_id_632,R.id.weex_id_631,R.id.weex_id_630,R.id.weex_id_629,R.id.weex_id_628,R.id.weex_id_627,R.id.weex_id_626,R.id.weex_id_625,R.id.weex_id_624,R.id.weex_id_623,R.id.weex_id_622,R.id.weex_id_621,R.id.weex_id_620,R.id.weex_id_619,R.id.weex_id_618,R.id.weex_id_617,R.id.weex_id_616,R.id.weex_id_615,R.id.weex_id_614,R.id.weex_id_613,R.id.weex_id_612,R.id.weex_id_611,R.id.weex_id_610,R.id.weex_id_609,R.id.weex_id_608,R.id.weex_id_607,R.id.weex_id_606,R.id.weex_id_605,R.id.weex_id_604,R.id.weex_id_603,R.id.weex_id_602,R.id.weex_id_601,R.id.weex_id_600, - R.id.weex_id_599,R.id.weex_id_598,R.id.weex_id_597,R.id.weex_id_596,R.id.weex_id_595,R.id.weex_id_594,R.id.weex_id_593,R.id.weex_id_592,R.id.weex_id_591,R.id.weex_id_590,R.id.weex_id_589,R.id.weex_id_588,R.id.weex_id_587,R.id.weex_id_586,R.id.weex_id_585,R.id.weex_id_584,R.id.weex_id_583,R.id.weex_id_582,R.id.weex_id_581,R.id.weex_id_580,R.id.weex_id_579,R.id.weex_id_578,R.id.weex_id_577,R.id.weex_id_576,R.id.weex_id_575,R.id.weex_id_574,R.id.weex_id_573,R.id.weex_id_572,R.id.weex_id_571,R.id.weex_id_570,R.id.weex_id_569,R.id.weex_id_568,R.id.weex_id_567,R.id.weex_id_566,R.id.weex_id_565,R.id.weex_id_564,R.id.weex_id_563,R.id.weex_id_562,R.id.weex_id_561,R.id.weex_id_560,R.id.weex_id_559,R.id.weex_id_558,R.id.weex_id_557,R.id.weex_id_556,R.id.weex_id_555,R.id.weex_id_554,R.id.weex_id_553,R.id.weex_id_552,R.id.weex_id_551,R.id.weex_id_550,R.id.weex_id_549,R.id.weex_id_548,R.id.weex_id_547,R.id.weex_id_546,R.id.weex_id_545,R.id.weex_id_544,R.id.weex_id_543,R.id.weex_id_542,R.id.weex_id_541,R.id.weex_id_540,R.id.weex_id_539,R.id.weex_id_538,R.id.weex_id_537,R.id.weex_id_536,R.id.weex_id_535,R.id.weex_id_534,R.id.weex_id_533,R.id.weex_id_532,R.id.weex_id_531,R.id.weex_id_530,R.id.weex_id_529,R.id.weex_id_528,R.id.weex_id_527,R.id.weex_id_526,R.id.weex_id_525,R.id.weex_id_524,R.id.weex_id_523,R.id.weex_id_522,R.id.weex_id_521,R.id.weex_id_520,R.id.weex_id_519,R.id.weex_id_518,R.id.weex_id_517,R.id.weex_id_516,R.id.weex_id_515,R.id.weex_id_514,R.id.weex_id_513,R.id.weex_id_512,R.id.weex_id_511,R.id.weex_id_510,R.id.weex_id_509,R.id.weex_id_508,R.id.weex_id_507,R.id.weex_id_506,R.id.weex_id_505,R.id.weex_id_504,R.id.weex_id_503,R.id.weex_id_502,R.id.weex_id_501,R.id.weex_id_500, - R.id.weex_id_499,R.id.weex_id_498,R.id.weex_id_497,R.id.weex_id_496,R.id.weex_id_495,R.id.weex_id_494,R.id.weex_id_493,R.id.weex_id_492,R.id.weex_id_491,R.id.weex_id_490,R.id.weex_id_489,R.id.weex_id_488,R.id.weex_id_487,R.id.weex_id_486,R.id.weex_id_485,R.id.weex_id_484,R.id.weex_id_483,R.id.weex_id_482,R.id.weex_id_481,R.id.weex_id_480,R.id.weex_id_479,R.id.weex_id_478,R.id.weex_id_477,R.id.weex_id_476,R.id.weex_id_475,R.id.weex_id_474,R.id.weex_id_473,R.id.weex_id_472,R.id.weex_id_471,R.id.weex_id_470,R.id.weex_id_469,R.id.weex_id_468,R.id.weex_id_467,R.id.weex_id_466,R.id.weex_id_465,R.id.weex_id_464,R.id.weex_id_463,R.id.weex_id_462,R.id.weex_id_461,R.id.weex_id_460,R.id.weex_id_459,R.id.weex_id_458,R.id.weex_id_457,R.id.weex_id_456,R.id.weex_id_455,R.id.weex_id_454,R.id.weex_id_453,R.id.weex_id_452,R.id.weex_id_451,R.id.weex_id_450,R.id.weex_id_449,R.id.weex_id_448,R.id.weex_id_447,R.id.weex_id_446,R.id.weex_id_445,R.id.weex_id_444,R.id.weex_id_443,R.id.weex_id_442,R.id.weex_id_441,R.id.weex_id_440,R.id.weex_id_439,R.id.weex_id_438,R.id.weex_id_437,R.id.weex_id_436,R.id.weex_id_435,R.id.weex_id_434,R.id.weex_id_433,R.id.weex_id_432,R.id.weex_id_431,R.id.weex_id_430,R.id.weex_id_429,R.id.weex_id_428,R.id.weex_id_427,R.id.weex_id_426,R.id.weex_id_425,R.id.weex_id_424,R.id.weex_id_423,R.id.weex_id_422,R.id.weex_id_421,R.id.weex_id_420,R.id.weex_id_419,R.id.weex_id_418,R.id.weex_id_417,R.id.weex_id_416,R.id.weex_id_415,R.id.weex_id_414,R.id.weex_id_413,R.id.weex_id_412,R.id.weex_id_411,R.id.weex_id_410,R.id.weex_id_409,R.id.weex_id_408,R.id.weex_id_407,R.id.weex_id_406,R.id.weex_id_405,R.id.weex_id_404,R.id.weex_id_403,R.id.weex_id_402,R.id.weex_id_401,R.id.weex_id_400, - R.id.weex_id_399,R.id.weex_id_398,R.id.weex_id_397,R.id.weex_id_396,R.id.weex_id_395,R.id.weex_id_394,R.id.weex_id_393,R.id.weex_id_392,R.id.weex_id_391,R.id.weex_id_390,R.id.weex_id_389,R.id.weex_id_388,R.id.weex_id_387,R.id.weex_id_386,R.id.weex_id_385,R.id.weex_id_384,R.id.weex_id_383,R.id.weex_id_382,R.id.weex_id_381,R.id.weex_id_380,R.id.weex_id_379,R.id.weex_id_378,R.id.weex_id_377,R.id.weex_id_376,R.id.weex_id_375,R.id.weex_id_374,R.id.weex_id_373,R.id.weex_id_372,R.id.weex_id_371,R.id.weex_id_370,R.id.weex_id_369,R.id.weex_id_368,R.id.weex_id_367,R.id.weex_id_366,R.id.weex_id_365,R.id.weex_id_364,R.id.weex_id_363,R.id.weex_id_362,R.id.weex_id_361,R.id.weex_id_360,R.id.weex_id_359,R.id.weex_id_358,R.id.weex_id_357,R.id.weex_id_356,R.id.weex_id_355,R.id.weex_id_354,R.id.weex_id_353,R.id.weex_id_352,R.id.weex_id_351,R.id.weex_id_350,R.id.weex_id_349,R.id.weex_id_348,R.id.weex_id_347,R.id.weex_id_346,R.id.weex_id_345,R.id.weex_id_344,R.id.weex_id_343,R.id.weex_id_342,R.id.weex_id_341,R.id.weex_id_340,R.id.weex_id_339,R.id.weex_id_338,R.id.weex_id_337,R.id.weex_id_336,R.id.weex_id_335,R.id.weex_id_334,R.id.weex_id_333,R.id.weex_id_332,R.id.weex_id_331,R.id.weex_id_330,R.id.weex_id_329,R.id.weex_id_328,R.id.weex_id_327,R.id.weex_id_326,R.id.weex_id_325,R.id.weex_id_324,R.id.weex_id_323,R.id.weex_id_322,R.id.weex_id_321,R.id.weex_id_320,R.id.weex_id_319,R.id.weex_id_318,R.id.weex_id_317,R.id.weex_id_316,R.id.weex_id_315,R.id.weex_id_314,R.id.weex_id_313,R.id.weex_id_312,R.id.weex_id_311,R.id.weex_id_310,R.id.weex_id_309,R.id.weex_id_308,R.id.weex_id_307,R.id.weex_id_306,R.id.weex_id_305,R.id.weex_id_304,R.id.weex_id_303,R.id.weex_id_302,R.id.weex_id_301,R.id.weex_id_300, - R.id.weex_id_299,R.id.weex_id_298,R.id.weex_id_297,R.id.weex_id_296,R.id.weex_id_295,R.id.weex_id_294,R.id.weex_id_293,R.id.weex_id_292,R.id.weex_id_291,R.id.weex_id_290,R.id.weex_id_289,R.id.weex_id_288,R.id.weex_id_287,R.id.weex_id_286,R.id.weex_id_285,R.id.weex_id_284,R.id.weex_id_283,R.id.weex_id_282,R.id.weex_id_281,R.id.weex_id_280,R.id.weex_id_279,R.id.weex_id_278,R.id.weex_id_277,R.id.weex_id_276,R.id.weex_id_275,R.id.weex_id_274,R.id.weex_id_273,R.id.weex_id_272,R.id.weex_id_271,R.id.weex_id_270,R.id.weex_id_269,R.id.weex_id_268,R.id.weex_id_267,R.id.weex_id_266,R.id.weex_id_265,R.id.weex_id_264,R.id.weex_id_263,R.id.weex_id_262,R.id.weex_id_261,R.id.weex_id_260,R.id.weex_id_259,R.id.weex_id_258,R.id.weex_id_257,R.id.weex_id_256,R.id.weex_id_255,R.id.weex_id_254,R.id.weex_id_253,R.id.weex_id_252,R.id.weex_id_251,R.id.weex_id_250,R.id.weex_id_249,R.id.weex_id_248,R.id.weex_id_247,R.id.weex_id_246,R.id.weex_id_245,R.id.weex_id_244,R.id.weex_id_243,R.id.weex_id_242,R.id.weex_id_241,R.id.weex_id_240,R.id.weex_id_239,R.id.weex_id_238,R.id.weex_id_237,R.id.weex_id_236,R.id.weex_id_235,R.id.weex_id_234,R.id.weex_id_233,R.id.weex_id_232,R.id.weex_id_231,R.id.weex_id_230,R.id.weex_id_229,R.id.weex_id_228,R.id.weex_id_227,R.id.weex_id_226,R.id.weex_id_225,R.id.weex_id_224,R.id.weex_id_223,R.id.weex_id_222,R.id.weex_id_221,R.id.weex_id_220,R.id.weex_id_219,R.id.weex_id_218,R.id.weex_id_217,R.id.weex_id_216,R.id.weex_id_215,R.id.weex_id_214,R.id.weex_id_213,R.id.weex_id_212,R.id.weex_id_211,R.id.weex_id_210,R.id.weex_id_209,R.id.weex_id_208,R.id.weex_id_207,R.id.weex_id_206,R.id.weex_id_205,R.id.weex_id_204,R.id.weex_id_203,R.id.weex_id_202,R.id.weex_id_201,R.id.weex_id_200, - R.id.weex_id_199,R.id.weex_id_198,R.id.weex_id_197,R.id.weex_id_196,R.id.weex_id_195,R.id.weex_id_194,R.id.weex_id_193,R.id.weex_id_192,R.id.weex_id_191,R.id.weex_id_190,R.id.weex_id_189,R.id.weex_id_188,R.id.weex_id_187,R.id.weex_id_186,R.id.weex_id_185,R.id.weex_id_184,R.id.weex_id_183,R.id.weex_id_182,R.id.weex_id_181,R.id.weex_id_180,R.id.weex_id_179,R.id.weex_id_178,R.id.weex_id_177,R.id.weex_id_176,R.id.weex_id_175,R.id.weex_id_174,R.id.weex_id_173,R.id.weex_id_172,R.id.weex_id_171,R.id.weex_id_170,R.id.weex_id_169,R.id.weex_id_168,R.id.weex_id_167,R.id.weex_id_166,R.id.weex_id_165,R.id.weex_id_164,R.id.weex_id_163,R.id.weex_id_162,R.id.weex_id_161,R.id.weex_id_160,R.id.weex_id_159,R.id.weex_id_158,R.id.weex_id_157,R.id.weex_id_156,R.id.weex_id_155,R.id.weex_id_154,R.id.weex_id_153,R.id.weex_id_152,R.id.weex_id_151,R.id.weex_id_150,R.id.weex_id_149,R.id.weex_id_148,R.id.weex_id_147,R.id.weex_id_146,R.id.weex_id_145,R.id.weex_id_144,R.id.weex_id_143,R.id.weex_id_142,R.id.weex_id_141,R.id.weex_id_140,R.id.weex_id_139,R.id.weex_id_138,R.id.weex_id_137,R.id.weex_id_136,R.id.weex_id_135,R.id.weex_id_134,R.id.weex_id_133,R.id.weex_id_132,R.id.weex_id_131,R.id.weex_id_130,R.id.weex_id_129,R.id.weex_id_128,R.id.weex_id_127,R.id.weex_id_126,R.id.weex_id_125,R.id.weex_id_124,R.id.weex_id_123,R.id.weex_id_122,R.id.weex_id_121,R.id.weex_id_120,R.id.weex_id_119,R.id.weex_id_118,R.id.weex_id_117,R.id.weex_id_116,R.id.weex_id_115,R.id.weex_id_114,R.id.weex_id_113,R.id.weex_id_112,R.id.weex_id_111,R.id.weex_id_110,R.id.weex_id_109,R.id.weex_id_108,R.id.weex_id_107,R.id.weex_id_106,R.id.weex_id_105,R.id.weex_id_104,R.id.weex_id_103,R.id.weex_id_102,R.id.weex_id_101,R.id.weex_id_100, - R.id.weex_id_99,R.id.weex_id_98,R.id.weex_id_97,R.id.weex_id_96,R.id.weex_id_95,R.id.weex_id_94,R.id.weex_id_93,R.id.weex_id_92,R.id.weex_id_91,R.id.weex_id_90,R.id.weex_id_89,R.id.weex_id_88,R.id.weex_id_87,R.id.weex_id_86,R.id.weex_id_85,R.id.weex_id_84,R.id.weex_id_83,R.id.weex_id_82,R.id.weex_id_81,R.id.weex_id_80,R.id.weex_id_79,R.id.weex_id_78,R.id.weex_id_77,R.id.weex_id_76,R.id.weex_id_75,R.id.weex_id_74,R.id.weex_id_73,R.id.weex_id_72,R.id.weex_id_71,R.id.weex_id_70,R.id.weex_id_69,R.id.weex_id_68,R.id.weex_id_67,R.id.weex_id_66,R.id.weex_id_65,R.id.weex_id_64,R.id.weex_id_63,R.id.weex_id_62,R.id.weex_id_61,R.id.weex_id_60,R.id.weex_id_59,R.id.weex_id_58,R.id.weex_id_57,R.id.weex_id_56,R.id.weex_id_55,R.id.weex_id_54,R.id.weex_id_53,R.id.weex_id_52,R.id.weex_id_51,R.id.weex_id_50,R.id.weex_id_49,R.id.weex_id_48,R.id.weex_id_47,R.id.weex_id_46,R.id.weex_id_45,R.id.weex_id_44,R.id.weex_id_43,R.id.weex_id_42,R.id.weex_id_41,R.id.weex_id_40,R.id.weex_id_39,R.id.weex_id_38,R.id.weex_id_37,R.id.weex_id_36,R.id.weex_id_35,R.id.weex_id_34,R.id.weex_id_33,R.id.weex_id_32,R.id.weex_id_31,R.id.weex_id_30,R.id.weex_id_29,R.id.weex_id_28,R.id.weex_id_27,R.id.weex_id_26,R.id.weex_id_25,R.id.weex_id_24,R.id.weex_id_23,R.id.weex_id_22,R.id.weex_id_21,R.id.weex_id_20,R.id.weex_id_19,R.id.weex_id_18,R.id.weex_id_17,R.id.weex_id_16,R.id.weex_id_15,R.id.weex_id_14,R.id.weex_id_13,R.id.weex_id_12,R.id.weex_id_11,R.id.weex_id_10,R.id.weex_id_9,R.id.weex_id_8,R.id.weex_id_7,R.id.weex_id_6,R.id.weex_id_5,R.id.weex_id_4,R.id.weex_id_3,R.id.weex_id_2,R.id.weex_id_1,R.id.weex_id_0 - }; - - private static final int COUNT = ID_STUBS.length; - private static int sCurrentIDIndex = 0; - - public static Pair nextID(){ - Pair result = new Pair<>("weex_id_"+(COUNT-1-sCurrentIDIndex),ID_STUBS[sCurrentIDIndex]); - sCurrentIDIndex = (sCurrentIDIndex+1)%COUNT; - return result; - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java b/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java deleted file mode 100644 index b5f6b3d4d5..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/WXApplication.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.app.Activity; -import android.app.Application; -import android.os.Bundle; -import android.util.Log; -import android.support.multidex.MultiDex; -import android.text.TextUtils; -import com.alibaba.android.bindingx.plugin.weex.BindingX; -import com.alibaba.weex.commons.adapter.DefaultWebSocketAdapterFactory; -import com.alibaba.weex.commons.adapter.ImageAdapter; -import com.alibaba.weex.commons.adapter.JSExceptionAdapter; -import com.alibaba.weex.commons.adapter.PicassoBasedDrawableLoader; -import com.alibaba.weex.extend.adapter.ApmGenerator; -import com.alibaba.weex.extend.adapter.DefaultAccessibilityRoleAdapter; -import com.alibaba.weex.extend.adapter.DefaultConfigAdapter; -import com.alibaba.weex.extend.adapter.InterceptWXHttpAdapter; -import com.alibaba.weex.extend.adapter.WXAnalyzerDemoListener; -import com.alibaba.weex.extend.component.WXComponentSyncTest; -import com.alibaba.weex.extend.component.WXMask; -import com.alibaba.weex.extend.component.WXParallax; -import com.alibaba.weex.extend.module.GeolocationModule; -import com.alibaba.weex.extend.module.MyModule; -import com.alibaba.weex.extend.module.RenderModule; -import com.alibaba.weex.extend.module.SyncTestModule; -import com.alibaba.weex.extend.module.WXEventModule; -import com.alibaba.weex.extend.module.WXTitleBar; -import com.alibaba.weex.extend.module.WXWsonTestModule; -import com.facebook.drawee.backends.pipeline.Fresco; -import com.taobao.weex.InitConfig; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKEngine; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.bridge.WXBridgeManager; -import com.taobao.weex.common.WXException; -import com.taobao.weex.performance.WXAnalyzerDataTransfer; - -import java.lang.reflect.Method; - -public class WXApplication extends Application { - - @Override - public void onCreate() { - super.onCreate(); - MultiDex.install(this); - /** - * Set up for fresco usage. - * Set requestListeners = new HashSet<>(); - * requestListeners.add(new RequestLoggingListener()); - * ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this) - * .setRequestListeners(requestListeners) - * .build(); - * Fresco.initialize(this,config); - **/ -// initDebugEnvironment(true, false, "DEBUG_SERVER_HOST"); - WXBridgeManager.updateGlobalConfig("wson_on"); - WXEnvironment.setOpenDebugLog(true); - WXEnvironment.setApkDebugable(true); - WXSDKEngine.addCustomOptions("appName", "WXSample"); - WXSDKEngine.addCustomOptions("appGroup", "WXApp"); - InitConfig.Builder builder = new InitConfig.Builder() - //.setImgAdapter(new FrescoImageAdapter())// use fresco adapter - .setImgAdapter(new ImageAdapter()) - .setDrawableLoader(new PicassoBasedDrawableLoader(getApplicationContext())) - .setWebSocketAdapterFactory(new DefaultWebSocketAdapterFactory()) - .setJSExceptionAdapter(new JSExceptionAdapter()) - .setHttpAdapter(new InterceptWXHttpAdapter()) - .setApmGenerater(new ApmGenerator()); - if(!TextUtils.isEmpty(BuildConfig.externalLibraryName)){ - builder.addNativeLibrary(BuildConfig.externalLibraryName); - } - WXSDKManager.getInstance().setWxConfigAdapter(new DefaultConfigAdapter()); - WXSDKEngine.initialize(this, builder.build()); - WXSDKManager.getInstance().addWXAnalyzer(new WXAnalyzerDemoListener()); - WXAnalyzerDataTransfer.isOpenPerformance = false; - - WXSDKManager.getInstance().setAccessibilityRoleAdapter(new DefaultAccessibilityRoleAdapter()); - - try { - Fresco.initialize(this); - WXSDKEngine.registerComponent("synccomponent", WXComponentSyncTest.class); - WXSDKEngine.registerComponent(WXParallax.PARALLAX, WXParallax.class); - - WXSDKEngine.registerModule("render", RenderModule.class); - WXSDKEngine.registerModule("event", WXEventModule.class); - WXSDKEngine.registerModule("syncTest", SyncTestModule.class); - - WXSDKEngine.registerComponent("mask",WXMask.class); - WXSDKEngine.registerModule("myModule", MyModule.class); - WXSDKEngine.registerModule("geolocation", GeolocationModule.class); - - WXSDKEngine.registerModule("titleBar", WXTitleBar.class); - - WXSDKEngine.registerModule("wsonTest", WXWsonTestModule.class); - - BindingX.register(); - - /** - * override default image tag - * WXSDKEngine.registerComponent("image", FrescoImageComponent.class); - */ - - //Typeface nativeFont = Typeface.createFromAsset(getAssets(), "font/native_font.ttf"); - //WXEnvironment.setGlobalFontFamily("bolezhusun", nativeFont); - - startHeron(); - - } catch (WXException e) { - e.printStackTrace(); - } - - registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { - @Override - public void onActivityCreated(Activity activity, Bundle bundle) { - - } - - @Override - public void onActivityStarted(Activity activity) { - - } - - @Override - public void onActivityResumed(Activity activity) { - - } - - @Override - public void onActivityPaused(Activity activity) { - - } - - @Override - public void onActivityStopped(Activity activity) { - - } - - @Override - public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { - - } - - @Override - public void onActivityDestroyed(Activity activity) { - // The demo code of calling 'notifyTrimMemory()' - if (false) { - // We assume that the application is on an idle time. - WXSDKManager.getInstance().notifyTrimMemory(); - } - // The demo code of calling 'notifySerializeCodeCache()' - if (false) { - WXSDKManager.getInstance().notifySerializeCodeCache(); - } - } - }); - - } - - /** - *@param connectable debug server is connectable or not. - * if true, sdk will try to connect remote debug server when init WXBridge. - * - * @param debuggable enable remote debugger. valid only if host not to be "DEBUG_SERVER_HOST". - * true, you can launch a remote debugger and inspector both. - * false, you can just launch a inspector. - * @param host the debug server host, must not be "DEBUG_SERVER_HOST", a ip address or domain will be OK. - * for example "127.0.0.1". - */ - private void initDebugEnvironment(boolean connectable, boolean debuggable, String host) { - if (!"DEBUG_SERVER_HOST".equals(host)) { - WXEnvironment.sDebugServerConnectable = connectable; - WXEnvironment.sRemoteDebugMode = debuggable; - WXEnvironment.sRemoteDebugProxyUrl = "ws://" + host + ":8088/debugProxy/native"; - } - } - - private void startHeron(){ - try{ - Class heronInitClass = getClassLoader().loadClass("com/taobao/weex/heron/picasso/RenderPicassoInit"); - Method method = heronInitClass.getMethod("initApplication", Application.class); - method.setAccessible(true); - method.invoke(null,this); - Log.e("Weex", "Weex Heron Render Init Success"); - }catch (Exception e){ - Log.e("Weex", "Weex Heron Render Mode Not Found", e); - } - } - -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/WXBaseActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/WXBaseActivity.java deleted file mode 100644 index c97375616b..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/WXBaseActivity.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.os.Bundle; -import android.os.PersistableBundle; -import android.support.v7.app.AppCompatActivity; - -public abstract class WXBaseActivity extends AppCompatActivity { - - @Override - public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { - super.onCreate(savedInstanceState, persistentState); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java b/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java deleted file mode 100644 index 68fd922872..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/WXPageActivity.java +++ /dev/null @@ -1,674 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.graphics.PixelFormat; -import android.graphics.Rect; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.support.annotation.NonNull; -import android.support.v4.util.ArrayMap; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; -import android.text.TextUtils; -import android.util.Log; -import android.util.Pair; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ProgressBar; -import android.widget.Toast; -import com.alibaba.fastjson.JSON; -import com.alibaba.weex.commons.WXAnalyzerDelegate; -import com.alibaba.weex.constants.Constants; -import com.alibaba.weex.https.HotRefreshManager; -import com.alibaba.weex.https.WXHttpManager; -import com.alibaba.weex.https.WXHttpTask; -import com.alibaba.weex.https.WXRequestListener; -import com.taobao.weex.IWXRenderListener; -import com.taobao.weex.RenderContainer; -import com.taobao.weex.WXSDKEngine; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.appfram.navigator.IActivityNavBarSetter; -import com.taobao.weex.common.RenderTypes; -import com.taobao.weex.common.WXRenderStrategy; -import com.taobao.weex.render.WXAbstractRenderContainer; -import com.taobao.weex.ui.component.NestedContainer; -import com.taobao.weex.ui.component.WXComponent; -import com.taobao.weex.ui.component.WXVContainer; -import com.taobao.weex.utils.WXFileUtils; -import com.taobao.weex.utils.WXLogUtils; -import java.io.File; -import java.io.UnsupportedEncodingException; -import java.lang.reflect.Constructor; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - - -public class WXPageActivity extends WXBaseActivity implements IWXRenderListener, Handler.Callback, WXSDKInstance.NestedInstanceInterceptor { - - private static final String TAG = "WXPageActivity"; - public static final String WXPAGE = "wxpage"; - public static Activity wxPageActivityInstance; - private ViewGroup mContainer; - private ProgressBar mProgressBar; - private WXSDKInstance mInstance; - private Handler mWXHandler; - private BroadcastReceiver mReceiver; - private Uri mUri; - private HashMap mConfigMap = new HashMap(); - - @Override - public void onCreateNestInstance(WXSDKInstance instance, NestedContainer container) { - Log.d(TAG, "Nested Instance created."); - } - - private WXAnalyzerDelegate mWxAnalyzerDelegate; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_wxpage); - setCurrentWxPageActivity(this); - - - WXSDKEngine.setActivityNavBarSetter(new NavigatorAdapter()); - getWindow().setFormat(PixelFormat.TRANSLUCENT); - mUri = getIntent().getData(); - Bundle bundle = getIntent().getExtras(); - if (mUri == null && bundle == null) { - mUri = Uri.parse(Constants.BUNDLE_URL + Constants.WEEX_SAMPLES_KEY); - } - if (bundle != null) { - String bundleUrl = bundle.getString("bundleUrl"); - Log.i(TAG, "bundleUrl==" + bundleUrl); - - if (bundleUrl != null) { - mConfigMap.put("bundleUrl", bundleUrl + Constants.WEEX_SAMPLES_KEY); - mUri = Uri.parse(bundleUrl + Constants.WEEX_SAMPLES_KEY); - - } - } else { - mConfigMap.put("bundleUrl", mUri.toString() + Constants.WEEX_SAMPLES_KEY); - // mUri = Uri.parse(mUri.toString() + Constants.WEEX_SAMPLES_KEY) - } - - if (mUri == null) { - Toast.makeText(this, "the uri is empty!", Toast.LENGTH_SHORT).show(); - finish(); - return; - } - - Log.e("TestScript_Guide mUri==", mUri.toString()); - initUIAndData(); - - if(WXPAGE.equals(mUri.getScheme())|| - TextUtils.equals("true",mUri.getQueryParameter("_wxpage"))) { - mUri = mUri.buildUpon().scheme("http").build(); - loadWXfromService(mUri.toString()); - startHotRefresh(); - mWXHandler.removeCallbacks(mCollectIDMap); - mWXHandler.postDelayed(mCollectIDMap,2000); - }else if (TextUtils.equals("http", mUri.getScheme()) || TextUtils.equals("https", mUri.getScheme())) { - // if url has key "_wx_tpl" then get weex bundle js - String weexTpl = mUri.getQueryParameter(Constants.WEEX_TPL_KEY); - String url = TextUtils.isEmpty(weexTpl) ? mUri.toString() : weexTpl; - loadWXfromService(url); - startHotRefresh(); - } else { - loadWXfromLocal(false); - } - mInstance.onActivityCreate(); - registerBroadcastReceiver(); - - mWxAnalyzerDelegate = new WXAnalyzerDelegate(this); - mWxAnalyzerDelegate.onCreate(); - - //if (mInstance.isPreDownLoad() || mInstance.isPreInitMode()){ - mInstance.onInstanceReady(); - //} - } - - @Override - protected void onStart() { - super.onStart(); - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onStart(); - } - } - - private void loadWXfromLocal(boolean reload) { - if (reload && mInstance != null) { - mInstance.destroy(); - mInstance = null; - } - if (mInstance == null) { - RenderContainer renderContainer = new RenderContainer(this); - - mInstance = new WXSDKInstance(this); - mInstance.setRenderContainer(renderContainer); - mInstance.registerRenderListener(this); - mInstance.setNestedInstanceInterceptor(this); - mInstance.setTrackComponent(true); - } - mContainer.post(new Runnable() { - @Override - public void run() { - Activity ctx = WXPageActivity.this; - Rect outRect = new Rect(); - ctx.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect); - mConfigMap.put("bundleUrl", mUri.toString()); - String path = "file".equals(mUri.getScheme()) ? assembleFilePath(mUri) : mUri.toString(); - mInstance.render(path, WXFileUtils.loadAsset(path, WXPageActivity.this), - mConfigMap, null, - WXRenderStrategy.APPEND_ASYNC); - } - }); - } - - private String assembleFilePath(Uri uri) { - if (uri != null && uri.getPath() != null) { - return uri.getPath().replaceFirst("/", ""); - } - return ""; - } - - private void initUIAndData() { - - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - String title = mUri.toString().substring(mUri.toString().lastIndexOf(File.separator) + 1); - if (mUri.toString().startsWith("http://dotwe.org") || mUri.toString().startsWith("https://dotwe.org")) { - title = "Weex Online Example"; - } - actionBar.setTitle(title); - } - - mContainer = (ViewGroup) findViewById(R.id.container); - mProgressBar = (ProgressBar) findViewById(R.id.progress); - mWXHandler = new Handler(this); - HotRefreshManager.getInstance().setHandler(mWXHandler); - addOnListener(); - } - - private void loadWXfromService(final String url) { - mProgressBar.setVisibility(View.VISIBLE); - - if (mInstance != null) { - mInstance.destroy(); - mContainer.removeAllViews(); - } - - WXAbstractRenderContainer renderContainer = null; - if(url.contains(RenderTypes.RENDER_TYPE_HERON_URL_PARAM)){ - mInstance = new WXSDKInstance(this); - mInstance.setRenderType(RenderTypes.RENDER_TYPE_HERON); - renderContainer = getHeronContainer(mInstance); - if(renderContainer == null){ - mInstance.destroy(); - } - } - if(renderContainer == null){ - renderContainer = new RenderContainer(this); - mInstance = WXPreLoadManager.getInstance().offerPreInitInstance(url); - if (null != mInstance){ - mInstance.init(this); - }else { - mInstance = new WXSDKInstance(this); - } - } - mInstance.setWXAbstractRenderContainer(renderContainer); - mInstance.registerRenderListener(this); - mInstance.setNestedInstanceInterceptor(this); - mInstance.setBundleUrl(url); - mInstance.setTrackComponent(true); - mContainer.addView(renderContainer); - - if (mInstance.isPreDownLoad()){ - return; - } - - - WXHttpTask httpTask = new WXHttpTask(); - httpTask.url = url; - httpTask.requestListener = new WXRequestListener() { - - @Override - public void onSuccess(WXHttpTask task) { - Log.i(TAG, "into--[http:onSuccess] url:" + url); - try { - Uri uri = Uri.parse(url); - mConfigMap.put("bundleUrl", url); - if(TextUtils.equals(uri.getQueryParameter("__eagle"), Boolean.TRUE.toString())){ - mInstance.render(TAG, task.response.data, mConfigMap, null); - } - else if (TextUtils.equals(uri.getQueryParameter("__data_render"), Boolean.TRUE.toString())){ - mInstance.render(TAG, new String(task.response.data, "UTF-8"), mConfigMap, null, WXRenderStrategy.DATA_RENDER); - }else if (TextUtils.equals(uri.getQueryParameter("__json_render"), Boolean.TRUE.toString())){ - mInstance.render(TAG, new String(task.response.data, "UTF-8"), mConfigMap, null, WXRenderStrategy.JSON_RENDER); - } else { - mInstance.render(TAG, new String(task.response.data, "utf-8"), mConfigMap, null, WXRenderStrategy.APPEND_ASYNC); - } - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - } - - @Override - public void onError(WXHttpTask task) { - Log.i(TAG, "into--[http:onError]"); - mProgressBar.setVisibility(View.GONE); - Toast.makeText(getApplicationContext(), "network error!", Toast.LENGTH_SHORT).show(); - } - }; - - WXHttpManager.getInstance().sendRequest(httpTask); - } - - - private WXAbstractRenderContainer getHeronContainer(WXSDKInstance instance){ - try{ - Class containerClass = getClassLoader().loadClass("com.taobao.weex.heron.container.WXHeronRenderContainer"); - Constructor constructor = containerClass.getConstructor(Context.class); - WXAbstractRenderContainer container = (WXAbstractRenderContainer) constructor.newInstance(this); - container.createInstanceRenderView(instance.getInstanceId()); - return container; - }catch (Exception e){ - Log.e("Weex", "getHeronContainer Error Use Native Container", e); - return null; - } - } - - - /** - * hot refresh - */ - private void startHotRefresh() { - try { - URL url = new URL(mUri.toString()); - String host = url.getHost(); - String query = url.getQuery(); - String wsport = TextUtils.isEmpty(query)? "8082" : getUrlParam("wsport", query); - String wsUrl = "ws://" + host + ":" + (wsport.equals("") ? "8082" : wsport) ; - mWXHandler.obtainMessage(Constants.HOT_REFRESH_CONNECT, 0, 0, wsUrl).sendToTarget(); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - } - - private String getUrlParam(String key, String queryString) { - String regex = "[?|&]?" + key + "=([^&]+)"; - Pattern p = Pattern.compile(regex); - Matcher matcher = p.matcher(queryString); - if (matcher.find()) { - return matcher.group(1); - } else { - return ""; - } - } - - private void addOnListener() { - - } - - private Map mIDMap = new ArrayMap<>(); - private final Runnable mCollectIDMap = new Runnable() { - @Override - public void run() { - View container = findViewById(R.id.container); - - collectId(mInstance.getRootComponent(),mIDMap); - container.setContentDescription(JSON.toJSONString(mIDMap)); - - mWXHandler.removeCallbacks(this); - mWXHandler.postDelayed(this,2000); - } - }; - - /** - * - * @param map - */ - private static void collectId(WXComponent comp, Map map){ - if(comp == null){ - return; - } - String id; - View view; - if((view = comp.getHostView())!=null && - (id = (String) comp.getAttrs().get("testId"))!=null && - !map.containsKey(id)){ - Pair pair = Utility.nextID(); - view.setId(pair.second); - map.put(id,pair.first); - } - if(comp instanceof WXVContainer){ - WXVContainer container = (WXVContainer) comp; - for(int i = container.getChildCount()-1;i>=0;i--){ - collectId(container.getChild(i),map); - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (mInstance != null) { - mInstance.onActivityDestroy(); - } - mContainer = null; - // TopScrollHelper.getInstance(getApplicationContext()).onDestory(); - mWXHandler.obtainMessage(Constants.HOT_REFRESH_DISCONNECT).sendToTarget(); - unregisterBroadcastReceiver(); - - if(wxPageActivityInstance == this){ - wxPageActivityInstance = null; - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onDestroy(); - } - } - - - @Override - public boolean onKeyUp(int keyCode, KeyEvent event) { - return (mWxAnalyzerDelegate != null && mWxAnalyzerDelegate.onKeyUp(keyCode,event)) || super.onKeyUp(keyCode, event); - } - - @Override - protected void onResume() { - super.onResume(); - if (mInstance != null) { - mInstance.onActivityResume(); - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onResume(); - } - } - - public static Activity getCurrentWxPageActivity() { - return wxPageActivityInstance; - } - - public static void setCurrentWxPageActivity(Activity activity) { - wxPageActivityInstance = activity; - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if(mInstance!=null){ - mInstance.onRequestPermissionsResult(requestCode,permissions,grantResults); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if(mInstance!=null){ - mInstance.onActivityResult(requestCode,resultCode,data); - } - } - - @Override - public boolean handleMessage(Message msg) { - - switch (msg.what) { - case Constants.HOT_REFRESH_CONNECT: - HotRefreshManager.getInstance().connect(msg.obj.toString()); - break; - case Constants.HOT_REFRESH_DISCONNECT: - HotRefreshManager.getInstance().disConnect(); - break; - case Constants.HOT_REFRESH_REFRESH: - loadWXfromService(mUri.toString()); - break; - case Constants.HOT_REFRESH_CONNECT_ERROR: - Toast.makeText(this, "hot refresh connect error!", Toast.LENGTH_SHORT).show(); - break; - default: - break; - } - - return false; - } - - @Override - public void onViewCreated(WXSDKInstance instance, View view) { - WXLogUtils.e("into--[onViewCreated]"); - View wrappedView = null; - if(mWxAnalyzerDelegate != null){ - wrappedView = mWxAnalyzerDelegate.onWeexViewCreated(instance,view); - } - if(wrappedView != null){ - view = wrappedView; - } - - if(view.getParent() == null) { - mContainer.addView(view); - } - mContainer.requestLayout(); - Log.d("WARenderListener", "renderSuccess"); - } - - @Override - public void onRenderSuccess(WXSDKInstance instance, int width, int height) { - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onWeexRenderSuccess(instance); - } - mProgressBar.setVisibility(View.INVISIBLE); - } - - @Override - public void onRefreshSuccess(WXSDKInstance instance, int width, int height) { - mProgressBar.setVisibility(View.GONE); - } - - @Override - public void onException(WXSDKInstance instance, String errCode, - String msg) { - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onException(instance,errCode,msg); - } - mProgressBar.setVisibility(View.GONE); - if (!TextUtils.isEmpty(errCode) && errCode.contains("|")) { - String[] errCodeList = errCode.split("\\|"); - String code = errCodeList[1]; - String codeType = errCode.substring(0, errCode.indexOf("|")); - - if (TextUtils.equals("1", codeType)) { - String errMsg = "codeType:" + codeType + "\n" + " errCode:" + code + "\n" + " ErrorInfo:" + msg; - degradeAlert(errMsg); - return; - } else { - Toast.makeText(getApplicationContext(), "errCode:" + errCode + " Render ERROR:" + msg, Toast.LENGTH_SHORT).show(); - } - } - } - - private void degradeAlert(String errMsg) { - new AlertDialog.Builder(this) - .setTitle("Downgrade success") - .setMessage(errMsg) - .setPositiveButton("OK", null) - .show(); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - if (!TextUtils.equals("file", mUri.getScheme())) { - getMenuInflater().inflate(R.menu.refresh, menu); - } - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - if (id == android.R.id.home) { - finish(); - return true; - } else if (id == R.id.action_refresh) { - String scheme = mUri.getScheme(); - if (mUri.isHierarchical() && (TextUtils.equals(scheme, "http") || TextUtils.equals(scheme, "https"))) { - String weexTpl = mUri.getQueryParameter(Constants.WEEX_TPL_KEY); - String url = TextUtils.isEmpty(weexTpl) ? mUri.toString() : weexTpl; - loadWXfromService(url); - return true; - } - } - return super.onOptionsItemSelected(item); - } - - @Override - protected void onPause() { - super.onPause(); - if (mInstance != null) { - mInstance.onActivityPause(); - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onPause(); - } - } - - @Override - protected void onStop() { - super.onStop(); - if (mInstance != null) { - mInstance.onActivityStop(); - } - if(mWxAnalyzerDelegate != null){ - mWxAnalyzerDelegate.onStop(); - } - } - - private void registerBroadcastReceiver() { - mReceiver = new RefreshBroadcastReceiver(); - IntentFilter filter = new IntentFilter(); - filter.addAction(WXSDKInstance.ACTION_DEBUG_INSTANCE_REFRESH); - filter.addAction(WXSDKInstance.ACTION_INSTANCE_RELOAD); - - registerReceiver(mReceiver, filter); - } - - private void unregisterBroadcastReceiver() { - if (mReceiver != null) { - unregisterReceiver(mReceiver); - } - mReceiver = null; - } - - @Override - public void onBackPressed() { - if (!mInstance.onBackPressed()) { - super.onBackPressed(); - } - } - - private static class NavigatorAdapter implements IActivityNavBarSetter { - - @Override - public boolean push(String param) { - return false; - } - - @Override - public boolean pop(String param) { - return false; - } - - @Override - public boolean setNavBarRightItem(String param) { - return false; - } - - @Override - public boolean clearNavBarRightItem(String param) { - return false; - } - - @Override - public boolean setNavBarLeftItem(String param) { - return false; - } - - @Override - public boolean clearNavBarLeftItem(String param) { - return false; - } - - @Override - public boolean setNavBarMoreItem(String param) { - return false; - } - - @Override - public boolean clearNavBarMoreItem(String param) { - return false; - } - - @Override - public boolean setNavBarTitle(String param) { - return false; - } - } - - public class RefreshBroadcastReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - if (WXSDKInstance.ACTION_INSTANCE_RELOAD.equals(intent.getAction()) || - WXSDKInstance.ACTION_DEBUG_INSTANCE_REFRESH.equals(intent.getAction())) { - // String myUrl = intent.getStringExtra("url"); - // Log.e("WXPageActivity", "RefreshBroadcastReceiver reload onReceive ACTION_DEBUG_INSTANCE_REFRESH mBundleUrl:" + myUrl + " mUri:" + mUri); - - Log.v(TAG, "connect to debug server success"); - if (mUri != null) { - if (TextUtils.equals(mUri.getScheme(), "http") || TextUtils.equals(mUri.getScheme(), "https")) { - String weexTpl = mUri.getQueryParameter(Constants.WEEX_TPL_KEY); - String url = TextUtils.isEmpty(weexTpl) ? mUri.toString() : weexTpl; - // Log.e("WXPageActivity", "loadWXfromService reload url:" + url); - loadWXfromService(url); - } else { - // Log.e("WXPageActivity", "loadWXfromLocal reload from local url:" + mUri.toString()); - loadWXfromLocal(true); - } - } - } - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/WXPreLoadManager.java b/android/playground/app/src/main/java/com/alibaba/weex/WXPreLoadManager.java deleted file mode 100644 index 9b45b27908..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/WXPreLoadManager.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import android.util.Log; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.common.WXRenderStrategy; -import com.taobao.weex.utils.WXLogUtils; - -/** - * @author zhongcang - * @date 2019/5/13 - */ -public class WXPreLoadManager { - - private Map mPreInitInstanceMap; - - private static class SingleTonHolder { - private static final WXPreLoadManager INSTANCE = new WXPreLoadManager(); - } - - private WXPreLoadManager() { - mPreInitInstanceMap = new ConcurrentHashMap<>(); - } - - public static WXPreLoadManager getInstance() { - return SingleTonHolder.INSTANCE; - } - - public WXSDKInstance offerPreInitInstance(String pageName) { - WXSDKInstance instance = mPreInitInstanceMap.remove(pageName); - return instance; - } - - public void preLoad(String url) { - - boolean preDownLoad = url.contains("preDownLoad=true"); - boolean preInit = url.contains("preInitInstance=rax") || url.contains("preInitInstance=vue"); - if (!preDownLoad && !preInit){ - return; - } - - - WXSDKInstance instance = new WXSDKInstance(); - Map options = new HashMap<>(); - options.put("bundleUrl", url); - options.put("render_strategy", WXRenderStrategy.APPEND_ASYNC.toString()); - options.put("wxPreInit",preInit); - options.put("wxPreDownLoad",preDownLoad); - String script = null; - if (preInit){ - if (url.contains("preInitInstance=rax")) { - script = "// { \"framework\": \"Rax\" }\n"; - } else if (url.contains("preInitInstance=vue")) { - script = "// { \"framework\": \"Vue\" }\n"; - } else { - WXLogUtils.e("WXPreLoadManager", "unsupport init bundle type :" + url); - } - if (null != script) { - mPreInitInstanceMap.put(url, instance); - Log.d("test->", "start preInit: "); - instance.preInit(url, script, options, null, WXRenderStrategy.APPEND_ASYNC); - } - } - if (preDownLoad){ - if (!mPreInitInstanceMap.containsKey(url)) { - mPreInitInstanceMap.put(url, instance); - } - Log.d("test->", "start preDownLoad: "); - instance.preDownLoad(url, options, null, WXRenderStrategy.APPEND_ASYNC); - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/constants/Constants.java b/android/playground/app/src/main/java/com/alibaba/weex/constants/Constants.java deleted file mode 100644 index abb0282932..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/constants/Constants.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.constants; - -public class Constants { - -// public static final String BUNDLE_URL = "http://t.cn?_wx_tpl=http://h5.waptest.taobao.com/app/weextc031/build/TC__Home.js"; - public static final String BUNDLE_URL = "http://h5.m.taobao.com?_wx_tpl=http://g.tbcdn.cn/weex/weex-tc/0.1.2/build/TC__Home.js"; - public static final String WEEX_SAMPLES_KEY = "?weex-samples"; - public static final String WEEX_TPL_KEY = "_wx_tpl"; - - - //hot refresh - public static final int HOT_REFRESH_CONNECT = 0x111; - public static final int HOT_REFRESH_DISCONNECT = HOT_REFRESH_CONNECT + 1; - public static final int HOT_REFRESH_REFRESH = HOT_REFRESH_DISCONNECT + 1; - public static final int HOT_REFRESH_CONNECT_ERROR = HOT_REFRESH_REFRESH + 1; -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/WXInstanceStatisticsListener.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/WXInstanceStatisticsListener.java deleted file mode 100644 index 05b6de1a44..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/WXInstanceStatisticsListener.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend; - -import com.taobao.weex.IWXStatisticsListener; - -import com.taobao.weex.utils.Trace; - -public class WXInstanceStatisticsListener implements IWXStatisticsListener { - /** - * Called when weex sdk engine begin to initialize. - */ - @Override - public void onSDKEngineInitialize() {} - - /** - * Called when begin to load js framework. - */ - @Override - public void onJsFrameworkStart() {} - - /** - * Called when finish loading js framework. - */ - @Override - public void onJsFrameworkReady() {} - - /** - * Called when the render view phase of first view reached. - */ - @Override - public void onFirstView() {} - - /** - * Called when the render view phase of first screen reached. - */ - @Override - public void onFirstScreen() { - Trace.beginSection("onFirstScreen done"); - Trace.endSection(); - } - - /** - * Called when to start a http request. - */ - @Override - public void onHttpStart() {} - - /** - * Called when received a http response header data. - */ - @Override - public void onHeadersReceived() {} - - /** - * Called when to finish a http request. - */ - @Override - public void onHttpFinish() {} - - /** - * Called when an exception occured. - */ - @Override - public void onException(String instanceid, String errCode, String msg) {} -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/ApmGenerator.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/ApmGenerator.java deleted file mode 100644 index d5b6774c29..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/ApmGenerator.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.adapter; - -import com.taobao.weex.performance.IApmGenerator; -import com.taobao.weex.performance.IWXApmMonitorAdapter; - -/** - * @author zhongcang - * @date 2018/7/13 - */ -public class ApmGenerator implements IApmGenerator { - @Override - public IWXApmMonitorAdapter generateApmInstance(String type) { - return new WXInstanceApmAdapter(); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/DefaultAccessibilityRoleAdapter.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/DefaultAccessibilityRoleAdapter.java deleted file mode 100644 index 21ff24f049..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/DefaultAccessibilityRoleAdapter.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.adapter; - -import android.text.TextUtils; - -import com.taobao.weex.adapter.IWXAccessibilityRoleAdapter; - -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -/** - * Created by moxun on 2017/11/13. - */ - -public class DefaultAccessibilityRoleAdapter implements IWXAccessibilityRoleAdapter { - private static Map ENRoles = new HashMap<>(); - - static { - ENRoles.put("button", "Button"); - ENRoles.put("link", "HyperLink"); - ENRoles.put("img", "Picture"); - ENRoles.put("search", "Search"); - ENRoles.put("header", "Title"); - } - - @Override - public String getRole(String key) { - if (isEN()) { - String enRole = ENRoles.get(key); - if (!TextUtils.isEmpty(enRole)) { - return enRole; - } - } - return key; - } - - private static boolean isEN() { - try { - return "EN".equals(Locale.getDefault().getCountry()); - } catch (Throwable t) { - } - return false; - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/DefaultConfigAdapter.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/DefaultConfigAdapter.java deleted file mode 100644 index fa31138238..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/DefaultConfigAdapter.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.adapter; - -import com.taobao.weex.adapter.IWXConfigAdapter; - -/** - * @author zhongcang - * @date 2019/6/19 - */ -public class DefaultConfigAdapter implements IWXConfigAdapter { - @Override - public String getConfig(String nameSpace, String key, String defaultValue) { - return defaultValue; - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/InterceptWXHttpAdapter.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/InterceptWXHttpAdapter.java deleted file mode 100644 index 58c825438f..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/InterceptWXHttpAdapter.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.adapter; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - -import com.taobao.weex.adapter.DefaultWXHttpAdapter; -import com.taobao.weex.urlconnection.ByteArrayRequestEntity; -import com.taobao.weex.urlconnection.SimpleRequestEntity; -import com.taobao.weex.urlconnection.WeexURLConnectionManager; - -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; - -/** - * Created by moxun on 16/12/29. - */ - -public class InterceptWXHttpAdapter extends DefaultWXHttpAdapter { - - @NonNull - @Override - public IEventReporterDelegate getEventReporterDelegate() { - return new IEventReporterDelegate() { - - WeexURLConnectionManager manager = new WeexURLConnectionManager(null); - - @Override - public void preConnect(HttpURLConnection connection, @Nullable String body) { - SimpleRequestEntity requestEntity = null; - if (body != null) { - requestEntity = new ByteArrayRequestEntity(body.getBytes()); - } - - try { - manager.preConnect(connection, requestEntity); - } catch (Throwable throwable) { - manager.httpExchangeFailed(new IOException("Exception on preConnect", throwable)); - } - } - - @Override - public void postConnect() { - try { - manager.postConnect(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public InputStream interpretResponseStream(@Nullable InputStream inputStream) { - return manager.interpretResponseStream(inputStream); - } - - @Override - public void httpExchangeFailed(IOException e) { - manager.httpExchangeFailed(e); - } - }; - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/WXAnalyzerDemoListener.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/WXAnalyzerDemoListener.java deleted file mode 100644 index ec8e1ea9e3..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/WXAnalyzerDemoListener.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.adapter; - -import android.util.Log; -import com.taobao.weex.BuildConfig; -import com.taobao.weex.performance.IWXAnalyzer; -import com.taobao.weex.performance.WXAnalyzerDataTransfer; - -/** - * @author zhongcang - * @date 2018/9/17 - */ -public class WXAnalyzerDemoListener implements IWXAnalyzer { - @Override - public void transfer(String group, String module, String type, String data) { - //WXAnalyzerDataTransfer.switchInteractionLog(true); - if (BuildConfig.DEBUG){ - // Log.d("WXAnalyzerDemoListener", "transfer: "); - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/WXInstanceApmAdapter.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/WXInstanceApmAdapter.java deleted file mode 100644 index c9ff68355a..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/adapter/WXInstanceApmAdapter.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.adapter; - -import java.util.HashMap; -import java.util.Map; - -import android.util.Log; -import com.taobao.weex.performance.IWXApmMonitorAdapter; -import com.taobao.weex.performance.WXInstanceApm; -import org.json.JSONException; -import org.json.JSONObject; - -public class WXInstanceApmAdapter implements IWXApmMonitorAdapter { - private final APMInfo mInstanceInfo; - private final Map mSubProcedureInfo; - private boolean isAppear = true; - - WXInstanceApmAdapter() { - mInstanceInfo = new APMInfo(WXInstanceApm.WEEX_PAGE_TOPIC); - mSubProcedureInfo = new HashMap<>(1); - } - - @Override - public void onStart(String instanceId) { - } - - @Override - public void onEnd() { - printVale(); - } - - @Override - public void onEvent(String name, Object value) { - if (!isAppear){ - return; - } - mInstanceInfo.eventMap.put(name, value); - } - - @Override - public void onStage(String name, long timestamp) { - mInstanceInfo.stageMap.put(name, timestamp); - } - - @Override - public void addProperty(String key, Object value) { - mInstanceInfo.propertyMap.put(key, value); - } - - @Override - public void addStats(String key, double value) { - mInstanceInfo.statsMap.put(key, value); - } - - @Override - public void onSubProcedureStage(String procedureName, String stageName) { - getAndCheckAndSubProcedureMap(procedureName).stageMap.put(stageName, System.currentTimeMillis()); - } - - @Override - public void onSubProcedureEvent(String procedureName, String eventName) { - getAndCheckAndSubProcedureMap(procedureName).eventMap.put(eventName, System.currentTimeMillis()); - } - - @Override - public void setSubProcedureStats(String procedureName, String name, double value) { - getAndCheckAndSubProcedureMap(procedureName).statsMap.put(name, value); - } - - @Override - public void setSubProcedureProperties(String procedureName, String name, Object value) { - getAndCheckAndSubProcedureMap(procedureName).propertyMap.put(name, value); - } - - @Override - public void onAppear() { - isAppear = true; - } - - @Override - public void onDisappear() { - isAppear = false; - } - - @Override - public String parseReportUrl(String originUrl) { - return originUrl; - } - - private APMInfo getAndCheckAndSubProcedureMap(String procedureName) { - APMInfo info = mSubProcedureInfo.get(procedureName); - if (null != info) { - return info; - } - synchronized (mSubProcedureInfo) { - info = new APMInfo(procedureName); - mSubProcedureInfo.put(procedureName, info); - } - return info; - } - - private void printVale() { - String val = ""; - try { - JSONObject subProcedureJson = new JSONObject(); - for (Map.Entry entry : mSubProcedureInfo.entrySet()) { - subProcedureJson.put(entry.getKey(), entry.getValue().toJson()); - } - val = mInstanceInfo.toJson() - .put("subProcedures", subProcedureJson) - .toString(); - } catch (JSONException e) { - e.printStackTrace(); - } - Log.i("wxApmInstance", val); - //WXLogUtils.d("wxApmInstance", val); - } - - private class APMInfo { - private String infoName; - private Map stageMap; - private Map propertyMap; - private Map eventMap; - private Map statsMap; - - APMInfo(String name) { - this.infoName = name; - stageMap = new HashMap<>(); - propertyMap = new HashMap<>(); - eventMap = new HashMap<>(); - statsMap = new HashMap<>(); - } - - JSONObject toJson() throws JSONException { - return new JSONObject() - .put("stage", convertMapToJSON(stageMap)) - .put("property", convertMapToJSON(propertyMap)) - .put("event", convertMapToJSON(eventMap)) - .put("stats", convertMapToJSON(statsMap)); - } - - private JSONObject convertMapToJSON(Map params) throws JSONException { - JSONObject json = new JSONObject(); - for (Map.Entry entry : params.entrySet()) { - json.put(entry.getKey(), entry.getValue()); - } - return json; - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/component/RichText.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/component/RichText.java deleted file mode 100644 index 3b4b53f3a1..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/component/RichText.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.component; - -import android.content.Context; -import android.support.annotation.NonNull; -import android.text.SpannableString; -import android.text.Spanned; -import android.text.method.LinkMovementMethod; -import android.text.style.URLSpan; -import android.widget.TextView; - -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.ui.action.BasicComponentData; -import com.taobao.weex.ui.component.WXComponent; -import com.taobao.weex.ui.component.WXComponentProp; -import com.taobao.weex.ui.component.WXVContainer; - -public class RichText extends WXComponent { - - public RichText(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) { - super(instance, parent, basicComponentData); - } - - @Override - protected TextView initComponentHostView(@NonNull Context context) { - TextView view = new TextView(context); - view.setMovementMethod(LinkMovementMethod.getInstance()); - return view; - } - - @WXComponentProp(name = "tel") - public void setTelLink(String tel){ - SpannableString spannable=new SpannableString(tel); - spannable.setSpan(new URLSpan("tel:"+tel),0,tel.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - ((TextView) getHostView()).setText(spannable); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXComponentSyncTest.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXComponentSyncTest.java deleted file mode 100644 index 0adeed43da..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXComponentSyncTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.component; - -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.ui.action.BasicComponentData; -import com.taobao.weex.ui.component.WXDiv; -import com.taobao.weex.ui.component.WXVContainer; -import com.taobao.weex.utils.WXLogUtils; - -/** - * Created by zhengshihan on 2016/12/30. - */ - -public class WXComponentSyncTest extends WXDiv { - - public WXComponentSyncTest(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) { - super(instance, parent, basicComponentData); - } - - @JSMethod (uiThread = false) - public void testSyncCall(){ - WXLogUtils.d("11WXComponentSyncTest :"+ Thread.currentThread().getName()); - } - - @JSMethod (uiThread = true) - public void testAsyncCall(){ - WXLogUtils.e("22WXComponentSynTest :"+ Thread.currentThread().getName() ); - } -} \ No newline at end of file diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXMask.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXMask.java deleted file mode 100644 index 252de1c56f..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXMask.java +++ /dev/null @@ -1,169 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.component; - -import android.app.Activity; -import android.content.Context; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.os.Build; -import android.support.annotation.NonNull; -import android.view.Gravity; -import android.view.View; -import android.view.WindowManager; -import android.widget.FrameLayout; -import android.widget.PopupWindow; - -import com.alibaba.weex.extend.view.WXMaskView; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.dom.CSSShorthand; -import com.taobao.weex.dom.WXStyle; -import com.taobao.weex.ui.action.BasicComponentData; -import com.taobao.weex.ui.component.WXComponent; -import com.taobao.weex.ui.component.WXVContainer; - -import java.util.HashMap; -import java.util.Map; - -/** - * Created by lixinke on 2016/12/26. - */ - -public class WXMask extends WXVContainer { - - private PopupWindow mPopupWindow; - private WXMaskView mContainerView; - - public WXMask(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) { - super(instance, parent, basicComponentData); - } - - @Override - protected View initComponentHostView(@NonNull Context context) { - - mContainerView = new WXMaskView(context); - mPopupWindow = new PopupWindow(context); - mPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - mPopupWindow.setAttachedInDecor(true); - } - - //setClippingEnabled(false) will cause INPUT_ADJUST_PAN invalid. - //mPopupWindow.setClippingEnabled(false); - - mPopupWindow.setContentView(mContainerView); - mPopupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); - mPopupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); - mPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN | - WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - mPopupWindow.setFocusable(true); - - mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { - @Override - public void onDismiss() { - fireVisibleChangedEvent(false); - } - }); - - int y = 0; - int statusBarHeight = 0; - int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); - if (resourceId > 0) { - statusBarHeight = context.getResources().getDimensionPixelSize(resourceId); - y = statusBarHeight; - } - - mPopupWindow.showAtLocation(((Activity) context).getWindow().getDecorView(), - Gravity.TOP | Gravity.START, - 0, - y); - fireVisibleChangedEvent(true); - - return mContainerView; - } - - @Override - public boolean isVirtualComponent() { - return true; - } - - @Override - public void removeVirtualComponent() { - if (mPopupWindow.isShowing()) { - mPopupWindow.dismiss(); - } - } - - private void fireVisibleChangedEvent(boolean visible) { - Map event = new HashMap<>(1); - event.put("visible", visible); - fireEvent("visiblechanged", event); - } - - @Override - protected void setHostLayoutParams(View host, int width, int height, int left, int right, int top, int bottom) { - left = get(LEFT); - right = get(RIGHT); - top = get(TOP); - bottom = get(BOTTOM); - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(width, height); - - this.setMarginsSupportRTL(params, left, top, right, bottom); - - getHostView().setLayoutParams(params); - } - - private static final int LEFT = 0; - private static final int RIGHT = 1; - private static final int TOP = 2; - private static final int BOTTOM = 3; - - private int get(int type) { - try { - CSSShorthand margin = getMargin(); - WXStyle style = getStyles(); - switch (type) { - case LEFT: - return add(style.getLeft(), margin.get(CSSShorthand.EDGE.LEFT)); - case RIGHT: - return add(style.getRight(), margin.get(CSSShorthand.EDGE.RIGHT)); - case TOP: - return add(style.getTop(), margin.get(CSSShorthand.EDGE.TOP)); - case BOTTOM: - return add(style.getBottom(), margin.get(CSSShorthand.EDGE.BOTTOM)); - } - } catch (Throwable t) { - //ignore - } - return 0; - } - - private int add(float a, float b) { - if (Float.isNaN(a)) { - a = 0f; - } - - if (Float.isNaN(b)) { - b = 0f; - } - - return (int) (a + b); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXParallax.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXParallax.java deleted file mode 100644 index 281432cfa5..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/component/WXParallax.java +++ /dev/null @@ -1,364 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.component; - -import android.graphics.Color; -import android.support.annotation.Nullable; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; -import android.view.View; -import android.view.animation.Animation; -import android.view.animation.AnimationSet; -import android.view.animation.RotateAnimation; -import android.view.animation.ScaleAnimation; -import android.view.animation.TranslateAnimation; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.common.Constants; -import com.taobao.weex.common.ICheckBindingScroller; -import com.taobao.weex.common.OnWXScrollListener; -import com.taobao.weex.ui.action.BasicComponentData; -import com.taobao.weex.ui.animation.WXAnimationBean; -import com.taobao.weex.ui.component.Scrollable; -import com.taobao.weex.ui.component.WXComponent; -import com.taobao.weex.ui.component.WXDiv; -import com.taobao.weex.ui.component.WXVContainer; -import com.taobao.weex.ui.component.list.BasicListComponent; -import com.taobao.weex.ui.component.list.template.WXRecyclerTemplateList; -import com.taobao.weex.ui.view.listview.WXRecyclerView; -import com.taobao.weex.utils.WXLogUtils; -import com.taobao.weex.utils.WXResourceUtils; - -import java.util.ArrayList; - - -/** - * Created by zhengshihan on 2017/5/3. - */ - -public class WXParallax extends WXDiv implements OnWXScrollListener, ICheckBindingScroller { - - public final static String WX_TRANSFORM = "transform"; - public final static String WX_OPACITY = "opacity"; - public static final String PARALLAX = "parallax"; - public static final String BINDING_SCROLLER = "bindingScroller"; - - - ArrayList mTransformPropArrayList = new ArrayList<>(); - BackgroundColorCreator mBackgroundColor; - String mBindingRef = ""; - WXComponent mBindingComponent; - - private int mBackGroundColor = 0; - private float mOffsetY = 0; - - public WXParallax(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) { - super(instance, parent, basicComponentData); - initTransform(getAttrs().get(WX_TRANSFORM)); - initOpacity(getAttrs().get(Constants.Name.OPACITY)); - initBackgroundColor(getAttrs().get(Constants.Name.BACKGROUND_COLOR)); - - mBindingRef = (String) (getAttrs().get(BINDING_SCROLLER)); - instance.registerOnWXScrollListener(this); - } - - private void initBackgroundColor(Object obj) { - if (obj == null) - return; - - if (obj instanceof JSONObject) { - mBackgroundColor = new BackgroundColorCreator(); - JSONObject object = (JSONObject) obj; - - JSONArray in = object.getJSONArray("in"); - mBackgroundColor.input = new int[in.size()]; - for (int i = 0; i < in.size(); i++) { - mBackgroundColor.input[i] = in.getInteger(i); - } - - JSONArray out = object.getJSONArray("out"); - mBackgroundColor.output = new int[out.size()]; - for (int i = 0; i < out.size(); i++) { - String colorStr = out.getString(i); - mBackgroundColor.output[i] = WXResourceUtils.getColor(colorStr); - } - } - } - - private void initOpacity(Object obj) { - if (obj == null) - return; - - if (obj instanceof JSONObject) { - mTransformPropArrayList.add(new TransformCreator(WX_OPACITY, (JSONObject) obj)); - } - - } - - private void initTransform(Object propStr) { - - if (propStr == null) { - WXLogUtils.w("WXParallax initAnimation propStr ==null"); - return; - } - JSONArray jsonObject; - if (propStr instanceof JSONArray) { - jsonObject = (JSONArray) propStr; - for (int i = 0; i < jsonObject.size(); i++) { - JSONObject object = jsonObject.getJSONObject(i); - mTransformPropArrayList.add(i, - new TransformCreator(object.getString("type"), object)); - } - } - } - - @Override - public boolean isNeedScroller(String ref, Object option) { - - mBindingRef = (String) (getAttrs().get(BINDING_SCROLLER)); - if (TextUtils.isEmpty(mBindingRef)) { - WXComponent root = getInstance().getRootComponent(); - if (root != null && root instanceof WXVContainer) { - Scrollable scrollable = root.getFirstScroller(); - if (scrollable != null) { - mBindingRef = scrollable.getRef(); - } - } - } - if (!TextUtils.isEmpty(mBindingRef) - && !TextUtils.isEmpty(ref) - && ref.equals(mBindingRef)) { - return true; - } - return false; - } - - @Override - public void onScrolled(View view, int dx, int dy) { - if(ViewCompat.isInLayout(view)){ - if(mBindingComponent == null && mBindingRef != null){ - mBindingComponent = findComponent(mBindingRef); - } - if(mBindingComponent instanceof BasicListComponent - && view instanceof RecyclerView){ - BasicListComponent listComponent = (BasicListComponent) mBindingComponent; - mOffsetY = Math.abs(listComponent.calcContentOffset((RecyclerView) view)); - }else if(mBindingComponent instanceof WXRecyclerTemplateList - && view instanceof RecyclerView){ - WXRecyclerTemplateList listComponent = (WXRecyclerTemplateList) mBindingComponent; - mOffsetY = Math.abs(listComponent.calcContentOffset((RecyclerView) view)); - } - }else{ - mOffsetY = mOffsetY + dy; - } - - AnimationSet animationSet = new AnimationSet(true); - boolean hasAnimation = false; - for (int i = 0; i < mTransformPropArrayList.size(); i++) { - TransformCreator creator = mTransformPropArrayList.get(i); - Animation animation = creator.getAnimation(dx, dy); - if (animation != null) { - animationSet.addAnimation(animation); - hasAnimation = true; - } - } - - if (hasAnimation) { - animationSet.setFillAfter(true); - if (getHostView() != null) { - getHostView().startAnimation(animationSet); - } - } - - if (mBackgroundColor != null) { - int color = mBackgroundColor.getColor(dx, dy); - if (mBackGroundColor != color) { - getHostView().setBackgroundColor(color); - mBackGroundColor = color; - } - } - } - - @Override - public void onScrollStateChanged(View view, int x, int y, int newState) { - - } - - - private class BackgroundColorCreator { - - int[] input; - int[] output; - - int getColor(int XDelta, int YDelta) { - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("WXParallax:getColor: XDelta" + XDelta + " YDelta:" + YDelta + " mOffsetY" + mOffsetY); - } - int r1, g1, b1; - - if (mOffsetY > input[1]) { - return output[1]; - } - - if (mOffsetY < input[0]) { - return output[0]; - } - - r1 = Color.red(output[0]) + (int) (mOffsetY - input[0]) * (Color.red(output[1]) - Color.red(output[0])) / (input[1] - input[0]); - g1 = Color.green(output[0]) + (int) (mOffsetY - input[0]) * (Color.green(output[1]) - Color.green(output[0])) / (input[1] - input[0]); - b1 = Color.blue(output[0]) + (int) (mOffsetY - input[0]) * (Color.blue(output[1]) - Color.blue(output[0])) / (input[1] - input[0]); - - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("WXParallax:getColor: r1" + r1 + " g1:" + g1 + " b1:" + b1); - } - return Color.rgb(r1, g1, b1); - } - - } - - private class TransformCreator { - - String transformType; - float[] input, output; - float fromTranslateX, fromTranslateY; - float fromScaleX, fromScaleY; - float fromRotate, fromOpacity; - - TransformCreator(String type, JSONObject object) { - transformType = type; - JSONArray in = object.getJSONArray("in"); - input = parseParamArray(in); - JSONArray out = object.getJSONArray("out"); - output = parseParamArray(out); - - switch (transformType) { - case WXAnimationBean.Style.WX_TRANSLATE: - fromTranslateX = output[0]; - fromTranslateY = output[1]; - break; - case WXAnimationBean.Style.WX_SCALE: - fromScaleX = output[0]; - fromScaleY = output[1]; - break; - case WXAnimationBean.Style.WX_ROTATE: - fromRotate = output[0]; - break; - case WX_OPACITY: - fromOpacity = output[0]; - break; - } - } - - float[] parseParamArray(JSONArray in) { - - int size = in.size(); - float[] param = new float[size]; - for (int j = 0; j < size; j++) { - param[j] = in.getFloatValue(j); - } - return param; - } - - - @Nullable - Animation getAnimation(float XDelta, float YDelta) { - - float offset = mOffsetY; - if (offset > input[1]) { - offset = input[1]; - } - if (offset < input[0]) { - offset = input[0]; - } - float toTranslateX, toTranslateY, toOpacity, toScaleX, toScaleY, toRotate; - Animation animation = null; - - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("WXParallax", "type:" + transformType + " XDelta:" + XDelta + " YDelta:" + YDelta); - } - switch (transformType) { - - case WXAnimationBean.Style.WX_TRANSLATE: - toTranslateX = output[0] + (output[2] - output[0]) * (offset - input[0]) / (input[1] - input[0]); - toTranslateY = output[1] + (output[3] - output[1]) * (offset - input[0]) / (input[1] - input[0]); - - if (fromTranslateX == toTranslateX && fromTranslateY == toTranslateY) { - return null; - } - animation = new TranslateAnimation(fromTranslateX, toTranslateX, fromTranslateY, toTranslateY); - - fromTranslateX = toTranslateX; - fromTranslateY = toTranslateY; - - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("WXParallax", "XDelta:" + XDelta + " YDelta:" + YDelta); - WXLogUtils.d("WXParallax", " fromTranslateX:" + fromTranslateX + " toTranslateX:" + toTranslateX + " fromTranslateY:" + fromTranslateY + " toTranslateY:" + toTranslateY); - } - - break; - case WXAnimationBean.Style.WX_SCALE: - toScaleX = output[0] + (output[2] - output[0]) * (offset - input[0]) / (input[1] - input[0]); - toScaleY = output[1] + (output[3] - output[1]) * (offset - input[0]) / (input[1] - input[0]); - - if (fromScaleX == toScaleX && fromScaleY == toScaleY) { - return null; - } - animation = new ScaleAnimation(fromScaleX, toScaleX, fromScaleY, toScaleY); - - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("WXParallax", " fromScaleX:" + fromScaleX + " toScaleX:" + toScaleX + " fromScaleY:" + fromScaleY + " toScaleY:" + toScaleY); - } - - fromScaleX = toScaleX; - fromScaleY = toScaleY; - break; - - case WXAnimationBean.Style.WX_ROTATE: - toRotate = output[0] + (output[1] - output[0]) * (offset - input[0]) / (input[1] - input[0]); - if (fromRotate == toRotate) { - return null; - } - animation = new RotateAnimation(fromRotate, toRotate, output[2], output[3]); - fromRotate = toRotate; - break; - - case WX_OPACITY: - toOpacity = output[0] + (output[1] - output[0]) * (offset - input[0]) / (input[1] - input[0]); - if (fromOpacity == toOpacity) { - return null; - } - setOpacity(toOpacity); -// animation = new AlphaAnimation(fromOpacity, toOpacity); - - if (WXEnvironment.isApkDebugable()) { - WXLogUtils.d("WXParallax", "opacity fromOpacity:" + fromOpacity + " toOpacity:" + toOpacity); - } - - fromOpacity = toOpacity; - break; - } - - return animation; - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/GeolocationModule.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/GeolocationModule.java deleted file mode 100644 index 98f0c92943..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/GeolocationModule.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module; - -import android.Manifest; -import android.app.Activity; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.pm.PackageManager; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.LocalBroadcastManager; - -import com.alibaba.weex.extend.module.location.ILocatable; -import com.alibaba.weex.extend.module.location.LocationFactory; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.common.Destroyable; -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.common.WXModule; - -import java.util.HashMap; -import java.util.Map; - -/** - * Created by lixinke on 16/9/10. - */ -public class GeolocationModule extends WXModule implements Destroyable { - - private ILocatable mILocatable; - - public GeolocationModule() { - mILocatable = LocationFactory.getLocationProvider(mWXSDKInstance); - } - - /** - * 获取当前位置信息,只回调一次。 - * - * @param successCallback 成功回调function id. - * @param errorCallback 错误回调function id.(例如:没有权限) - * @param params JSON格式的参数(例如:准确度等). - */ - @JSMethod - public void getCurrentPosition(String successCallback, String errorCallback, String params) { - mILocatable.setWXSDKInstance(mWXSDKInstance); - if (checkPermission()) { - mILocatable.getCurrentPosition(successCallback, errorCallback, params); - } else { - requestPermission(successCallback, errorCallback, params, ILocatable.REQUEST_CUR_PERMISSION_CODE); - } - } - - - /** - * 注册监听全局定位 - * - * @param successCallback 定位成功回调function id. - * @param errorCallback 错误回调(例如:没有权限等). - * @param params SON格式的参数(例如:准确度等). - */ - @JSMethod - public void watchPosition(String successCallback, String errorCallback, String params) { - mILocatable.setWXSDKInstance(mWXSDKInstance); - if (checkPermission()) { - mILocatable.watchPosition(successCallback, errorCallback, params); - } else { - requestPermission(successCallback, errorCallback, params, ILocatable.REQUEST_WATCH_PERMISSION_CODE); - } - } - - /** - * 注销监听全局定位 - * - * @param registerID 注册时返回的唯一ID。 - */ - @JSMethod - public void clearWatch(String registerID) { - mILocatable.setWXSDKInstance(mWXSDKInstance); - mILocatable.clearWatch(registerID); - } - - - @Override - public void destroy() { - mILocatable.destroy(); - } - - private void requestPermission(String successCallback, String errorCallback, String params, int requestCurPermissionCode) { - ActivityCompat.requestPermissions((Activity) mWXSDKInstance.getContext(), - new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, requestCurPermissionCode); - LocalBroadcastManager.getInstance(mWXSDKInstance.getContext()) - .registerReceiver(new PerReceiver(mWXSDKInstance.getInstanceId(), mILocatable, successCallback, errorCallback, params), new IntentFilter("actionRequestPermissionsResult")); - } - - private boolean checkPermission() { - return ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED - && ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED; - } - - static class PerReceiver extends BroadcastReceiver { - - String mInstanceId; - ILocatable mLocatable; - String mSuccessCallback; - String mErrorCallback; - String mParams; - - PerReceiver(String instanceId, ILocatable locatable, String successCallback, String errorCallback, String params) { - this.mLocatable = locatable; - this.mSuccessCallback = successCallback; - this.mErrorCallback = errorCallback; - this.mParams = params; - this.mInstanceId = instanceId; - } - - @Override - public void onReceive(Context context, Intent intent) { - int code = intent.getIntExtra(ILocatable.REQUEST_PERMISSION_CODE, 0); - int[] grantResults = intent.getIntArrayExtra("grantResults"); - if (code == ILocatable.REQUEST_CUR_PERMISSION_CODE) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - mLocatable.getCurrentPosition(mSuccessCallback, mErrorCallback, mParams); - } else { - noPermission(); - } - } else if (code == ILocatable.REQUEST_WATCH_PERMISSION_CODE) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - mLocatable.watchPosition(mSuccessCallback, mErrorCallback, mParams); - } else { - noPermission(); - } - } - LocalBroadcastManager.getInstance(context).unregisterReceiver(this); - } - - private void noPermission() { - Map options = new HashMap<>(); - options.put(ILocatable.ERROR_CODE, ILocatable.ErrorCode.NO_PERMISSION_ERROR); - options.put(ILocatable.ERROR_MSG, ILocatable.ErrorMsg.NO_PERMISSION_ERROR); - WXSDKManager.getInstance().callback(mInstanceId, mErrorCallback, options); - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/MyModule.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/MyModule.java deleted file mode 100644 index c2b0214142..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/MyModule.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module; - -import android.widget.Toast; - -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.common.WXModule; - -public class MyModule extends WXModule { - - @JSMethod(uiThread = true) - public void printLog(String msg) { - Toast.makeText(mWXSDKInstance.getContext(),msg,Toast.LENGTH_SHORT).show(); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/RenderModule.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/RenderModule.java deleted file mode 100644 index 1ad0da7a65..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/RenderModule.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module; - -import android.util.Log; - -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.common.WXModule; - - -public class RenderModule extends WXModule { - - @JSMethod - public void performClick() { - Log.d("Render", "Render"); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/SyncTestModule.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/SyncTestModule.java deleted file mode 100644 index 74ad1d99b8..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/SyncTestModule.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module; - -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.common.WXModule; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -/** - * Created by zhengshihan on 2016/12/28. - */ - -public class SyncTestModule extends WXModule { - - @JSMethod(uiThread = false) - public ArrayList getArray(){ - ArrayList list = new ArrayList(); - list.add("ArrayList test 1"); - list.add("ArrayList test 2"); - return list; - } - @JSMethod(uiThread = false) - public String getString(){ - - return "getString :i am string "; - } - - @JSMethod(uiThread = false) - public int getNumber(){ - return 1111; - } - - /** - * JSON NOT allow KeyValue as non-string value - * @return - */ - @JSMethod(uiThread = false) - public Object getObject(){ - ArrayList list = new ArrayList(); - list.add("222"); - list.add("test"); - Map map = new HashMap(); - map.put(11,"test11"); - map.put("22","test22"); - list.add(map); - return list; - - } - - - -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXEventModule.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXEventModule.java deleted file mode 100644 index 5c63a1f285..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXEventModule.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module; - -import android.Manifest; -import android.app.Activity; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.net.Uri; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatActivity; -import android.text.TextUtils; -import android.widget.Toast; - -import com.alibaba.weex.WXPageActivity; -import com.google.zxing.client.android.CaptureActivity; -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.bridge.JSCallback; -import com.taobao.weex.common.WXModule; - -import java.util.HashMap; -import java.util.Map; - - -public class WXEventModule extends WXModule { - - private static final String WEEX_CATEGORY = "com.taobao.android.intent.category.WEEX"; - private static final String WEEX_ACTION = "com.taobao.android.intent.action.WEEX"; - - private static final int CAMERA_PERMISSION_REQUEST_CODE = 0x9; - - - @JSMethod(uiThread = true) - public void openURL(String url) { - if (TextUtils.isEmpty(url)) { - return; - } - String scheme = Uri.parse(url).getScheme(); - StringBuilder builder = new StringBuilder(); - - if ("weex://go/scan".equals(url)) { - if (ContextCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { - if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) mWXSDKInstance.getContext(), Manifest.permission.CAMERA)) { - showCameraPermissionRationale(); - } else{ - ActivityCompat.requestPermissions((Activity) mWXSDKInstance.getContext(), new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE); - } - } else { - mWXSDKInstance.getContext().startActivity(new Intent(mWXSDKInstance.getContext(), CaptureActivity.class)); - } - return; - } - - if (TextUtils.equals("http", scheme) || TextUtils.equals("https", scheme) || TextUtils.equals("file", scheme)) { - builder.append(url); - } else { - builder.append("http:"); - builder.append(url); - } - - Uri uri = Uri.parse(builder.toString()); - Intent intent = new Intent(mWXSDKInstance.getContext(),WXPageActivity.class); - intent.setAction(WEEX_ACTION); - intent.setData(uri); - intent.addCategory(WEEX_CATEGORY); - mWXSDKInstance.getContext().startActivity(intent); - - if (mWXSDKInstance.checkModuleEventRegistered("event", this)) { - HashMap params=new HashMap<>(); - params.put("param1","param1"); - params.put("param2","param2"); - params.put("param3","param3"); - mWXSDKInstance.fireModuleEvent("event", this, params); - } - } - - private void showCameraPermissionRationale() { - if (mWXSDKInstance.getContext() instanceof AppCompatActivity) { - AlertDialog.Builder builder = new AlertDialog.Builder(((AppCompatActivity) mWXSDKInstance.getContext())); - builder.setMessage("Weex playground need the camera permission to scan QR code"); - builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - ActivityCompat.requestPermissions((Activity) mWXSDKInstance.getContext(), new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE); - } - }); - builder.create().show(); - } - } - - /* - * a test method for macaca case, you can fire globalEvent when download finish、device shaked and so on. - * @param event event name - * */ - @JSMethod(uiThread = true) - public void fireNativeGlobalEvent(String event, JSCallback callback) { - Map params=new HashMap(); - params.put("eventParam","value"); - - mWXSDKInstance.fireGlobalEventCallback(event, params); - if (null != callback) { - Map result = new HashMap(); - result.put("ok",true); - callback.invoke(result); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - mWXSDKInstance.getContext().startActivity(new Intent(mWXSDKInstance.getContext(), CaptureActivity.class)); - } else { - Toast.makeText(mWXSDKInstance.getContext(), "request camara permission fail!", Toast.LENGTH_SHORT).show(); - } - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXTitleBar.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXTitleBar.java deleted file mode 100644 index 617b1fd1c9..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXTitleBar.java +++ /dev/null @@ -1,127 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module; - -import android.app.Activity; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.Menu; -import android.view.MenuItem; - -import com.alibaba.fastjson.JSONObject; -import com.alibaba.weex.R; -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.common.WXModule; -import com.taobao.weex.utils.WXResourceUtils; - - -/** - * Created by moxun on 12/01/2018. - */ - -public class WXTitleBar extends WXModule { - @JSMethod - public void setTitle(String title) { - ActionBar actionBar = getActionBar(); - if (actionBar != null) { - actionBar.setTitle(String.valueOf(title)); - } - } - - @JSMethod - public void setStyle(JSONObject object) { - String bgColor = object.getString("backgroundColor"); - String color = object.getString("foregroundColor"); - ActionBar actionBar = getActionBar(); - if (actionBar != null) { - if (bgColor != null) { - int c = WXResourceUtils.getColor(bgColor); - actionBar.setBackgroundDrawable(new ColorDrawable(c)); - } - - if (color != null) { - int c = WXResourceUtils.getColor(color); - - Toolbar toolbar = (Toolbar) ((Activity) mWXSDKInstance.getContext()).findViewById(R.id.toolbar); - if (toolbar != null) { - toolbar.setTitleTextColor(c); - toolbar.setSubtitleTextColor(c); - - Drawable upNavigation = toolbar.getNavigationIcon(); - if (null != upNavigation) { - upNavigation = DrawableCompat.wrap(upNavigation); - upNavigation = upNavigation.mutate(); - DrawableCompat.setTint(upNavigation, c); - toolbar.setNavigationIcon(upNavigation); - } - - Drawable overflowIcon = toolbar.getOverflowIcon(); - if (null != overflowIcon) { - overflowIcon = DrawableCompat.wrap(overflowIcon); - overflowIcon = overflowIcon.mutate(); - DrawableCompat.setTint(overflowIcon, c); - toolbar.setOverflowIcon(overflowIcon); - } - - Menu menu = toolbar.getMenu(); - if (menu != null && menu.size() > 0) { - for (int i = 0; i < menu.size(); i++) { - MenuItem item = menu.getItem(i); - if (item != null && item.getIcon() != null) { - Drawable drawable = item.getIcon(); - if (null != drawable) { - drawable = DrawableCompat.wrap(drawable); - drawable = drawable.mutate(); - DrawableCompat.setTint(drawable, c); - item.setIcon(drawable); - } - } - } - ((Activity) mWXSDKInstance.getContext()).invalidateOptionsMenu(); - } - } - } - } - } - - @JSMethod - public void showTitleBar(String isShow) { - ActionBar actionBar = getActionBar(); - if (actionBar != null) { - if ("true".equals(isShow) && !actionBar.isShowing()) { - actionBar.show(); - } - - if ("false".equals(isShow) && actionBar.isShowing()) { - actionBar.hide(); - } - } - } - - private ActionBar getActionBar() { - if (mWXSDKInstance.getContext() instanceof AppCompatActivity) { - return ((AppCompatActivity) mWXSDKInstance.getContext()).getSupportActionBar(); - } - return null; - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXWsonTestModule.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXWsonTestModule.java deleted file mode 100644 index 11a2d12b63..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/WXWsonTestModule.java +++ /dev/null @@ -1,101 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module; - -import android.util.Log; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.annotation.JSMethod; -import com.taobao.weex.bridge.JSCallback; -import com.taobao.weex.bridge.WXBridgeManager; -import com.taobao.weex.common.WXModule; -import com.taobao.weex.utils.WXWsonJSONSwitch; -import com.taobao.weex.wson.Wson; - -/** - * Created by furture on 2018/1/18. - */ - -public class WXWsonTestModule extends WXModule { - - @JSMethod(uiThread = false) - public boolean callPass(JSONObject params) { - if(params.get("refundId") != null){ - if(params.get("refundId").getClass() != Long.class){ - Log.e("Weex", "weex wson refundId failed case"); - return false; - } - return ((Long)params.get("refundId")) == 6419458776149741l; - } - - if(params.get("refundId2") != null){ - if(params.get("refundId2").getClass() != Long.class){ - Log.e("Weex", "weex wson refundId failed case"); - return false; - } - return ((Long)params.get("refundId2")) == 64194587761497416l; - } - - - - - return true; - } - - @JSMethod(uiThread = false) - public Object back(JSONObject params) { - JSONObject back = new JSONObject(params); - back.put("longMax", Long.MAX_VALUE); - back.put("longMin", Long.MIN_VALUE); - back.put("javaJSON", back.toJSONString()); - return back; - } - - @JSMethod(uiThread = false) - public void backAsync(JSONObject params, JSCallback callback) { - JSONObject back = new JSONObject(params); - back.put("longMax", Long.MAX_VALUE); - back.put("longMin", Long.MIN_VALUE); - back.put("javaJSON", back.toJSONString()); - callback.invoke(back); - } - - @JSMethod(uiThread = false) - public Object benchmark(JSONObject params) { - if(params == null){ - throw new RuntimeException("params is null"); - }//do nothing - return params; - } - - @JSMethod(uiThread = false) - public void switchTrans(JSCallback callback) { - if(WXWsonJSONSwitch.USE_WSON){ - WXBridgeManager.updateGlobalConfig("wson_off"); - callback.invoke("wson off, use json"); - }else{ - WXBridgeManager.updateGlobalConfig("wson_on"); - callback.invoke("wson on, use wson"); - } - } - - -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/DefaultLocation.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/DefaultLocation.java deleted file mode 100644 index 5b24defde4..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/DefaultLocation.java +++ /dev/null @@ -1,373 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module.location; - -import android.Manifest; -import android.content.Context; -import android.content.pm.PackageManager; -import android.location.Address; -import android.location.Criteria; -import android.location.Geocoder; -import android.location.Location; -import android.location.LocationListener; -import android.location.LocationManager; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.support.v4.app.ActivityCompat; -import android.text.TextUtils; - -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.bridge.SimpleJSCallback; -import com.taobao.weex.utils.WXLogUtils; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -public class DefaultLocation implements ILocatable { - - private static final String TAG = "DefaultLocation"; - private static final int TIME_OUT_WHAT = 0x11; - - private Map mRegisterSucCallbacks = new HashMap<>(); - private List mWXLocationListeners = new ArrayList<>(); - private WXSDKInstance mWXSDKInstance; - private LocationManager mLocationManager; - - private static final int GPS_TIMEOUT = 15000; - private int MIN_TIME = 20000; - private int MIN_DISTANCE = 5; - - public DefaultLocation(WXSDKInstance instance) { - mWXSDKInstance = instance; - } - - @Override - public void setWXSDKInstance(WXSDKInstance WXSDKInstance) { - mWXSDKInstance = WXSDKInstance; - } - - @Override - public void getCurrentPosition(final String successCallback, final String errorCallback, final String params) { - WXLogUtils.d(TAG, "into--[getCurrentPosition] successCallback:" + successCallback + " \nerrorCallback:" + errorCallback + " \nparams:" + params); - if (!TextUtils.isEmpty(params)) { - try { - JSONObject jsObj = new JSONObject(params); - boolean enableHighAccuracy = jsObj.optBoolean("enableHighAccuracy"); - boolean enableAddress = jsObj.optBoolean("address"); - WXLocationListener listener = findLocation(null, successCallback, errorCallback, enableHighAccuracy, enableAddress); - if (listener != null) { - mWXLocationListeners.add(listener); - } - return; - } catch (JSONException e) { - WXLogUtils.e(TAG, e); - } - } - Map options = new HashMap<>(); - options.put(ERROR_CODE, ErrorCode.PARAMS_ERROR); - options.put(ERROR_MSG, ErrorMsg.PARAMS_ERROR); - if (mWXSDKInstance != null) { - new SimpleJSCallback(mWXSDKInstance.getInstanceId(), errorCallback).invoke(options); - } - } - - private WXLocationListener findLocation(String watchId, String sucCallback, String errorCallback, boolean enableHighAccuracy, boolean enableAddress) { - WXLogUtils.d(TAG, "into--[findLocation] mWatchId:" + watchId + "\nsuccessCallback:" + sucCallback + "\nerrorCallback:" + errorCallback + "\nenableHighAccuracy:" + enableHighAccuracy + "\nmEnableAddress:" + enableAddress); - - if (mLocationManager == null) { - mLocationManager = (LocationManager) mWXSDKInstance.getContext().getSystemService(Context.LOCATION_SERVICE); - } - Criteria criteria = new Criteria(); - if (enableHighAccuracy) { - criteria.setAccuracy(Criteria.ACCURACY_COARSE); - } - //String provider = locationManager.getBestProvider(criteria, false); - if (ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - WXLocationListener WXLocationListener = new WXLocationListener(mLocationManager, mWXSDKInstance, watchId, sucCallback, errorCallback, enableAddress); - if (mLocationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER)) { - mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DISTANCE, WXLocationListener); - } - if (mLocationManager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER)) { - mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME, MIN_DISTANCE, WXLocationListener); - } - return WXLocationListener; - } else { - Map options = new HashMap<>(); - options.put(ERROR_CODE, ErrorCode.NO_PERMISSION_ERROR); - options.put(ERROR_MSG, ErrorMsg.NO_PERMISSION_ERROR); - if (mWXSDKInstance != null) { - new SimpleJSCallback(mWXSDKInstance.getInstanceId(), errorCallback).invoke(options); - } - } - return null; - } - - @Override - public void watchPosition(final String successCallback, final String errorCallback, final String params) { - if (WXEnvironment.isApkDebugable()){ - WXLogUtils.d("into--[watchPosition] successCallback:" + successCallback + " errorCallback:" + errorCallback + "\nparams:" + params); - } - if (!TextUtils.isEmpty(params)) { - try { - JSONObject jsObj = new JSONObject(params); - boolean enableHighAccuracy = jsObj.optBoolean("enableHighAccuracy"); - boolean enableAddress = jsObj.optBoolean("address"); - - String id = UUID.randomUUID().toString(); - WXLocationListener listener = findLocation(id, successCallback, errorCallback, enableHighAccuracy, enableAddress); - if (listener != null) { - mRegisterSucCallbacks.put(id, listener); - } - return; - } catch (JSONException e) { - WXLogUtils.e(TAG, e); - } - } - Map options = new HashMap<>(); - options.put(ERROR_CODE, ErrorCode.PARAMS_ERROR); - options.put(ERROR_MSG, ErrorMsg.PARAMS_ERROR); - if (mWXSDKInstance != null) { - new SimpleJSCallback(mWXSDKInstance.getInstanceId(), errorCallback).invoke(options); - } - } - - @Override - public void clearWatch(String watchId) { - WXLogUtils.d("into--[clearWatch] mWatchId:" + watchId); - if (mWXSDKInstance == null || mWXSDKInstance.isDestroy() || mLocationManager == null) { - return; - } - if (ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - WXLocationListener listener = mRegisterSucCallbacks.get(watchId); - if (listener != null) { - listener.destroy(); - mLocationManager.removeUpdates(listener); - } - mRegisterSucCallbacks.remove(watchId); - } - } - - @Override - public void destroy() { - WXLogUtils.d("into--[destroy]"); - if (mWXSDKInstance == null || mWXSDKInstance.isDestroy() || mLocationManager == null) { - return; - } - - if (mWXLocationListeners != null && mWXLocationListeners.size() > 0) { - if (ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - for (WXLocationListener listener : mWXLocationListeners) { - if (listener != null) { - listener.destroy(); - mLocationManager.removeUpdates(listener); - } - } - mWXLocationListeners.clear(); - } - } - - if (mRegisterSucCallbacks != null && mRegisterSucCallbacks.size() > 0) { - Collection values = mRegisterSucCallbacks.values(); - if (ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mWXSDKInstance.getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - for (WXLocationListener listener : values) { - listener.destroy(); - mLocationManager.removeUpdates(listener); - } - mRegisterSucCallbacks.clear(); - } - } - } - - static class WXLocationListener implements LocationListener, Handler.Callback { - - private Context mContext = null; - private String mWatchId; - private SimpleJSCallback mSucCallback = null; - private SimpleJSCallback mErrorCallback = null; - private boolean mEnableAddress; - private Handler mHandler; - private LocationManager mLocationManager; - - private WXLocationListener(LocationManager locationManager, WXSDKInstance instance, String watchId, String sucCallback, String errorCallback, boolean enableAddress) { - this.mWatchId = watchId; - if (instance != null) { - this.mSucCallback = new SimpleJSCallback(instance.getInstanceId(), sucCallback); - this.mErrorCallback = new SimpleJSCallback(instance.getInstanceId(), errorCallback); - mContext = instance.getContext(); - } - this.mEnableAddress = enableAddress; - mHandler = new Handler(this); - mLocationManager = locationManager; - mHandler.sendEmptyMessageDelayed(TIME_OUT_WHAT, GPS_TIMEOUT); - } - - @Override - public void onLocationChanged(Location location) { - mHandler.removeMessages(TIME_OUT_WHAT); - WXLogUtils.d(TAG, "into--[onLocationChanged] location:" + location == null ? "Location is NULL!" : location.toString()); - - if (location != null) { - Map result = new HashMap<>(); - Map coords = new HashMap<>(); - double longitude = location.getLongitude(); - double latitude = location.getLatitude(); - coords.put("longitude", longitude); - coords.put("latitude", latitude); - coords.put("altitude", location.getAltitude()); - coords.put("accuracy", location.getAccuracy()); - coords.put("heading", location.getBearing()); - coords.put("speed", location.getSpeed()); - result.put(COORDS, coords); - - // 行政区域 - if (mEnableAddress) { - Address addr = getAddress(latitude, longitude); - Map address = new HashMap<>(); - if (addr != null) { - address.put("country", addr.getCountryName()); - address.put("province", addr.getAdminArea()); - address.put("city", addr.getLocality()); - address.put("cityCode", addr.getPostalCode()); - address.put("area", addr.getSubLocality()); - address.put("road", addr.getThoroughfare()); - // 其中getAddressLine(0)表示国家,getAddressLine(1)表示精确到某个区,getAddressLine(2)表示精确到具体的街 - StringBuilder sb = new StringBuilder(); - for (int i = 1; i <= 2; i++) { - if (!TextUtils.isEmpty(addr.getAddressLine(i))) { //防止null导致的拼接错误 - sb.append(addr.getAddressLine(i)); - } - } - address.put("addressLine", sb.toString()); - } - result.put(ADDRESS, address); - } - result.put(ERROR_CODE, ErrorCode.SUCCESS); - result.put(ERROR_MSG, ErrorMsg.SUCCESS); - if (!TextUtils.isEmpty(mWatchId)) { - result.put(WATCH_ID, mWatchId); - } - - if (mSucCallback != null) { - boolean isKeepAlive = TextUtils.isEmpty(mWatchId) ? false : true; - if (isKeepAlive) { - mSucCallback.invokeAndKeepAlive(result); - } else { - mSucCallback.invoke(result); - } - } - } else { - Map options = new HashMap<>(); - options.put(ERROR_CODE, ErrorCode.LOCATION_ERROR); - options.put(ERROR_MSG, ErrorMsg.LOCATION_ERROR); - if (!TextUtils.isEmpty(mWatchId)) { - options.put(WATCH_ID, mWatchId); - } - if (mErrorCallback != null) { - boolean isKeepAlive = TextUtils.isEmpty(mWatchId) ? false : true; - if (isKeepAlive) { - mErrorCallback.invokeAndKeepAlive(options); - } else { - mErrorCallback.invoke(options); - } - } - } - if (TextUtils.isEmpty(mWatchId) && mContext != null) { - if (mLocationManager != null && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - destroy(); - mLocationManager.removeUpdates(this); - } - } - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) { - WXLogUtils.i(TAG, "into--[onStatusChanged] provider:" + provider + " status:" + status); - } - - @Override - public void onProviderEnabled(String provider) { - WXLogUtils.i(TAG, "into--[onProviderEnabled] provider:" + provider); - } - - @Override - public void onProviderDisabled(String provider) { - WXLogUtils.i(TAG, "into--[onProviderDisabled] provider:" + provider); - } - - @Override - public boolean handleMessage(Message msg) { - if (msg.what == TIME_OUT_WHAT) { - WXLogUtils.d(TAG, "into--[handleMessage] Location Time Out!"); - if (mContext == null || mLocationManager == null) { - return false; - } - if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - mLocationManager.removeUpdates(this); - } - Map options = new HashMap<>(); - options.put(ERROR_CODE, ErrorCode.LOCATION_TIME_OUT); - options.put(ERROR_MSG, ErrorMsg.LOCATION_TIME_OUT); - if (!TextUtils.isEmpty(mWatchId)) { - options.put(WATCH_ID, mWatchId); - } - if (mErrorCallback != null) { - mErrorCallback.invoke(options); - } - return true; - } - return false; - } - - /** - * get address info - */ - private Address getAddress(double latitude, double longitude) { - WXLogUtils.d(TAG, "into--[getAddress] latitude:" + latitude + " longitude:" + longitude); - try { - if (mContext == null) { - return null; - } - Geocoder gc = new Geocoder(mContext); - List
list = gc.getFromLocation(latitude, longitude, 1); - if (list != null && list.size() > 0) { - return list.get(0); - } - } catch (Exception e) { - WXLogUtils.e(TAG, e); - } - return null; - } - - public void destroy() { - if (mHandler != null) { - mHandler.removeMessages(TIME_OUT_WHAT); - mContext = null; - } - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/ILocatable.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/ILocatable.java deleted file mode 100644 index 09034e83ea..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/ILocatable.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module.location; - -import com.taobao.weex.WXSDKInstance; - -/** - */ -public interface ILocatable { - - int REQUEST_CUR_PERMISSION_CODE = 0x12; - int REQUEST_WATCH_PERMISSION_CODE = 0x13; - - - String REQUEST_PERMISSION_CODE = "requestCode"; - String ERROR_CODE = "errorCode"; - String ERROR_MSG = "errorMsg"; - String COORDS = "coords"; - String ADDRESS = "address"; - String WATCH_ID = "watchId"; - - interface ErrorCode { - - int SUCCESS = 90000; - int NO_PERMISSION_ERROR = 90001; - int PARAMS_ERROR = 90002; - int LOCATION_ERROR = 9003; - int LOCATION_TIME_OUT = 9004; - } - - interface ErrorMsg { - - String NO_PERMISSION_ERROR = "NO PERMISSION"; - String PARAMS_ERROR = "PARAMS_ERROR"; - String LOCATION_ERROR = "LOCATION_FAIL"; - String LOCATION_TIME_OUT = "LOCATION_TIME_OUT"; - String SUCCESS = "SUCCESS"; - - } - - /** - * Get current location information, the callback only once - * - * @param successCallback success callback function id. - * @param errorCallback error callback function id.(example:no persimmon) - * @param params JSON parameter(example:address). - */ - void getCurrentPosition(String successCallback, String errorCallback, String params); - - /** - * register global location listener,if location change,you will be notify. - * - * @param successCallback location success callback function id. - * @param errorCallback location error callback (example:no persimmon). - * @param params JSON parameter(example:address). - */ - void watchPosition(String successCallback, String errorCallback, String params); - - /** - * remove global location listener. - * - * @param watchId register id,you can get from watchPosition method。 - */ - void clearWatch(String watchId); - - /** - * set instance - * - * @param instance instance - */ - void setWXSDKInstance(WXSDKInstance instance); - - /** - * this method will call when module destroy. - */ - void destroy(); - -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/LocationFactory.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/LocationFactory.java deleted file mode 100644 index 055dfc93f0..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/module/location/LocationFactory.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.module.location; - -import com.taobao.weex.WXSDKInstance; - -/** - */ -public class LocationFactory { - - public static ILocatable getLocationProvider(WXSDKInstance context){ - return new DefaultLocation(context); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/extend/view/WXMaskView.java b/android/playground/app/src/main/java/com/alibaba/weex/extend/view/WXMaskView.java deleted file mode 100644 index 5ea766c480..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/extend/view/WXMaskView.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.extend.view; - -import android.content.Context; - -import com.taobao.weex.ui.view.WXFrameLayout; - -/** - * Created by lixinke on 2016/12/26. - */ - -public class WXMaskView extends WXFrameLayout { - - public WXMaskView(Context context) { - super(context); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/https/HotRefreshManager.java b/android/playground/app/src/main/java/com/alibaba/weex/https/HotRefreshManager.java deleted file mode 100644 index c220d9caf2..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/https/HotRefreshManager.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.https; - -import android.os.Handler; -import android.text.TextUtils; -import android.util.Log; - -import com.alibaba.weex.constants.Constants; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; -import com.squareup.okhttp.ws.WebSocket; -import com.squareup.okhttp.ws.WebSocketCall; -import com.squareup.okhttp.ws.WebSocketListener; - -import java.io.IOException; - -import okio.Buffer; -import okio.BufferedSource; - -/** - */ -public class HotRefreshManager { - - private static final String TAG = "HotRefreshManager"; - - private static HotRefreshManager hotRefreshInstance = new HotRefreshManager(); - private WebSocket mWebSocket = null; - private Handler mHandler = null; - - private HotRefreshManager() { - } - - public static HotRefreshManager getInstance() { - return hotRefreshInstance; - } - - public void setHandler(Handler handler) { - mHandler = handler; - } - - public boolean disConnect() { - if (mWebSocket != null) { - try { - mWebSocket.close(1000, "activity finish!"); - } catch (IOException e) { - e.printStackTrace(); - } - } - return true; - } - - public boolean connect(String url) { - OkHttpClient httpClient = new OkHttpClient(); - Request request = new Request.Builder().url(url).addHeader("sec-websocket-protocol", "echo-protocol").build(); - WebSocketCall.create(httpClient, request).enqueue(new WXWebSocketListener(url)); - - return true; - } - - class WXWebSocketListener implements WebSocketListener { - - private String mUrl; - - WXWebSocketListener(String url) { - mUrl = url; - } - - @Override - public void onOpen(WebSocket webSocket, Request request, Response response) throws IOException { - mWebSocket = webSocket; - } - - @Override - public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException { - if (type == WebSocket.PayloadType.TEXT) { - String temp = payload.readUtf8(); - Log.e(TAG, "into--[onMessage] msg:" + temp); - payload.close(); - - if (TextUtils.equals("refresh", temp) && mHandler != null) { - mHandler.obtainMessage(Constants.HOT_REFRESH_REFRESH, 0, 0, mUrl).sendToTarget(); - } - } - } - - @Override - public void onPong(Buffer payload) { - - } - - @Override - public void onClose(int code, String reason) { - mWebSocket = null; - } - - @Override - public void onFailure(IOException e) { - mWebSocket = null; - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpManager.java b/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpManager.java deleted file mode 100644 index a47bbb0430..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpManager.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.https; - -import android.os.Handler; -import android.os.Message; - -public class WXHttpManager { - - private static WXHttpManager wxHttpManager; - private WXOkHttpDispatcher mOkHttpDispatcher; - private Handler mHandler = new Handler(new Handler.Callback() { - - @Override - public boolean handleMessage(Message msg) { - WXHttpTask httpTask = (WXHttpTask) msg.obj; - if (httpTask == null || httpTask.requestListener == null) { - return true; - } - WXHttpResponse response = httpTask.response; - if (response == null || response.code >= 300) { - httpTask.requestListener.onError(httpTask); - } else { - httpTask.requestListener.onSuccess(httpTask); - } - return true; - } - }); - - private WXHttpManager() { - mOkHttpDispatcher = new WXOkHttpDispatcher(mHandler); - } - - public static WXHttpManager getInstance() { - if (wxHttpManager == null) { - wxHttpManager = new WXHttpManager(); - } - return wxHttpManager; - } - - public void sendRequest(WXHttpTask httpTask) { - mOkHttpDispatcher.dispatchSubmit(httpTask); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpResponse.java b/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpResponse.java deleted file mode 100644 index bcced314c5..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.https; - -public class WXHttpResponse { - - public int code; - public byte[] data; -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpTask.java b/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpTask.java deleted file mode 100644 index c1e05596b2..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/https/WXHttpTask.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.https; - -public class WXHttpTask { - - public String url; - public WXRequestListener requestListener; - public WXHttpResponse response; -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/https/WXOkHttpDispatcher.java b/android/playground/app/src/main/java/com/alibaba/weex/https/WXOkHttpDispatcher.java deleted file mode 100644 index 515a63ba73..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/https/WXOkHttpDispatcher.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.https; - -import android.os.Handler; -import android.os.HandlerThread; -import android.os.Looper; -import android.os.Message; - -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; - -import java.util.concurrent.TimeUnit; - -public class WXOkHttpDispatcher { - - static final int DEFAULT_READ_TIMEOUT_MILLIS = 20 * 1000; // 20s - static final int DEFAULT_WRITE_TIMEOUT_MILLIS = 20 * 1000; // 20s - static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 15 * 1000; // 15s - private static final int SUBMIT = 0x01; - private final OkHttpClient mOkHttpClient; - private final HandlerThread mDispatcherThread; - private Handler mUiHandler; - private DispatcherHandler mDispatcherHandler; - - public WXOkHttpDispatcher(Handler handler) { - mUiHandler = handler; - mOkHttpClient = defaultOkHttpClient(); - mDispatcherThread = new HandlerThread("dispatcherThread"); - mDispatcherThread.start(); - mDispatcherHandler = new DispatcherHandler(mDispatcherThread.getLooper(), mOkHttpClient, mUiHandler); - } - - private static OkHttpClient defaultOkHttpClient() { - OkHttpClient client = new OkHttpClient(); - client.setConnectTimeout(DEFAULT_CONNECT_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); - client.setReadTimeout(DEFAULT_READ_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); - client.setWriteTimeout(DEFAULT_WRITE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); - return client; - } - - public void dispatchSubmit(WXHttpTask task) { - mDispatcherHandler.sendMessage(mDispatcherHandler.obtainMessage(SUBMIT, task)); - } - - private static class DispatcherHandler extends Handler { - - private OkHttpClient mOkHttpClient; - private Handler mUiHandler; - - public DispatcherHandler(Looper looper, OkHttpClient okHttpClient, Handler handler) { - super(looper); - mOkHttpClient = okHttpClient; - mUiHandler = handler; - } - - @Override - public void handleMessage(Message msg) { - int what = msg.what; - - switch (what) { - case SUBMIT: { - WXHttpTask task = (WXHttpTask) msg.obj; - Request.Builder builder = new Request.Builder().header("User-Agent", "WeAppPlusPlayground/1.0").url(task.url); - WXHttpResponse httpResponse = new WXHttpResponse(); - try { - Response response = mOkHttpClient.newCall(builder.build()).execute(); - httpResponse.code = response.code(); - httpResponse.data = response.body().bytes(); - task.response = httpResponse; - mUiHandler.sendMessage(mUiHandler.obtainMessage(1, task)); - } catch (Throwable e) { - e.printStackTrace(); - httpResponse.code = 1000; - mUiHandler.sendMessage(mUiHandler.obtainMessage(1, task)); - } - } - break; - - default: - break; - } - } - - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/https/WXRequestListener.java b/android/playground/app/src/main/java/com/alibaba/weex/https/WXRequestListener.java deleted file mode 100644 index 933eb11ff8..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/https/WXRequestListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.https; - -public interface WXRequestListener { - - void onSuccess(WXHttpTask task); - - void onError(WXHttpTask task); -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/update/CheckForUpdateUtil.java b/android/playground/app/src/main/java/com/alibaba/weex/update/CheckForUpdateUtil.java deleted file mode 100644 index 6bb0d845b8..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/update/CheckForUpdateUtil.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.update; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.adapter.IWXHttpAdapter; -import com.taobao.weex.common.WXRequest; -import com.taobao.weex.common.WXResponse; -import com.taobao.weex.utils.WXLogUtils; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.net.URL; -import java.util.List; -import java.util.Map; - -/** - * Created by moxun on 2018/3/9. - */ - -public class CheckForUpdateUtil { - public static void checkForUpdate(final Context context) { - PackageManager pm = context.getPackageManager(); - try { - PackageInfo info = pm.getPackageInfo(context.getPackageName(), 0); - if (info != null) { - int versionCode = info.versionCode; - String updateUrl = "http://dotwe.org/release/latest?v=" + versionCode; - WXRequest request = new WXRequest(); - request.method = "GET"; - request.url = updateUrl; - WXLogUtils.d("Update", "check for update: " + versionCode); - WXSDKManager.getInstance().getIWXHttpAdapter().sendRequest(request, new IWXHttpAdapter.OnHttpListener() { - @Override - public void onHttpStart() { - - } - - @Override - public void onHeadersReceived(int statusCode, Map> headers) { - - } - - @Override - public void onHttpUploadProgress(int uploadProgress) { - - } - - @Override - public void onHttpResponseProgress(int loadedLength) { - - } - - @Override - public void onHttpFinish(final WXResponse response) { - if (!response.statusCode.equals("200")) { - WXLogUtils.e("Update", "failed: " + response.statusCode); - return; - } - WXSDKManager.getInstance().getWXRenderManager().postOnUiThread(new Runnable() { - @Override - public void run() { - String s = new String(response.originalData); - if (!TextUtils.isEmpty(s)) { - try { - WXLogUtils.d("Update", s); - JSONObject object = new JSONObject(s); - JSONObject params = object.optJSONObject("params"); - if (params != null) { - boolean hasUpdate = params.optBoolean("hasUpdate", false); - if (hasUpdate) { - String version = params.optString("version", "latest"); - String updateDate = params.optString("updateDate", ""); - final String updateUrl = params.optString("updateUrl", ""); - - try { - new URL(updateUrl); - } catch (Throwable t) { - WXLogUtils.e("Update", "Invalid update url"); - return; - } - - String updateDescription = params.optString("updateDescription", null); - - AlertDialog.Builder builder = new AlertDialog.Builder(context); - - View view = LayoutInflater.from(context).inflate(R.layout.common_update_notify_dialog, null); - TextView textView = (TextView) view.findViewById(R.id.common_update_dialog_msg); - textView.setText(getMsg(version, updateDate, updateDescription)); - builder.setCancelable(false) - .setView(view) - .setPositiveButton(R.string.update_now, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - UpdateService.startActionUpdate(context, updateUrl); - dialog.dismiss(); - } - }); - - builder.setNegativeButton(R.string.update_remind_later, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }); - - builder.create().show(); - } - } - } catch (JSONException e) { - e.printStackTrace(); - } - } - } - }, 0); - } - }); - } - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - } - - private static String getMsg(String v, String date, String desc) { - StringBuilder sb = new StringBuilder(); - sb.append(getStringRes(R.string.update_version)).append(v).append("\n") - .append(getStringRes(R.string.update_date)).append(date).append("\n") - .append(getStringRes(R.string.update_desc)).append(desc); - return sb.toString(); - } - - public static String getStringRes(int id) { - if (WXEnvironment.getApplication() != null) { - return WXEnvironment.getApplication().getString(id); - } - return ""; - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/update/Downloader.java b/android/playground/app/src/main/java/com/alibaba/weex/update/Downloader.java deleted file mode 100644 index 48675f6e33..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/update/Downloader.java +++ /dev/null @@ -1,130 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.update; - -import com.squareup.okhttp.Callback; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.utils.WXLogUtils; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - -/** - * Created by moxun on 2018/3/9. - */ - -public class Downloader { - - public static void download(String url, final DownloadCallback callback) { - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder() - .url(url) - .get() - .build(); - - client.newCall(request).enqueue(new Callback() { - @Override - public void onFailure(Request request, IOException e) { - callback.onError(e); - } - - @Override - public void onResponse(Response response) throws IOException { - callback.handleResponse(response); - } - }); - } - - public abstract static class DownloadCallback { - private String destDirPath; - private String destFileName; - - public abstract void onProgress(float progress); - - public abstract void onResponse(File file); - - public abstract void onError(Exception e); - - public DownloadCallback(String destDirPath, String destFileName) { - this.destDirPath = destDirPath; - this.destFileName = destFileName; - } - - private void handleResponse(Response response) throws IOException { - final File file = saveToFile(response); - if (file != null && file.exists() && file.length() > 0) { - runOnUiThread(new Runnable() { - @Override - public void run() { - onResponse(file); - } - }); - } else { - onError(new RuntimeException("Failed to save file")); - } - } - - private File saveToFile(Response response) throws IOException { - InputStream is = null; - byte[] buf = new byte[40960]; - int len = 0; - FileOutputStream fos = null; - try { - is = response.body().byteStream(); - final long total = response.body().contentLength(); - long sum = 0; - - WXLogUtils.e(total + ""); - - File dir = new File(destDirPath); - if (!dir.exists()) { - dir.mkdirs(); - } - File file = new File(dir, destFileName); - fos = new FileOutputStream(file); - while ((len = is.read(buf)) != -1) { - sum += len; - fos.write(buf, 0, len); - final long finalSum = sum; - - runOnUiThread(new Runnable() { - @Override - public void run() { - onProgress(finalSum * 1.0f / total); - } - }); - } - fos.flush(); - return file; - } finally { - if (is != null) is.close(); - if (fos != null) fos.close(); - } - } - - private void runOnUiThread(Runnable task) { - WXSDKManager.getInstance().getWXRenderManager().postOnUiThread(task, 0); - } - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/update/UpdateService.java b/android/playground/app/src/main/java/com/alibaba/weex/update/UpdateService.java deleted file mode 100644 index 8e024e0308..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/update/UpdateService.java +++ /dev/null @@ -1,126 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package com.alibaba.weex.update; - -import android.app.IntentService; -import android.app.Notification; -import android.app.NotificationManager; -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.os.Build; -import android.support.v4.content.FileProvider; -import android.support.v7.app.NotificationCompat; -import android.widget.Toast; - -import com.alibaba.weex.BuildConfig; -import com.alibaba.weex.R; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKManager; -import com.taobao.weex.utils.WXLogUtils; - -import java.io.File; - -public class UpdateService extends IntentService { - - private static final String ACTION_UPDATE = "com.taobao.weex.service.action.UPDATE"; - private static final String EXTRA_URL = "com.taobao.weex.service.extra.URL"; - private final int NOTIFY_ID = 10006024; - - private NotificationManager manager; - private NotificationCompat.Builder builder; - - public static void startActionUpdate(Context context, String url) { - Intent intent = new Intent(context, UpdateService.class); - intent.setAction(ACTION_UPDATE); - intent.putExtra(EXTRA_URL, url); - context.startService(intent); - } - - public UpdateService() { - super("UpdateService"); - } - - @Override - protected void onHandleIntent(Intent intent) { - if (intent != null) { - final String action = intent.getAction(); - if (ACTION_UPDATE.equals(action)) { - final String url = intent.getStringExtra(EXTRA_URL); - handleActionUpdate(url); - } - } - } - - private void handleActionUpdate(String url) { - manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); - builder = new NotificationCompat.Builder(this); - builder.setContentTitle(CheckForUpdateUtil.getStringRes(R.string.update_downloading)) - .setContentText(CheckForUpdateUtil.getStringRes(R.string.update_progress) + " 0%") - .setTicker(CheckForUpdateUtil.getStringRes(R.string.update_downloading)) - .setWhen(System.currentTimeMillis()) - .setPriority(Notification.PRIORITY_DEFAULT) - .setSmallIcon(R.mipmap.ic_launcher) - .setProgress(100, 0, false); - manager.notify(NOTIFY_ID, builder.build()); - - WXLogUtils.e("Update", "start download"); - Downloader.download(url, new Downloader.DownloadCallback(getCacheDir().getAbsolutePath(), "playground.apk") { - - @Override - public void onProgress(float progress) { - if (progress * 100 - progress >= 1) { - int p = (int) (progress * 100); - builder.setContentText(CheckForUpdateUtil.getStringRes(R.string.update_progress) + p + "%"); - builder.setProgress(100, p, false); - manager.notify(NOTIFY_ID, builder.build()); - WXLogUtils.d("Update", "progress:" + p); - } - } - - @Override - public void onResponse(File file) { - WXLogUtils.d("Update", "success: " + file.getAbsolutePath()); - manager.cancel(NOTIFY_ID); - Uri uri = Uri.fromFile(file); - Intent installIntent = new Intent(Intent.ACTION_VIEW); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - installIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - Uri contentUri = FileProvider.getUriForFile(WXEnvironment.getApplication(), BuildConfig.APPLICATION_ID + ".fileprovider", file); - installIntent.setDataAndType(contentUri, "application/vnd.android.package-archive"); - } else { - installIntent.setDataAndType(uri, "application/vnd.android.package-archive"); - installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - } - startActivity(installIntent); - } - - @Override - public void onError(final Exception e) { - WXSDKManager.getInstance().getWXRenderManager().postOnUiThread(new Runnable() { - @Override - public void run() { - Toast.makeText(UpdateService.this, "Failed to update:" + e.getMessage(), Toast.LENGTH_SHORT).show(); - } - }, 0); - } - }); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/util/CoverageDataDumper.java b/android/playground/app/src/main/java/com/alibaba/weex/util/CoverageDataDumper.java deleted file mode 100644 index adc04766f0..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/util/CoverageDataDumper.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex.util; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; - -import com.taobao.weex.utils.WXLogUtils; - -import java.io.File; - -public class CoverageDataDumper extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { -// JacocoCodeCoverage.dumpCodeCoverage(context); - JacocoCodeCoverage.dumpCodeCoverageByJacoco(context); - } -} diff --git a/android/playground/app/src/main/java/com/alibaba/weex/util/JacocoCodeCoverage.java b/android/playground/app/src/main/java/com/alibaba/weex/util/JacocoCodeCoverage.java deleted file mode 100644 index bcef8561de..0000000000 --- a/android/playground/app/src/main/java/com/alibaba/weex/util/JacocoCodeCoverage.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.alibaba.weex.util; - -import android.content.Context; -import android.util.Log; - -import com.taobao.weex.utils.WXLogUtils; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.lang.reflect.InvocationTargetException; - -public class JacocoCodeCoverage { - public static final String TAG = "CoverageDataDumper"; - - public static void dumpCodeCoverage(Context context){ - - WXLogUtils.d( TAG, "CoverageDataDumper BroadcastReceiver " ); - - try { - Class - .forName( "com.vladium.emma.rt.RT" ) - .getMethod( "dumpCoverageData", File.class, boolean.class, boolean.class ) - .invoke( null, - new File(context.getExternalFilesDir( null ) + "/coverage.ec" ), - true, // merge - false // stopDataCollection - ); - WXLogUtils.d( TAG, "generateCoverageReport: ok! " + - "file in [Android/data/com.alibaba.weex/files]" ); - } - - catch ( Exception e ) { - WXLogUtils.e( TAG, e ); - } - } - - public static void dumpCodeCoverageByJacoco(Context context){ - - WXLogUtils.d(TAG, "generateCoverageReport()"); - - java.io.File coverageFile = new File(context.getExternalFilesDir( null ) + "/coverage.ec"); - OutputStream out = null; - // We may use this if we want to avoid refecltion and we include - // emma.jar - //RT.dumpCoverageData(coverageFile, false, false); - // Use reflection to call emma dump coverage method, to avoid - // always statically compiling against emma jar - try { - Object agent = Class.forName("org.jacoco.agent.rt.RT") - .getMethod("getAgent") - .invoke(null); - out = new FileOutputStream(coverageFile,false); - out.write((byte[]) agent.getClass().getMethod("getExecutionData", boolean.class) - .invoke(agent, false)); - WXLogUtils.d( TAG, "generateCoverageReport: ok! " + - "file in [Android/data/com.alibaba.weex/files]" ); - - } catch (Exception e) { - Log.e(TAG, e.toString()); - } finally { - if (out != null) { - try { - out.close(); - } catch (IOException e) { - Log.e(TAG, e.getMessage().toString()); - } - } - } - } -} - - diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/AmbientLightManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/AmbientLightManager.java deleted file mode 100755 index cc4e405b4b..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/AmbientLightManager.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.content.Context; -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.preference.PreferenceManager; - -import com.google.zxing.client.android.camera.CameraManager; -import com.google.zxing.client.android.camera.FrontLightMode; - -/** - * Detects ambient light and switches on the front light when very dark, and off again when sufficiently light. - * - * @author Sean Owen - * @author Nikolaus Huber - */ -final class AmbientLightManager implements SensorEventListener { - - private static final float TOO_DARK_LUX = 45.0f; - private static final float BRIGHT_ENOUGH_LUX = 450.0f; - - private final Context context; - private CameraManager cameraManager; - private Sensor lightSensor; - - AmbientLightManager(Context context) { - this.context = context; - } - - void start(CameraManager cameraManager) { - this.cameraManager = cameraManager; - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); - if (FrontLightMode.readPref(sharedPrefs) == FrontLightMode.AUTO) { - SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); - lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); - if (lightSensor != null) { - sensorManager.registerListener(this, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); - } - } - } - - void stop() { - if (lightSensor != null) { - SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); - sensorManager.unregisterListener(this); - cameraManager = null; - lightSensor = null; - } - } - - @Override - public void onSensorChanged(SensorEvent sensorEvent) { - float ambientLightLux = sensorEvent.values[0]; - if (cameraManager != null) { - if (ambientLightLux <= TOO_DARK_LUX) { - cameraManager.setTorch(true); - } else if (ambientLightLux >= BRIGHT_ENOUGH_LUX) { - cameraManager.setTorch(false); - } - } - } - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) { - // do nothing - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/BeepManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/BeepManager.java deleted file mode 100755 index 7cf7467b76..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/BeepManager.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.app.Activity; -import android.content.Context; -import android.content.SharedPreferences; -import android.content.res.AssetFileDescriptor; -import android.media.AudioManager; -import android.media.MediaPlayer; -import android.os.Vibrator; -import android.preference.PreferenceManager; -import android.util.Log; - -import com.alibaba.weex.R; - -import java.io.Closeable; -import java.io.IOException; - - -/** - * Manages beeps and vibrations for {@link CaptureActivity}. - */ -final class BeepManager implements MediaPlayer.OnErrorListener, Closeable { - - private static final String TAG = BeepManager.class.getSimpleName(); - - private static final float BEEP_VOLUME = 0.10f; - private static final long VIBRATE_DURATION = 200L; - - private final Activity activity; - private MediaPlayer mediaPlayer; - private boolean playBeep; - private boolean vibrate; - - BeepManager(Activity activity) { - this.activity = activity; - this.mediaPlayer = null; - updatePrefs(); - } - - synchronized void updatePrefs() { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); - playBeep = shouldBeep(prefs, activity); - vibrate = prefs.getBoolean(PreferencesActivity.KEY_VIBRATE, false); - if (playBeep && mediaPlayer == null) { - // The volume on STREAM_SYSTEM is not adjustable, and users found it too loud, - // so we now play on the music stream. - activity.setVolumeControlStream(AudioManager.STREAM_MUSIC); - mediaPlayer = buildMediaPlayer(activity); - } - } - - synchronized void playBeepSoundAndVibrate() { - if (playBeep && mediaPlayer != null) { - mediaPlayer.start(); - } - if (vibrate) { - Vibrator vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE); - vibrator.vibrate(VIBRATE_DURATION); - } - } - - private static boolean shouldBeep(SharedPreferences prefs, Context activity) { - boolean shouldPlayBeep = prefs.getBoolean(PreferencesActivity.KEY_PLAY_BEEP, true); - if (shouldPlayBeep) { - // See if sound settings overrides this - AudioManager audioService = (AudioManager) activity.getSystemService(Context.AUDIO_SERVICE); - if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) { - shouldPlayBeep = false; - } - } - return shouldPlayBeep; - } - - private MediaPlayer buildMediaPlayer(Context activity) { - MediaPlayer mediaPlayer = new MediaPlayer(); - try { - AssetFileDescriptor file = activity.getResources().openRawResourceFd(R.raw.beep); - try { - mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength()); - } finally { - file.close(); - } - mediaPlayer.setOnErrorListener(this); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.setLooping(false); - mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME); - mediaPlayer.prepare(); - return mediaPlayer; - } catch (IOException ioe) { - Log.w(TAG, ioe); - mediaPlayer.release(); - return null; - } - } - - @Override - public synchronized boolean onError(MediaPlayer mp, int what, int extra) { - if (what == MediaPlayer.MEDIA_ERROR_SERVER_DIED) { - // we are finished, so put up an appropriate error toast if required and finish - activity.finish(); - } else { - // possibly media player error, so release and recreate - close(); - updatePrefs(); - } - return true; - } - - @Override - public synchronized void close() { - if (mediaPlayer != null) { - mediaPlayer.release(); - mediaPlayer = null; - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/CaptureActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/CaptureActivity.java deleted file mode 100755 index 1170348427..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/CaptureActivity.java +++ /dev/null @@ -1,780 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.ActivityInfo; -import android.content.res.Configuration; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.preference.PreferenceManager; -import android.text.TextUtils; -import android.util.Log; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; -import android.widget.TextView; -import android.widget.Toast; - -import com.alibaba.weex.R; -import com.alibaba.weex.WXPageActivity; -import com.alibaba.weex.WXPreLoadManager; -import com.alibaba.weex.constants.Constants; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.DecodeHintType; -import com.google.zxing.Result; -import com.google.zxing.ResultMetadataType; -import com.google.zxing.ResultPoint; -import com.google.zxing.client.android.camera.CameraManager; -import com.google.zxing.client.android.clipboard.ClipboardInterface; -import com.google.zxing.client.android.history.HistoryActivity; -import com.google.zxing.client.android.history.HistoryItem; -import com.google.zxing.client.android.history.HistoryManager; -import com.google.zxing.client.android.result.ResultHandler; -import com.google.zxing.client.android.result.ResultHandlerFactory; -import com.taobao.weex.WXEnvironment; -import com.taobao.weex.WXSDKEngine; - -import java.io.IOException; -import java.util.Collection; -import java.util.EnumSet; -import java.util.Map; - - -/** - * This activity opens the camera and does the actual scanning on a background - * thread. It draws a viewfinder to help the user place the barcode correctly, - * shows feedback as the image processing is happening, and then overlays the - * results when a scan is successful. - * - * @author dswitkin@google.com (Daniel Switkin) - * @author Sean Owen - */ -public final class CaptureActivity extends Activity implements - SurfaceHolder.Callback { - - private static final String TAG = CaptureActivity.class.getSimpleName(); - - private static final long DEFAULT_INTENT_RESULT_DURATION_MS = 1500L; - private static final long BULK_MODE_SCAN_DELAY_MS = 1000L; - - private static final String[] ZXING_URLS = { - "http://zxing.appspot.com/scan", "zxing://scan/" }; - - public static final int HISTORY_REQUEST_CODE = 0x0000bacc; - - private static final Collection DISPLAYABLE_METADATA_TYPES = EnumSet - .of(ResultMetadataType.ISSUE_NUMBER, - ResultMetadataType.SUGGESTED_PRICE, - ResultMetadataType.ERROR_CORRECTION_LEVEL, - ResultMetadataType.POSSIBLE_COUNTRY); - - private CameraManager cameraManager; - private CaptureActivityHandler handler; - private Result savedResultToShow; - private ViewfinderView viewfinderView; - private TextView statusView; - private View resultView; - private Result lastResult; - private boolean hasSurface; - private boolean copyToClipboard; - private IntentSource source; - private String sourceUrl; - private ScanFromWebPageManager scanFromWebPageManager; - private Collection decodeFormats; - private Map decodeHints; - private String characterSet; - private HistoryManager historyManager; - private InactivityTimer inactivityTimer; - private BeepManager beepManager; - private AmbientLightManager ambientLightManager; - - ViewfinderView getViewfinderView() { - return viewfinderView; - } - - public Handler getHandler() { - return handler; - } - - CameraManager getCameraManager() { - return cameraManager; - } - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - Window window = getWindow(); - window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - setContentView(R.layout.capture); - - hasSurface = false; - inactivityTimer = new InactivityTimer(this); - beepManager = new BeepManager(this); - ambientLightManager = new AmbientLightManager(this); - - PreferenceManager.setDefaultValues(this, R.xml.preferences, false); - - if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } else { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - } - } - - @Override - protected void onResume() { - super.onResume(); - - // historyManager must be initialized here to update the history - // preference - historyManager = new HistoryManager(this); - historyManager.trimHistory(); - - // CameraManager must be initialized here, not in onCreate(). This is - // necessary because we don't - // want to open the camera driver and measure the screen size if we're - // going to show the help on - // first launch. That led to bugs where the scanning rectangle was the - // wrong size and partially - // off screen. - cameraManager = new CameraManager(getApplication()); - - viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view); - viewfinderView.setCameraManager(cameraManager); - - resultView = findViewById(R.id.result_view); - statusView = (TextView) findViewById(R.id.status_view); - - handler = null; - lastResult = null; - - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(this); - -// if (prefs.getBoolean(PreferencesActivity.KEY_DISABLE_AUTO_ORIENTATION, -// true)) { -// setRequestedOrientation(getCurrentOrientation()); -// } else { -// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); -// } - - resetStatusView(); - - beepManager.updatePrefs(); - ambientLightManager.start(cameraManager); - - inactivityTimer.onResume(); - - Intent intent = getIntent(); - - copyToClipboard = prefs.getBoolean( - PreferencesActivity.KEY_COPY_TO_CLIPBOARD, true) - && (intent == null || intent.getBooleanExtra( - Intents.Scan.SAVE_HISTORY, true)); - - source = IntentSource.NONE; - sourceUrl = null; - scanFromWebPageManager = null; - decodeFormats = null; - characterSet = null; - - if (intent != null) { - - String action = intent.getAction(); - String dataString = intent.getDataString(); - - if (Intents.Scan.ACTION.equals(action)) { - - // Scan the formats the intent requested, and return the result - // to the calling activity. - source = IntentSource.NATIVE_APP_INTENT; - decodeFormats = DecodeFormatManager.parseDecodeFormats(intent); - decodeHints = DecodeHintManager.parseDecodeHints(intent); - - if (intent.hasExtra(Intents.Scan.WIDTH) - && intent.hasExtra(Intents.Scan.HEIGHT)) { - int width = intent.getIntExtra(Intents.Scan.WIDTH, 0); - int height = intent.getIntExtra(Intents.Scan.HEIGHT, 0); - if (width > 0 && height > 0) { - cameraManager.setManualFramingRect(width, height); - } - } - - if (intent.hasExtra(Intents.Scan.CAMERA_ID)) { - int cameraId = intent.getIntExtra(Intents.Scan.CAMERA_ID, - -1); - if (cameraId >= 0) { - cameraManager.setManualCameraId(cameraId); - } - } - - String customPromptMessage = intent - .getStringExtra(Intents.Scan.PROMPT_MESSAGE); - if (customPromptMessage != null) { - statusView.setText(customPromptMessage); - } - - } else if (dataString != null - && dataString.contains("http://www.google") - && dataString.contains("/m/products/scan")) { - - // Scan only products and send the result to mobile Product - // Search. - source = IntentSource.PRODUCT_SEARCH_LINK; - sourceUrl = dataString; - decodeFormats = DecodeFormatManager.PRODUCT_FORMATS; - - } else if (isZXingURL(dataString)) { - - // Scan formats requested in query string (all formats if none - // specified). - // If a return URL is specified, send the results there. - // Otherwise, handle it ourselves. - source = IntentSource.ZXING_LINK; - sourceUrl = dataString; - Uri inputUri = Uri.parse(dataString); - scanFromWebPageManager = new ScanFromWebPageManager(inputUri); - decodeFormats = DecodeFormatManager - .parseDecodeFormats(inputUri); - // Allow a sub-set of the hints to be specified by the caller. - decodeHints = DecodeHintManager.parseDecodeHints(inputUri); - - } - - characterSet = intent.getStringExtra(Intents.Scan.CHARACTER_SET); - - } - - SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view); - SurfaceHolder surfaceHolder = surfaceView.getHolder(); - if (hasSurface) { - // The activity was paused but not stopped, so the surface still - // exists. Therefore - // surfaceCreated() won't be called, so init the camera here. - initCamera(surfaceHolder); - } else { - // Install the callback and wait for surfaceCreated() to init the - // camera. - surfaceHolder.addCallback(this); - } - } - - private int getCurrentOrientation() { - int rotation = getWindowManager().getDefaultDisplay().getRotation(); - if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { - switch (rotation) { - case Surface.ROTATION_0: - case Surface.ROTATION_90: - return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; - default: - return ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE; - } - } else { - switch (rotation) { - case Surface.ROTATION_0: - case Surface.ROTATION_270: - return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; - default: - return ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT; - } - } - } - - private static boolean isZXingURL(String dataString) { - if (dataString == null) { - return false; - } - for (String url : ZXING_URLS) { - if (dataString.startsWith(url)) { - return true; - } - } - return false; - } - - @Override - protected void onPause() { - if (handler != null) { - handler.quitSynchronously(); - handler = null; - } - inactivityTimer.onPause(); - ambientLightManager.stop(); - beepManager.close(); - cameraManager.closeDriver(); - // historyManager = null; // Keep for onActivityResult - if (!hasSurface) { - SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view); - SurfaceHolder surfaceHolder = surfaceView.getHolder(); - surfaceHolder.removeCallback(this); - } - super.onPause(); - } - - @Override - protected void onDestroy() { - inactivityTimer.shutdown(); - super.onDestroy(); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - switch (keyCode) { - case KeyEvent.KEYCODE_BACK: - if (source == IntentSource.NATIVE_APP_INTENT) { - setResult(RESULT_CANCELED); - finish(); - return true; - } - if ((source == IntentSource.NONE || source == IntentSource.ZXING_LINK) - && lastResult != null) { - restartPreviewAfterDelay(0L); - return true; - } - break; - case KeyEvent.KEYCODE_FOCUS: - case KeyEvent.KEYCODE_CAMERA: - // Handle these events so they don't launch the Camera app - return true; - // Use volume up/down to turn on light - case KeyEvent.KEYCODE_VOLUME_DOWN: - cameraManager.setTorch(false); - return true; - case KeyEvent.KEYCODE_VOLUME_UP: - cameraManager.setTorch(true); - return true; - } - return super.onKeyDown(keyCode, event); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater menuInflater = getMenuInflater(); - menuInflater.inflate(R.menu.capture, menu); - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - int i = item.getItemId(); - if (i == R.id.menu_history) { - intent.setClassName(this, HistoryActivity.class.getName()); - startActivityForResult(intent, HISTORY_REQUEST_CODE); - - // case R.id.menu_settings: - // intent.setClassName(this, PreferencesActivity.class.getName()); - // startActivity(intent); - // break; - // case R.id.menu_help: - // intent.setClassName(this, HelpActivity.class.getName()); - // startActivity(intent); - // break; - } else { - return super.onOptionsItemSelected(item); - } - return true; - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent intent) { - if (resultCode == RESULT_OK && requestCode == HISTORY_REQUEST_CODE - && historyManager != null) { - int itemNumber = intent - .getIntExtra(Intents.History.ITEM_NUMBER, -1); - if (itemNumber >= 0) { - HistoryItem historyItem = historyManager - .buildHistoryItem(itemNumber); - decodeOrStoreSavedBitmap(null, historyItem.getResult()); - } - } - } - - private void decodeOrStoreSavedBitmap(Bitmap bitmap, Result result) { - // Bitmap isn't used yet -- will be used soon - if (handler == null) { - savedResultToShow = result; - } else { - if (result != null) { - savedResultToShow = result; - } - if (savedResultToShow != null) { - Message message = Message.obtain(handler, - R.id.decode_succeeded, savedResultToShow); - handler.sendMessage(message); - } - savedResultToShow = null; - } - } - - @Override - public void surfaceCreated(SurfaceHolder holder) { - if (holder == null) { - Log.e(TAG, - "*** WARNING *** surfaceCreated() gave us a null surface!"); - } - if (!hasSurface) { - hasSurface = true; - initCamera(holder); - } - } - - @Override - public void surfaceDestroyed(SurfaceHolder holder) { - hasSurface = false; - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int width, - int height) { - - } - - /** - * A valid barcode has been found, so give an indication of success and show - * the results. - * - * @param rawResult - * The contents of the barcode. - * @param scaleFactor - * amount by which thumbnail was scaled - * @param barcode - * A greyscale bitmap of the camera data which was decoded. - */ - public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) { - inactivityTimer.onActivity(); - lastResult = rawResult; - ResultHandler resultHandler = ResultHandlerFactory.makeResultHandler( - this, rawResult); - - boolean fromLiveScan = barcode != null; - if (fromLiveScan) { - historyManager.addHistoryItem(rawResult, resultHandler); - // Then not from history, so beep/vibrate and we have an image to - // draw on - beepManager.playBeepSoundAndVibrate(); - drawResultPoints(barcode, scaleFactor, rawResult); - } - - switch (source) { - case NATIVE_APP_INTENT: - case PRODUCT_SEARCH_LINK: - handleDecodeExternally(rawResult, resultHandler, barcode); - break; - case ZXING_LINK: - if (scanFromWebPageManager == null - || !scanFromWebPageManager.isScanFromWebPage()) { - handleDecodeInternally(rawResult, resultHandler, barcode); - } else { - handleDecodeExternally(rawResult, resultHandler, barcode); - } - break; - case NONE: - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(this); - if (fromLiveScan - && prefs.getBoolean(PreferencesActivity.KEY_BULK_MODE, - false)) { - Toast.makeText( - getApplicationContext(), - getResources() - .getString(R.string.msg_bulk_mode_scanned) - + " (" + rawResult.getText() + ')', - Toast.LENGTH_SHORT).show(); - // Wait a moment or else it will scan the same barcode - // continuously about 3 times - restartPreviewAfterDelay(BULK_MODE_SCAN_DELAY_MS); - } else { - handleDecodeInternally(rawResult, resultHandler, barcode); - } - break; - } - } - - /** - * Superimpose a line for 1D or dots for 2D to highlight the key features of - * the barcode. - * - * @param barcode - * A bitmap of the captured image. - * @param scaleFactor - * amount by which thumbnail was scaled - * @param rawResult - * The decoded results which contains the points to draw. - */ - private void drawResultPoints(Bitmap barcode, float scaleFactor, - Result rawResult) { - ResultPoint[] points = rawResult.getResultPoints(); - if (points != null && points.length > 0) { - Canvas canvas = new Canvas(barcode); - Paint paint = new Paint(); - paint.setColor(getResources().getColor(R.color.result_points)); - if (points.length == 2) { - paint.setStrokeWidth(4.0f); - drawLine(canvas, paint, points[0], points[1], scaleFactor); - } else if (points.length == 4 - && (rawResult.getBarcodeFormat() == BarcodeFormat.UPC_A || rawResult - .getBarcodeFormat() == BarcodeFormat.EAN_13)) { - // Hacky special case -- draw two lines, for the barcode and - // metadata - drawLine(canvas, paint, points[0], points[1], scaleFactor); - drawLine(canvas, paint, points[2], points[3], scaleFactor); - } else { - paint.setStrokeWidth(10.0f); - for (ResultPoint point : points) { - if (point != null) { - canvas.drawPoint(scaleFactor * point.getX(), - scaleFactor * point.getY(), paint); - } - } - } - } - } - - private static void drawLine(Canvas canvas, Paint paint, ResultPoint a, - ResultPoint b, float scaleFactor) { - if (a != null && b != null) { - canvas.drawLine(scaleFactor * a.getX(), scaleFactor * a.getY(), - scaleFactor * b.getX(), scaleFactor * b.getY(), paint); - } - } - - // Put up our own UI for how to handle the decoded contents. - private void handleDecodeInternally(Result rawResult, ResultHandler resultHandler, Bitmap barcode) { - String code = rawResult.getText(); - if (!TextUtils.isEmpty(code)) { - Uri uri = Uri.parse(code); - if (uri.getPath().contains("dynamic/replace")) { - Intent intent = new Intent("weex.intent.action.dynamic", uri); - intent.addCategory("weex.intent.category.dynamic"); - startActivity(intent); - finish(); - } else if (uri.getQueryParameterNames().contains("_wx_devtool")) { - WXEnvironment.sRemoteDebugProxyUrl = uri.getQueryParameter("_wx_devtool"); - WXEnvironment.sDebugServerConnectable = true; - WXSDKEngine.reload(); - Toast.makeText(this, "devtool", Toast.LENGTH_SHORT).show(); - finish(); - return; - } else { - String urlData = uri.getQueryParameter(Constants.WEEX_TPL_KEY); - if (TextUtils.isEmpty(urlData)){ - urlData = code; - } - Log.d("test->", "before nav activity "); - - WXPreLoadManager.getInstance().preLoad(urlData); - Toast.makeText(this, rawResult.getText(), Toast.LENGTH_SHORT).show(); - Intent intent = new Intent(CaptureActivity.this, WXPageActivity.class); - intent.setData(Uri.parse(code)); - startActivity(intent); - } - } - } - - // Briefly show the contents of the barcode, then handle the result outside - // Barcode Scanner. - private void handleDecodeExternally(Result rawResult, - ResultHandler resultHandler, Bitmap barcode) { - - if (barcode != null) { - viewfinderView.drawResultBitmap(barcode); - } - - long resultDurationMS; - if (getIntent() == null) { - resultDurationMS = DEFAULT_INTENT_RESULT_DURATION_MS; - } else { - resultDurationMS = getIntent().getLongExtra( - Intents.Scan.RESULT_DISPLAY_DURATION_MS, - DEFAULT_INTENT_RESULT_DURATION_MS); - } - - if (resultDurationMS > 0) { - String rawResultString = String.valueOf(rawResult); - if (rawResultString.length() > 32) { - rawResultString = rawResultString.substring(0, 32) + " ..."; - } - statusView.setText(getString(resultHandler.getDisplayTitle()) - + " : " + rawResultString); - } - - if (copyToClipboard && !resultHandler.areContentsSecure()) { - CharSequence text = resultHandler.getDisplayContents(); - ClipboardInterface.setText(text, this); - } - - if (source == IntentSource.NATIVE_APP_INTENT) { - - // Hand back whatever action they requested - this can be changed to - // Intents.Scan.ACTION when - // the deprecated intent is retired. - Intent intent = new Intent(getIntent().getAction()); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.putExtra(Intents.Scan.RESULT, rawResult.toString()); - intent.putExtra(Intents.Scan.RESULT_FORMAT, rawResult - .getBarcodeFormat().toString()); - byte[] rawBytes = rawResult.getRawBytes(); - if (rawBytes != null && rawBytes.length > 0) { - intent.putExtra(Intents.Scan.RESULT_BYTES, rawBytes); - } - Map metadata = rawResult.getResultMetadata(); - if (metadata != null) { - if (metadata.containsKey(ResultMetadataType.UPC_EAN_EXTENSION)) { - intent.putExtra(Intents.Scan.RESULT_UPC_EAN_EXTENSION, - metadata.get(ResultMetadataType.UPC_EAN_EXTENSION) - .toString()); - } - Number orientation = (Number) metadata - .get(ResultMetadataType.ORIENTATION); - if (orientation != null) { - intent.putExtra(Intents.Scan.RESULT_ORIENTATION, - orientation.intValue()); - } - String ecLevel = (String) metadata - .get(ResultMetadataType.ERROR_CORRECTION_LEVEL); - if (ecLevel != null) { - intent.putExtra(Intents.Scan.RESULT_ERROR_CORRECTION_LEVEL, - ecLevel); - } - @SuppressWarnings("unchecked") - Iterable byteSegments = (Iterable) metadata - .get(ResultMetadataType.BYTE_SEGMENTS); - if (byteSegments != null) { - int i = 0; - for (byte[] byteSegment : byteSegments) { - intent.putExtra( - Intents.Scan.RESULT_BYTE_SEGMENTS_PREFIX + i, - byteSegment); - i++; - } - } - } - sendReplyMessage(R.id.return_scan_result, intent, resultDurationMS); - - } else if (source == IntentSource.PRODUCT_SEARCH_LINK) { - - // Reformulate the URL which triggered us into a query, so that the - // request goes to the same - // TLD as the scan URL. - int end = sourceUrl.lastIndexOf("/scan"); - String replyURL = sourceUrl.substring(0, end) + "?q=" - + resultHandler.getDisplayContents() + "&source=zxing"; - sendReplyMessage(R.id.launch_product_query, replyURL, - resultDurationMS); - - } else if (source == IntentSource.ZXING_LINK) { - - if (scanFromWebPageManager != null - && scanFromWebPageManager.isScanFromWebPage()) { - String replyURL = scanFromWebPageManager.buildReplyURL( - rawResult, resultHandler); - scanFromWebPageManager = null; - sendReplyMessage(R.id.launch_product_query, replyURL, - resultDurationMS); - } - - } - } - - private void sendReplyMessage(int id, Object arg, long delayMS) { - if (handler != null) { - Message message = Message.obtain(handler, id, arg); - if (delayMS > 0L) { - handler.sendMessageDelayed(message, delayMS); - } else { - handler.sendMessage(message); - } - } - } - - private void initCamera(SurfaceHolder surfaceHolder) { - if (surfaceHolder == null) { - throw new IllegalStateException("No SurfaceHolder provided"); - } - if (cameraManager.isOpen()) { - Log.w(TAG, - "initCamera() while already open -- late SurfaceView callback?"); - return; - } - try { - cameraManager.openDriver(surfaceHolder); - // Creating the handler starts the preview, which can also throw a - // RuntimeException. - if (handler == null) { - handler = new CaptureActivityHandler(this, decodeFormats, - decodeHints, characterSet, cameraManager); - } - decodeOrStoreSavedBitmap(null, null); - } catch (IOException ioe) { - Log.w(TAG, ioe); - displayFrameworkBugMessageAndExit(); - } catch (RuntimeException e) { - // Barcode Scanner has seen crashes in the wild of this variety: - // java.?lang.?RuntimeException: Fail to connect to camera service - Log.w(TAG, "Unexpected error initializing camera", e); - displayFrameworkBugMessageAndExit(); - } - } - - private void displayFrameworkBugMessageAndExit() { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(getString(R.string.app_name)); - builder.setMessage(getString(R.string.msg_camera_framework_bug)); - builder.setPositiveButton(R.string.button_ok, new FinishListener(this)); - builder.setOnCancelListener(new FinishListener(this)); - builder.show(); - } - - public void restartPreviewAfterDelay(long delayMS) { - if (handler != null) { - handler.sendEmptyMessageDelayed(R.id.restart_preview, delayMS); - } - resetStatusView(); - } - - private void resetStatusView() { - resultView.setVisibility(View.GONE); - statusView.setText(R.string.msg_default_status); - statusView.setVisibility(View.VISIBLE); - viewfinderView.setVisibility(View.VISIBLE); - lastResult = null; - } - - public void drawViewfinder() { - viewfinderView.drawViewfinder(); - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/CaptureActivityHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/CaptureActivityHandler.java deleted file mode 100755 index 3ff78ee864..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/CaptureActivityHandler.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.app.Activity; -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.provider.Browser; -import android.util.Log; - -import com.alibaba.weex.R; -import com.google.zxing.BarcodeFormat; -import com.google.zxing.DecodeHintType; -import com.google.zxing.Result; -import com.google.zxing.client.android.camera.CameraManager; - -import java.util.Collection; -import java.util.Map; - -/** - * This class handles all the messaging which comprises the state machine for capture. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class CaptureActivityHandler extends Handler { - - private static final String TAG = CaptureActivityHandler.class.getSimpleName(); - - private final CaptureActivity activity; - private final DecodeThread decodeThread; - private State state; - private final CameraManager cameraManager; - - private enum State { - PREVIEW, - SUCCESS, - DONE - } - - CaptureActivityHandler(CaptureActivity activity, - Collection decodeFormats, - Map baseHints, - String characterSet, - CameraManager cameraManager) { - this.activity = activity; - decodeThread = new DecodeThread(activity, decodeFormats, baseHints, characterSet, - new ViewfinderResultPointCallback(activity.getViewfinderView())); - decodeThread.start(); - state = State.SUCCESS; - - // Start ourselves capturing previews and decoding. - this.cameraManager = cameraManager; - cameraManager.startPreview(); - restartPreviewAndDecode(); - } - - @Override - public void handleMessage(Message message) { - if (message.what == R.id.restart_preview) { - restartPreviewAndDecode(); - - } else if (message.what == R.id.decode_succeeded) { - state = State.SUCCESS; - Bundle bundle = message.getData(); - Bitmap barcode = null; - float scaleFactor = 1.0f; - if (bundle != null) { - byte[] compressedBitmap = bundle.getByteArray(DecodeThread.BARCODE_BITMAP); - if (compressedBitmap != null) { - barcode = BitmapFactory.decodeByteArray(compressedBitmap, 0, compressedBitmap.length, null); - // Mutable copy: - barcode = barcode.copy(Bitmap.Config.ARGB_8888, true); - } - scaleFactor = bundle.getFloat(DecodeThread.BARCODE_SCALED_FACTOR); - } - activity.handleDecode((Result) message.obj, barcode, scaleFactor); - - } else if (message.what == R.id.decode_failed) {// We're decoding as fast as possible, so when one decode fails, start another. - state = State.PREVIEW; - cameraManager.requestPreviewFrame(decodeThread.getHandler(), R.id.decode); - - } else if (message.what == R.id.return_scan_result) { - activity.setResult(Activity.RESULT_OK, (Intent) message.obj); - activity.finish(); - - } else if (message.what == R.id.launch_product_query) { - String url = (String) message.obj; - - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.setData(Uri.parse(url)); - - ResolveInfo resolveInfo = - activity.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); - String browserPackageName = null; - if (resolveInfo != null && resolveInfo.activityInfo != null) { - browserPackageName = resolveInfo.activityInfo.packageName; - Log.d(TAG, "Using browser in package " + browserPackageName); - } - - // Needed for default Android browser / Chrome only apparently - if ("com.android.browser".equals(browserPackageName) || "com.android.chrome".equals(browserPackageName)) { - intent.setPackage(browserPackageName); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra(Browser.EXTRA_APPLICATION_ID, browserPackageName); - } - - try { - activity.startActivity(intent); - } catch (ActivityNotFoundException ignored) { - Log.w(TAG, "Can't find anything to handle VIEW of URI " + url); - } - - } - } - - public void quitSynchronously() { - state = State.DONE; - cameraManager.stopPreview(); - Message quit = Message.obtain(decodeThread.getHandler(), R.id.quit); - quit.sendToTarget(); - try { - // Wait at most half a second; should be enough time, and onPause() will timeout quickly - decodeThread.join(500L); - } catch (InterruptedException e) { - // continue - } - - // Be absolutely sure we don't send any queued up messages - removeMessages(R.id.decode_succeeded); - removeMessages(R.id.decode_failed); - } - - private void restartPreviewAndDecode() { - if (state == State.SUCCESS) { - state = State.PREVIEW; - cameraManager.requestPreviewFrame(decodeThread.getHandler(), R.id.decode); - activity.drawViewfinder(); - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/Contents.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/Contents.java deleted file mode 100755 index 1cfff173f2..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/Contents.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.provider.ContactsContract; - -/** - * The set of constants to use when sending Barcode Scanner an Intent which requests a barcode - * to be encoded. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class Contents { - private Contents() { - } - - public static final class Type { - /** - * Plain text. Use Intent.putExtra(DATA, string). This can be used for URLs too, but string - * must include "http://" or "https://". - */ - public static final String TEXT = "TEXT_TYPE"; - - /** - * An email type. Use Intent.putExtra(DATA, string) where string is the email address. - */ - public static final String EMAIL = "EMAIL_TYPE"; - - /** - * Use Intent.putExtra(DATA, string) where string is the phone number to call. - */ - public static final String PHONE = "PHONE_TYPE"; - - /** - * An SMS type. Use Intent.putExtra(DATA, string) where string is the number to SMS. - */ - public static final String SMS = "SMS_TYPE"; - - /** - * A contact. Send a request to encode it as follows: - * {@code - * import android.provider.Contacts; - * - * Intent intent = new Intent(Intents.Encode.ACTION); - * intent.putExtra(Intents.Encode.TYPE, CONTACT); - * Bundle bundle = new Bundle(); - * bundle.putString(ContactsContract.Intents.Insert.NAME, "Jenny"); - * bundle.putString(ContactsContract.Intents.Insert.PHONE, "8675309"); - * bundle.putString(ContactsContract.Intents.Insert.EMAIL, "jenny@the80s.com"); - * bundle.putString(ContactsContract.Intents.Insert.POSTAL, "123 Fake St. San Francisco, CA 94102"); - * intent.putExtra(Intents.Encode.DATA, bundle); - * } - */ - public static final String CONTACT = "CONTACT_TYPE"; - - /** - * A geographic location. Use as follows: - * Bundle bundle = new Bundle(); - * bundle.putFloat("LAT", latitude); - * bundle.putFloat("LONG", longitude); - * intent.putExtra(Intents.Encode.DATA, bundle); - */ - public static final String LOCATION = "LOCATION_TYPE"; - - private Type() { - } - } - - public static final String URL_KEY = "URL_KEY"; - - public static final String NOTE_KEY = "NOTE_KEY"; - - /** - * When using Type.CONTACT, these arrays provide the keys for adding or retrieving multiple - * phone numbers and addresses. - */ - public static final String[] PHONE_KEYS = { - ContactsContract.Intents.Insert.PHONE, - ContactsContract.Intents.Insert.SECONDARY_PHONE, - ContactsContract.Intents.Insert.TERTIARY_PHONE - }; - - public static final String[] PHONE_TYPE_KEYS = { - ContactsContract.Intents.Insert.PHONE_TYPE, - ContactsContract.Intents.Insert.SECONDARY_PHONE_TYPE, - ContactsContract.Intents.Insert.TERTIARY_PHONE_TYPE - }; - - public static final String[] EMAIL_KEYS = { - ContactsContract.Intents.Insert.EMAIL, - ContactsContract.Intents.Insert.SECONDARY_EMAIL, - ContactsContract.Intents.Insert.TERTIARY_EMAIL - }; - - public static final String[] EMAIL_TYPE_KEYS = { - ContactsContract.Intents.Insert.EMAIL_TYPE, - ContactsContract.Intents.Insert.SECONDARY_EMAIL_TYPE, - ContactsContract.Intents.Insert.TERTIARY_EMAIL_TYPE - }; - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeFormatManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeFormatManager.java deleted file mode 100755 index 8c5194bc5b..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeFormatManager.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import java.util.Arrays; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.regex.Pattern; - -import android.content.Intent; -import android.net.Uri; - -import com.google.zxing.BarcodeFormat; - -final class DecodeFormatManager { - - private static final Pattern COMMA_PATTERN = Pattern.compile(","); - - static final Set PRODUCT_FORMATS; - static final Set INDUSTRIAL_FORMATS; - private static final Set ONE_D_FORMATS; - static final Set QR_CODE_FORMATS = EnumSet.of(BarcodeFormat.QR_CODE); - static final Set DATA_MATRIX_FORMATS = EnumSet.of(BarcodeFormat.DATA_MATRIX); - static final Set AZTEC_FORMATS = EnumSet.of(BarcodeFormat.AZTEC); - static final Set PDF417_FORMATS = EnumSet.of(BarcodeFormat.PDF_417); - static { - PRODUCT_FORMATS = EnumSet.of(BarcodeFormat.UPC_A, - BarcodeFormat.UPC_E, - BarcodeFormat.EAN_13, - BarcodeFormat.EAN_8, - BarcodeFormat.RSS_14, - BarcodeFormat.RSS_EXPANDED); - INDUSTRIAL_FORMATS = EnumSet.of(BarcodeFormat.CODE_39, - BarcodeFormat.CODE_93, - BarcodeFormat.CODE_128, - BarcodeFormat.ITF, - BarcodeFormat.CODABAR); - ONE_D_FORMATS = EnumSet.copyOf(PRODUCT_FORMATS); - ONE_D_FORMATS.addAll(INDUSTRIAL_FORMATS); - } - private static final Map> FORMATS_FOR_MODE; - static { - FORMATS_FOR_MODE = new HashMap<>(); - FORMATS_FOR_MODE.put(Intents.Scan.ONE_D_MODE, ONE_D_FORMATS); - FORMATS_FOR_MODE.put(Intents.Scan.PRODUCT_MODE, PRODUCT_FORMATS); - FORMATS_FOR_MODE.put(Intents.Scan.QR_CODE_MODE, QR_CODE_FORMATS); - FORMATS_FOR_MODE.put(Intents.Scan.DATA_MATRIX_MODE, DATA_MATRIX_FORMATS); - FORMATS_FOR_MODE.put(Intents.Scan.AZTEC_MODE, AZTEC_FORMATS); - FORMATS_FOR_MODE.put(Intents.Scan.PDF417_MODE, PDF417_FORMATS); - } - - private DecodeFormatManager() {} - - static Set parseDecodeFormats(Intent intent) { - Iterable scanFormats = null; - CharSequence scanFormatsString = intent.getStringExtra(Intents.Scan.FORMATS); - if (scanFormatsString != null) { - scanFormats = Arrays.asList(COMMA_PATTERN.split(scanFormatsString)); - } - return parseDecodeFormats(scanFormats, intent.getStringExtra(Intents.Scan.MODE)); - } - - static Set parseDecodeFormats(Uri inputUri) { - List formats = inputUri.getQueryParameters(Intents.Scan.FORMATS); - if (formats != null && formats.size() == 1 && formats.get(0) != null){ - formats = Arrays.asList(COMMA_PATTERN.split(formats.get(0))); - } - return parseDecodeFormats(formats, inputUri.getQueryParameter(Intents.Scan.MODE)); - } - - private static Set parseDecodeFormats(Iterable scanFormats, String decodeMode) { - if (scanFormats != null) { - Set formats = EnumSet.noneOf(BarcodeFormat.class); - try { - for (String format : scanFormats) { - formats.add(BarcodeFormat.valueOf(format)); - } - return formats; - } catch (IllegalArgumentException iae) { - // ignore it then - } - } - if (decodeMode != null) { - return FORMATS_FOR_MODE.get(decodeMode); - } - return null; - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeHandler.java deleted file mode 100755 index 9a8770a30f..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeHandler.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.graphics.Bitmap; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.util.Log; - -import com.alibaba.weex.R; -import com.google.zxing.BinaryBitmap; -import com.google.zxing.DecodeHintType; -import com.google.zxing.MultiFormatReader; -import com.google.zxing.PlanarYUVLuminanceSource; -import com.google.zxing.ReaderException; -import com.google.zxing.Result; -import com.google.zxing.common.HybridBinarizer; - -import java.io.ByteArrayOutputStream; -import java.util.Map; - -final class DecodeHandler extends Handler { - - private static final String TAG = DecodeHandler.class.getSimpleName(); - - private final CaptureActivity activity; - private final MultiFormatReader multiFormatReader; - private boolean running = true; - - DecodeHandler(CaptureActivity activity, Map hints) { - multiFormatReader = new MultiFormatReader(); - multiFormatReader.setHints(hints); - this.activity = activity; - } - - @Override - public void handleMessage(Message message) { - if (!running) { - return; - } - if (message.what == R.id.decode) { - decode((byte[]) message.obj, message.arg1, message.arg2); - - } else if (message.what == R.id.quit) { - running = false; - Looper.myLooper().quit(); - - } - } - - /** - * Decode the data within the viewfinder rectangle, and time how long it took. For efficiency, - * reuse the same reader objects from one decode to the next. - * - * @param data The YUV preview frame. - * @param width The width of the preview frame. - * @param height The height of the preview frame. - */ - private void decode(byte[] data, int width, int height) { - long start = System.currentTimeMillis(); - Result rawResult = null; -// PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(data, width, height); - - byte[] rotatedData = new byte[data.length]; - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) - rotatedData[x * height + height - y - 1] = data[x + y * width]; - } - int tmp = width; - width = height; - height = tmp; - PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(rotatedData, width, height); - - if (source != null) { - BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); - try { - rawResult = multiFormatReader.decodeWithState(bitmap); - } catch (ReaderException re) { - // continue - } finally { - multiFormatReader.reset(); - } - } - - Handler handler = activity.getHandler(); - if (rawResult != null) { - // Don't log the barcode contents for security. - long end = System.currentTimeMillis(); - Log.d(TAG, "Found barcode in " + (end - start) + " ms"); - if (handler != null) { - Message message = Message.obtain(handler, R.id.decode_succeeded, rawResult); - Bundle bundle = new Bundle(); - bundleThumbnail(source, bundle); - message.setData(bundle); - message.sendToTarget(); - } - } else { - if (handler != null) { - Message message = Message.obtain(handler, R.id.decode_failed); - message.sendToTarget(); - } - } - } - - private static void bundleThumbnail(PlanarYUVLuminanceSource source, Bundle bundle) { - int[] pixels = source.renderThumbnail(); - int width = source.getThumbnailWidth(); - int height = source.getThumbnailHeight(); - Bitmap bitmap = Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.ARGB_8888); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out); - bundle.putByteArray(DecodeThread.BARCODE_BITMAP, out.toByteArray()); - bundle.putFloat(DecodeThread.BARCODE_SCALED_FACTOR, (float) width / source.getWidth()); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeHintManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeHintManager.java deleted file mode 100755 index 39305fe323..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeHintManager.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (C) 2013 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import java.util.EnumMap; -import java.util.HashMap; -import java.util.Map; -import java.util.regex.Pattern; - -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.util.Log; - -import com.google.zxing.DecodeHintType; - -/** - * @author Lachezar Dobrev - */ -final class DecodeHintManager { - - private static final String TAG = DecodeHintManager.class.getSimpleName(); - - // This pattern is used in decoding integer arrays. - private static final Pattern COMMA = Pattern.compile(","); - - private DecodeHintManager() {} - - /** - *

Split a query string into a list of name-value pairs.

- * - *

This is an alternative to the {@link Uri#getQueryParameterNames()} and - * {@link Uri#getQueryParameters(String)}, which are quirky and not suitable - * for exist-only Uri parameters.

- * - *

This method ignores multiple parameters with the same name and returns the - * first one only. This is technically incorrect, but should be acceptable due - * to the method of processing Hints: no multiple values for a hint.

- * - * @param query query to split - * @return name-value pairs - */ - private static Map splitQuery(String query) { - Map map = new HashMap<>(); - int pos = 0; - while (pos < query.length()) { - if (query.charAt(pos) == '&') { - // Skip consecutive ampersand separators. - pos ++; - continue; - } - int amp = query.indexOf('&', pos); - int equ = query.indexOf('=', pos); - if (amp < 0) { - // This is the last element in the query, no more ampersand elements. - String name; - String text; - if (equ < 0) { - // No equal sign - name = query.substring(pos); - name = name.replace('+', ' '); // Preemptively decode + - name = Uri.decode(name); - text = ""; - } else { - // Split name and text. - name = query.substring(pos, equ); - name = name.replace('+', ' '); // Preemptively decode + - name = Uri.decode(name); - text = query.substring(equ + 1); - text = text.replace('+', ' '); // Preemptively decode + - text = Uri.decode(text); - } - if (!map.containsKey(name)) { - map.put(name, text); - } - break; - } - if (equ < 0 || equ > amp) { - // No equal sign until the &: this is a simple parameter with no value. - String name = query.substring(pos, amp); - name = name.replace('+', ' '); // Preemptively decode + - name = Uri.decode(name); - if (!map.containsKey(name)) { - map.put(name, ""); - } - pos = amp + 1; - continue; - } - String name = query.substring(pos, equ); - name = name.replace('+', ' '); // Preemptively decode + - name = Uri.decode(name); - String text = query.substring(equ+1, amp); - text = text.replace('+', ' '); // Preemptively decode + - text = Uri.decode(text); - if (!map.containsKey(name)) { - map.put(name, text); - } - pos = amp + 1; - } - return map; - } - - static Map parseDecodeHints(Uri inputUri) { - String query = inputUri.getEncodedQuery(); - if (query == null || query.isEmpty()) { - return null; - } - - // Extract parameters - Map parameters = splitQuery(query); - - Map hints = new EnumMap<>(DecodeHintType.class); - - for (DecodeHintType hintType: DecodeHintType.values()) { - - if (hintType == DecodeHintType.CHARACTER_SET || - hintType == DecodeHintType.NEED_RESULT_POINT_CALLBACK || - hintType == DecodeHintType.POSSIBLE_FORMATS) { - continue; // This hint is specified in another way - } - - String parameterName = hintType.name(); - String parameterText = parameters.get(parameterName); - if (parameterText == null) { - continue; - } - if (hintType.getValueType().equals(Object.class)) { - // This is an unspecified type of hint content. Use the value as is. - // TODO: Can we make a different assumption on this? - hints.put(hintType, parameterText); - continue; - } - if (hintType.getValueType().equals(Void.class)) { - // Void hints are just flags: use the constant specified by DecodeHintType - hints.put(hintType, Boolean.TRUE); - continue; - } - if (hintType.getValueType().equals(String.class)) { - // A string hint: use the decoded value. - hints.put(hintType, parameterText); - continue; - } - if (hintType.getValueType().equals(Boolean.class)) { - // A boolean hint: a few values for false, everything else is true. - // An empty parameter is simply a flag-style parameter, assuming true - if (parameterText.isEmpty()) { - hints.put(hintType, Boolean.TRUE); - } else if ("0".equals(parameterText) || - "false".equalsIgnoreCase(parameterText) || - "no".equalsIgnoreCase(parameterText)) { - hints.put(hintType, Boolean.FALSE); - } else { - hints.put(hintType, Boolean.TRUE); - } - - continue; - } - if (hintType.getValueType().equals(int[].class)) { - // An integer array. Used to specify valid lengths. - // Strip a trailing comma as in Java style array initialisers. - if (!parameterText.isEmpty() && parameterText.charAt(parameterText.length() - 1) == ',') { - parameterText = parameterText.substring(0, parameterText.length() - 1); - } - String[] values = COMMA.split(parameterText); - int[] array = new int[values.length]; - for (int i = 0; i < values.length; i++) { - try { - array[i] = Integer.parseInt(values[i]); - } catch (NumberFormatException ignored) { - Log.w(TAG, "Skipping array of integers hint " + hintType + " due to invalid numeric value: '" + values[i] + '\''); - array = null; - break; - } - } - if (array != null) { - hints.put(hintType, array); - } - continue; - } - Log.w(TAG, "Unsupported hint type '" + hintType + "' of type " + hintType.getValueType()); - } - - Log.i(TAG, "Hints from the URI: " + hints); - return hints; - } - - static Map parseDecodeHints(Intent intent) { - Bundle extras = intent.getExtras(); - if (extras == null || extras.isEmpty()) { - return null; - } - Map hints = new EnumMap<>(DecodeHintType.class); - - for (DecodeHintType hintType: DecodeHintType.values()) { - - if (hintType == DecodeHintType.CHARACTER_SET || - hintType == DecodeHintType.NEED_RESULT_POINT_CALLBACK || - hintType == DecodeHintType.POSSIBLE_FORMATS) { - continue; // This hint is specified in another way - } - - String hintName = hintType.name(); - if (extras.containsKey(hintName)) { - if (hintType.getValueType().equals(Void.class)) { - // Void hints are just flags: use the constant specified by the DecodeHintType - hints.put(hintType, Boolean.TRUE); - } else { - Object hintData = extras.get(hintName); - if (hintType.getValueType().isInstance(hintData)) { - hints.put(hintType, hintData); - } else { - Log.w(TAG, "Ignoring hint " + hintType + " because it is not assignable from " + hintData); - } - } - } - } - - Log.i(TAG, "Hints from the Intent: " + hints); - return hints; - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeThread.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeThread.java deleted file mode 100755 index a2a0e81ad7..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/DecodeThread.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import java.util.Collection; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.Map; -import java.util.concurrent.CountDownLatch; - -import android.content.SharedPreferences; -import android.os.Handler; -import android.os.Looper; -import android.preference.PreferenceManager; -import android.util.Log; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.DecodeHintType; -import com.google.zxing.ResultPointCallback; - -/** - * This thread does all the heavy lifting of decoding the images. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -final class DecodeThread extends Thread { - - public static final String BARCODE_BITMAP = "barcode_bitmap"; - public static final String BARCODE_SCALED_FACTOR = "barcode_scaled_factor"; - - private final CaptureActivity activity; - private final Map hints; - private Handler handler; - private final CountDownLatch handlerInitLatch; - - DecodeThread(CaptureActivity activity, - Collection decodeFormats, - Map baseHints, - String characterSet, - ResultPointCallback resultPointCallback) { - - this.activity = activity; - handlerInitLatch = new CountDownLatch(1); - - hints = new EnumMap<>(DecodeHintType.class); - if (baseHints != null) { - hints.putAll(baseHints); - } - - // The prefs can't change while the thread is running, so pick them up once here. - if (decodeFormats == null || decodeFormats.isEmpty()) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); - decodeFormats = EnumSet.noneOf(BarcodeFormat.class); - if (prefs.getBoolean(PreferencesActivity.KEY_DECODE_1D_PRODUCT, true)) { - decodeFormats.addAll(DecodeFormatManager.PRODUCT_FORMATS); - } - if (prefs.getBoolean(PreferencesActivity.KEY_DECODE_1D_INDUSTRIAL, true)) { - decodeFormats.addAll(DecodeFormatManager.INDUSTRIAL_FORMATS); - } - if (prefs.getBoolean(PreferencesActivity.KEY_DECODE_QR, true)) { - decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS); - } - if (prefs.getBoolean(PreferencesActivity.KEY_DECODE_DATA_MATRIX, true)) { - decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS); - } - if (prefs.getBoolean(PreferencesActivity.KEY_DECODE_AZTEC, false)) { - decodeFormats.addAll(DecodeFormatManager.AZTEC_FORMATS); - } - if (prefs.getBoolean(PreferencesActivity.KEY_DECODE_PDF417, false)) { - decodeFormats.addAll(DecodeFormatManager.PDF417_FORMATS); - } - } - hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats); - - if (characterSet != null) { - hints.put(DecodeHintType.CHARACTER_SET, characterSet); - } - hints.put(DecodeHintType.NEED_RESULT_POINT_CALLBACK, resultPointCallback); - Log.i("DecodeThread", "Hints: " + hints); - } - - Handler getHandler() { - try { - handlerInitLatch.await(); - } catch (InterruptedException ie) { - // continue? - } - return handler; - } - - @Override - public void run() { - Looper.prepare(); - handler = new DecodeHandler(activity, hints); - handlerInitLatch.countDown(); - Looper.loop(); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/FinishListener.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/FinishListener.java deleted file mode 100755 index 5d5988619c..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/FinishListener.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.app.Activity; -import android.content.DialogInterface; - -/** - * Simple listener used to exit the app in a few cases. - * - * @author Sean Owen - */ -public final class FinishListener implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener { - - private final Activity activityToFinish; - - public FinishListener(Activity activityToFinish) { - this.activityToFinish = activityToFinish; - } - - @Override - public void onCancel(DialogInterface dialogInterface) { - run(); - } - - @Override - public void onClick(DialogInterface dialogInterface, int i) { - run(); - } - - private void run() { - activityToFinish.finish(); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/HelpActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/HelpActivity.java deleted file mode 100755 index f7d3973cc3..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/HelpActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - - -import android.app.Activity; -import android.os.Bundle; -import android.view.KeyEvent; -import android.webkit.WebView; - -import com.alibaba.weex.R; - - -/** - * An HTML-based help screen. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class HelpActivity extends Activity { - - private static final String BASE_URL = - "file:///android_asset/html-" + LocaleManager.getTranslatedAssetLanguage() + '/'; - - private WebView webView; - - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - setContentView(R.layout.help); - - webView = (WebView) findViewById(R.id.help_contents); - - if (icicle == null) { - webView.loadUrl(BASE_URL + "index.html"); - } else { - webView.restoreState(icicle); - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) { - webView.goBack(); - return true; - } - return super.onKeyDown(keyCode, event); - } - - @Override - protected void onSaveInstanceState(Bundle icicle) { - super.onSaveInstanceState(icicle); - webView.saveState(icicle); - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/HttpHelper.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/HttpHelper.java deleted file mode 100755 index 6e3de990b9..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/HttpHelper.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.HttpURLConnection; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLConnection; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; - -import android.util.Log; - -/** - * Utility methods for retrieving content over HTTP using the more-supported {@code java.net} classes - * in Android. - */ -public final class HttpHelper { - - private static final String TAG = HttpHelper.class.getSimpleName(); - - private static final Collection REDIRECTOR_DOMAINS = new HashSet<>(Arrays.asList( - "amzn.to", "bit.ly", "bitly.com", "fb.me", "goo.gl", "is.gd", "j.mp", "lnkd.in", "ow.ly", - "R.BEETAGG.COM", "r.beetagg.com", "SCN.BY", "su.pr", "t.co", "tinyurl.com", "tr.im" - )); - - private HttpHelper() { - } - - public enum ContentType { - /** HTML-like content type, including HTML, XHTML, etc. */ - HTML, - /** JSON content */ - JSON, - /** XML */ - XML, - /** Plain text content */ - TEXT, - } - - /** - * Downloads the entire resource instead of part. - * - * @param uri URI to retrieve - * @param type expected text-like MIME type of that content - * @return content as a {@code String} - * @throws IOException if the content can't be retrieved because of a bad URI, network problem, etc. - * @see #downloadViaHttp(String, ContentType, int) - */ - public static CharSequence downloadViaHttp(String uri, ContentType type) throws IOException { - return downloadViaHttp(uri, type, Integer.MAX_VALUE); - } - - /** - * @param uri URI to retrieve - * @param type expected text-like MIME type of that content - * @param maxChars approximate maximum characters to read from the source - * @return content as a {@code String} - * @throws IOException if the content can't be retrieved because of a bad URI, network problem, etc. - */ - public static CharSequence downloadViaHttp(String uri, ContentType type, int maxChars) throws IOException { - String contentTypes; - switch (type) { - case HTML: - contentTypes = "application/xhtml+xml,text/html,text/*,*/*"; - break; - case JSON: - contentTypes = "application/json,text/*,*/*"; - break; - case XML: - contentTypes = "application/xml,text/*,*/*"; - break; - case TEXT: - default: - contentTypes = "text/*,*/*"; - } - return downloadViaHttp(uri, contentTypes, maxChars); - } - - private static CharSequence downloadViaHttp(String uri, String contentTypes, int maxChars) throws IOException { - int redirects = 0; - while (redirects < 5) { - URL url = new URL(uri); - HttpURLConnection connection = safelyOpenConnection(url); - connection.setInstanceFollowRedirects(true); // Won't work HTTP -> HTTPS or vice versa - connection.setRequestProperty("Accept", contentTypes); - connection.setRequestProperty("Accept-Charset", "utf-8,*"); - connection.setRequestProperty("User-Agent", "ZXing (Android)"); - try { - int responseCode = safelyConnect(connection); - switch (responseCode) { - case HttpURLConnection.HTTP_OK: - return consume(connection, maxChars); - case HttpURLConnection.HTTP_MOVED_TEMP: - String location = connection.getHeaderField("Location"); - if (location != null) { - uri = location; - redirects++; - continue; - } - throw new IOException("No Location"); - default: - throw new IOException("Bad HTTP response: " + responseCode); - } - } finally { - connection.disconnect(); - } - } - throw new IOException("Too many redirects"); - } - - private static String getEncoding(URLConnection connection) { - String contentTypeHeader = connection.getHeaderField("Content-Type"); - if (contentTypeHeader != null) { - int charsetStart = contentTypeHeader.indexOf("charset="); - if (charsetStart >= 0) { - return contentTypeHeader.substring(charsetStart + "charset=".length()); - } - } - return "UTF-8"; - } - - private static CharSequence consume(URLConnection connection, int maxChars) throws IOException { - String encoding = getEncoding(connection); - StringBuilder out = new StringBuilder(); - Reader in = null; - try { - in = new InputStreamReader(connection.getInputStream(), encoding); - char[] buffer = new char[1024]; - int charsRead; - while (out.length() < maxChars && (charsRead = in.read(buffer)) > 0) { - out.append(buffer, 0, charsRead); - } - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException | NullPointerException ioe) { - // continue - } - } - } - return out; - } - - public static URI unredirect(URI uri) throws IOException { - if (!REDIRECTOR_DOMAINS.contains(uri.getHost())) { - return uri; - } - URL url = uri.toURL(); - HttpURLConnection connection = safelyOpenConnection(url); - connection.setInstanceFollowRedirects(false); - connection.setDoInput(false); - connection.setRequestMethod("HEAD"); - connection.setRequestProperty("User-Agent", "ZXing (Android)"); - try { - int responseCode = safelyConnect(connection); - switch (responseCode) { - case HttpURLConnection.HTTP_MULT_CHOICE: - case HttpURLConnection.HTTP_MOVED_PERM: - case HttpURLConnection.HTTP_MOVED_TEMP: - case HttpURLConnection.HTTP_SEE_OTHER: - case 307: // No constant for 307 Temporary Redirect ? - String location = connection.getHeaderField("Location"); - if (location != null) { - try { - return new URI(location); - } catch (URISyntaxException e) { - // nevermind - } - } - } - return uri; - } finally { - connection.disconnect(); - } - } - - private static HttpURLConnection safelyOpenConnection(URL url) throws IOException { - URLConnection conn; - try { - conn = url.openConnection(); - } catch (NullPointerException npe) { - // Another strange bug in Android? - Log.w(TAG, "Bad URI? " + url); - throw new IOException(npe); - } - if (!(conn instanceof HttpURLConnection)) { - throw new IOException(); - } - return (HttpURLConnection) conn; - } - - private static int safelyConnect(HttpURLConnection connection) throws IOException { - try { - connection.connect(); - } catch (NullPointerException | IllegalArgumentException | IndexOutOfBoundsException | SecurityException e) { - // this is an Android bug: http://code.google.com/p/android/issues/detail?id=16895 - throw new IOException(e); - } - try { - return connection.getResponseCode(); - } catch (NullPointerException | StringIndexOutOfBoundsException | IllegalArgumentException e) { - // this is maybe this Android bug: http://code.google.com/p/android/issues/detail?id=15554 - throw new IOException(e); - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/InactivityTimer.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/InactivityTimer.java deleted file mode 100755 index 5e33d902fe..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/InactivityTimer.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.app.Activity; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.os.AsyncTask; -import android.os.BatteryManager; -import android.util.Log; - -/** - * Finishes an activity after a period of inactivity if the device is on battery power. - */ -final class InactivityTimer { - - private static final String TAG = InactivityTimer.class.getSimpleName(); - - private static final long INACTIVITY_DELAY_MS = 5 * 60 * 1000L; - - private final Activity activity; - private final BroadcastReceiver powerStatusReceiver; - private boolean registered; - private AsyncTask inactivityTask; - - InactivityTimer(Activity activity) { - this.activity = activity; - powerStatusReceiver = new PowerStatusReceiver(); - registered = false; - onActivity(); - } - - synchronized void onActivity() { - cancel(); - inactivityTask = new InactivityAsyncTask(); - inactivityTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - - public synchronized void onPause() { - cancel(); - if (registered) { - activity.unregisterReceiver(powerStatusReceiver); - registered = false; - } else { - Log.w(TAG, "PowerStatusReceiver was never registered?"); - } - } - - public synchronized void onResume() { - if (registered) { - Log.w(TAG, "PowerStatusReceiver was already registered?"); - } else { - activity.registerReceiver(powerStatusReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - registered = true; - } - onActivity(); - } - - private synchronized void cancel() { - AsyncTask task = inactivityTask; - if (task != null) { - task.cancel(true); - inactivityTask = null; - } - } - - void shutdown() { - cancel(); - } - - private final class PowerStatusReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent){ - if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { - // 0 indicates that we're on battery - boolean onBatteryNow = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) <= 0; - if (onBatteryNow) { - InactivityTimer.this.onActivity(); - } else { - InactivityTimer.this.cancel(); - } - } - } - } - - private final class InactivityAsyncTask extends AsyncTask { - @Override - protected Object doInBackground(Object... objects) { - try { - Thread.sleep(INACTIVITY_DELAY_MS); - Log.i(TAG, "Finishing activity due to inactivity"); - activity.finish(); - } catch (InterruptedException e) { - // continue without killing - } - return null; - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/IntentSource.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/IntentSource.java deleted file mode 100755 index 3222db6b0a..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/IntentSource.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -enum IntentSource { - - NATIVE_APP_INTENT, - PRODUCT_SEARCH_LINK, - ZXING_LINK, - NONE - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/Intents.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/Intents.java deleted file mode 100755 index 6e59e8082d..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/Intents.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -/** - * This class provides the constants to use when sending an Intent to Barcode Scanner. - * These strings are effectively API and cannot be changed. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class Intents { - private Intents() { - } - - public static final class Scan { - /** - * Send this intent to open the Barcodes app in scanning mode, find a barcode, and return - * the results. - */ - public static final String ACTION = "com.google.zxing.client.android.SCAN"; - - /** - * By default, sending this will decode all barcodes that we understand. However it - * may be useful to limit scanning to certain formats. Use - * {@link android.content.Intent#putExtra(String, String)} with one of the values below. - * - * Setting this is effectively shorthand for setting explicit formats with {@link #FORMATS}. - * It is overridden by that setting. - */ - public static final String MODE = "SCAN_MODE"; - - /** - * Decode only UPC and EAN barcodes. This is the right choice for shopping apps which get - * prices, reviews, etc. for products. - */ - public static final String PRODUCT_MODE = "PRODUCT_MODE"; - - /** - * Decode only 1D barcodes. - */ - public static final String ONE_D_MODE = "ONE_D_MODE"; - - /** - * Decode only QR codes. - */ - public static final String QR_CODE_MODE = "QR_CODE_MODE"; - - /** - * Decode only Data Matrix codes. - */ - public static final String DATA_MATRIX_MODE = "DATA_MATRIX_MODE"; - - /** - * Decode only Aztec. - */ - public static final String AZTEC_MODE = "AZTEC_MODE"; - - /** - * Decode only PDF417. - */ - public static final String PDF417_MODE = "PDF417_MODE"; - - /** - * Comma-separated list of formats to scan for. The values must match the names of - * {@link com.google.zxing.BarcodeFormat}s, e.g. {@link com.google.zxing.BarcodeFormat#EAN_13}. - * Example: "EAN_13,EAN_8,QR_CODE". This overrides {@link #MODE}. - */ - public static final String FORMATS = "SCAN_FORMATS"; - - /** - * Optional parameter to specify the id of the camera from which to recognize barcodes. - * Overrides the default camera that would otherwise would have been selected. - * If provided, should be an int. - */ - public static final String CAMERA_ID = "SCAN_CAMERA_ID"; - - /** - * @see com.google.zxing.DecodeHintType#CHARACTER_SET - */ - public static final String CHARACTER_SET = "CHARACTER_SET"; - - /** - * Optional parameters to specify the width and height of the scanning rectangle in pixels. - * The app will try to honor these, but will clamp them to the size of the preview frame. - * You should specify both or neither, and pass the size as an int. - */ - public static final String WIDTH = "SCAN_WIDTH"; - public static final String HEIGHT = "SCAN_HEIGHT"; - - /** - * Desired duration in milliseconds for which to pause after a successful scan before - * returning to the calling intent. Specified as a long, not an integer! - * For example: 1000L, not 1000. - */ - public static final String RESULT_DISPLAY_DURATION_MS = "RESULT_DISPLAY_DURATION_MS"; - - /** - * Prompt to show on-screen when scanning by intent. Specified as a {@link String}. - */ - public static final String PROMPT_MESSAGE = "PROMPT_MESSAGE"; - - /** - * If a barcode is found, Barcodes returns {@link android.app.Activity#RESULT_OK} to - * {@link android.app.Activity#onActivityResult(int, int, android.content.Intent)} - * of the app which requested the scan via - * {@link android.app.Activity#startActivityForResult(android.content.Intent, int)} - * The barcodes contents can be retrieved with - * {@link android.content.Intent#getStringExtra(String)}. - * If the user presses Back, the result code will be {@link android.app.Activity#RESULT_CANCELED}. - */ - public static final String RESULT = "SCAN_RESULT"; - - /** - * Call {@link android.content.Intent#getStringExtra(String)} with {@link #RESULT_FORMAT} - * to determine which barcode format was found. - * See {@link com.google.zxing.BarcodeFormat} for possible values. - */ - public static final String RESULT_FORMAT = "SCAN_RESULT_FORMAT"; - - /** - * Call {@link android.content.Intent#getStringExtra(String)} with {@link #RESULT_UPC_EAN_EXTENSION} - * to return the content of any UPC extension barcode that was also found. Only applicable - * to {@link com.google.zxing.BarcodeFormat#UPC_A} and {@link com.google.zxing.BarcodeFormat#EAN_13} - * formats. - */ - public static final String RESULT_UPC_EAN_EXTENSION = "SCAN_RESULT_UPC_EAN_EXTENSION"; - - /** - * Call {@link android.content.Intent#getByteArrayExtra(String)} with {@link #RESULT_BYTES} - * to get a {@code byte[]} of raw bytes in the barcode, if available. - */ - public static final String RESULT_BYTES = "SCAN_RESULT_BYTES"; - - /** - * Key for the value of {@link com.google.zxing.ResultMetadataType#ORIENTATION}, if available. - * Call {@link android.content.Intent#getIntArrayExtra(String)} with {@link #RESULT_ORIENTATION}. - */ - public static final String RESULT_ORIENTATION = "SCAN_RESULT_ORIENTATION"; - - /** - * Key for the value of {@link com.google.zxing.ResultMetadataType#ERROR_CORRECTION_LEVEL}, if available. - * Call {@link android.content.Intent#getStringExtra(String)} with {@link #RESULT_ERROR_CORRECTION_LEVEL}. - */ - public static final String RESULT_ERROR_CORRECTION_LEVEL = "SCAN_RESULT_ERROR_CORRECTION_LEVEL"; - - /** - * Prefix for keys that map to the values of {@link com.google.zxing.ResultMetadataType#BYTE_SEGMENTS}, - * if available. The actual values will be set under a series of keys formed by adding 0, 1, 2, ... - * to this prefix. So the first byte segment is under key "SCAN_RESULT_BYTE_SEGMENTS_0" for example. - * Call {@link android.content.Intent#getByteArrayExtra(String)} with these keys. - */ - public static final String RESULT_BYTE_SEGMENTS_PREFIX = "SCAN_RESULT_BYTE_SEGMENTS_"; - - /** - * Setting this to false will not save scanned codes in the history. Specified as a {@code boolean}. - */ - public static final String SAVE_HISTORY = "SAVE_HISTORY"; - - private Scan() { - } - } - - public static final class History { - - public static final String ITEM_NUMBER = "ITEM_NUMBER"; - - private History() { - } - } - - public static final class Encode { - /** - * Send this intent to encode a piece of data as a QR code and display it full screen, so - * that another person can scan the barcode from your screen. - */ - public static final String ACTION = "com.google.zxing.client.android.ENCODE"; - - /** - * The data to encode. Use {@link android.content.Intent#putExtra(String, String)} or - * {@link android.content.Intent#putExtra(String, android.os.Bundle)}, - * depending on the type and format specified. Non-QR Code formats should - * just use a String here. For QR Code, see Contents for details. - */ - public static final String DATA = "ENCODE_DATA"; - - /** - * The type of data being supplied if the format is QR Code. Use - * {@link android.content.Intent#putExtra(String, String)} with one of {@link Contents.Type}. - */ - public static final String TYPE = "ENCODE_TYPE"; - - /** - * The barcode format to be displayed. If this isn't specified or is blank, - * it defaults to QR Code. Use {@link android.content.Intent#putExtra(String, String)}, where - * format is one of {@link com.google.zxing.BarcodeFormat}. - */ - public static final String FORMAT = "ENCODE_FORMAT"; - - /** - * Normally the contents of the barcode are displayed to the user in a TextView. Setting this - * boolean to false will hide that TextView, showing only the encode barcode. - */ - public static final String SHOW_CONTENTS = "ENCODE_SHOW_CONTENTS"; - - private Encode() { - } - } - - public static final class SearchBookContents { - /** - * Use Google Book Search to search the contents of the book provided. - */ - public static final String ACTION = "com.google.zxing.client.android.SEARCH_BOOK_CONTENTS"; - - /** - * The book to search, identified by ISBN number. - */ - public static final String ISBN = "ISBN"; - - /** - * An optional field which is the text to search for. - */ - public static final String QUERY = "QUERY"; - - private SearchBookContents() { - } - } - - public static final class WifiConnect { - /** - * Internal intent used to trigger connection to a wi-fi network. - */ - public static final String ACTION = "com.google.zxing.client.android.WIFI_CONNECT"; - - /** - * The network to connect to, all the configuration provided here. - */ - public static final String SSID = "SSID"; - - /** - * The network to connect to, all the configuration provided here. - */ - public static final String TYPE = "TYPE"; - - /** - * The network to connect to, all the configuration provided here. - */ - public static final String PASSWORD = "PASSWORD"; - - private WifiConnect() { - } - } - - public static final class Share { - /** - * Give the user a choice of items to encode as a barcode, then render it as a QR Code and - * display onscreen for a friend to scan with their phone. - */ - public static final String ACTION = "com.google.zxing.client.android.SHARE"; - - private Share() { - } - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/LocaleManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/LocaleManager.java deleted file mode 100755 index 5d74c5df47..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/LocaleManager.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - -/** - * Handles any locale-specific logic for the client. - * - * @author Sean Owen - */ -public final class LocaleManager { - - private static final String DEFAULT_TLD = "com"; - private static final String DEFAULT_COUNTRY = "US"; - private static final String DEFAULT_LANGUAGE = "en"; - - /** - * Locales (well, countries) where Google web search is available. - * These should be kept in sync with our translations. - */ - private static final Map GOOGLE_COUNTRY_TLD; - static { - GOOGLE_COUNTRY_TLD = new HashMap<>(); - GOOGLE_COUNTRY_TLD.put("AR", "com.ar"); // ARGENTINA - GOOGLE_COUNTRY_TLD.put("AU", "com.au"); // AUSTRALIA - GOOGLE_COUNTRY_TLD.put("BR", "com.br"); // BRAZIL - GOOGLE_COUNTRY_TLD.put("BG", "bg"); // BULGARIA - GOOGLE_COUNTRY_TLD.put(Locale.CANADA.getCountry(), "ca"); - GOOGLE_COUNTRY_TLD.put(Locale.CHINA.getCountry(), "cn"); - GOOGLE_COUNTRY_TLD.put("CZ", "cz"); // CZECH REPUBLIC - GOOGLE_COUNTRY_TLD.put("DK", "dk"); // DENMARK - GOOGLE_COUNTRY_TLD.put("FI", "fi"); // FINLAND - GOOGLE_COUNTRY_TLD.put(Locale.FRANCE.getCountry(), "fr"); - GOOGLE_COUNTRY_TLD.put(Locale.GERMANY.getCountry(), "de"); - GOOGLE_COUNTRY_TLD.put("GR", "gr"); // GREECE - GOOGLE_COUNTRY_TLD.put("HU", "hu"); // HUNGARY - GOOGLE_COUNTRY_TLD.put("ID", "co.id"); // INDONESIA - GOOGLE_COUNTRY_TLD.put("IL", "co.il"); // ISRAEL - GOOGLE_COUNTRY_TLD.put(Locale.ITALY.getCountry(), "it"); - GOOGLE_COUNTRY_TLD.put(Locale.JAPAN.getCountry(), "co.jp"); - GOOGLE_COUNTRY_TLD.put(Locale.KOREA.getCountry(), "co.kr"); - GOOGLE_COUNTRY_TLD.put("NL", "nl"); // NETHERLANDS - GOOGLE_COUNTRY_TLD.put("PL", "pl"); // POLAND - GOOGLE_COUNTRY_TLD.put("PT", "pt"); // PORTUGAL - GOOGLE_COUNTRY_TLD.put("RO", "ro"); // ROMANIA - GOOGLE_COUNTRY_TLD.put("RU", "ru"); // RUSSIA - GOOGLE_COUNTRY_TLD.put("SK", "sk"); // SLOVAK REPUBLIC - GOOGLE_COUNTRY_TLD.put("SI", "si"); // SLOVENIA - GOOGLE_COUNTRY_TLD.put("ES", "es"); // SPAIN - GOOGLE_COUNTRY_TLD.put("SE", "se"); // SWEDEN - GOOGLE_COUNTRY_TLD.put("CH", "ch"); // SWITZERLAND - GOOGLE_COUNTRY_TLD.put(Locale.TAIWAN.getCountry(), "tw"); - GOOGLE_COUNTRY_TLD.put("TR", "com.tr"); // TURKEY - GOOGLE_COUNTRY_TLD.put("UA", "com.ua"); // UKRAINE - GOOGLE_COUNTRY_TLD.put(Locale.UK.getCountry(), "co.uk"); - GOOGLE_COUNTRY_TLD.put(Locale.US.getCountry(), "com"); - } - - /** - * Google Product Search for mobile is available in fewer countries than web search. See here: - * http://support.google.com/merchants/bin/answer.py?hl=en-GB&answer=160619 - */ - private static final Map GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD; - static { - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD = new HashMap<>(); - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put("AU", "com.au"); // AUSTRALIA - //GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.CHINA.getCountry(), "cn"); - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.FRANCE.getCountry(), "fr"); - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.GERMANY.getCountry(), "de"); - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.ITALY.getCountry(), "it"); - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.JAPAN.getCountry(), "co.jp"); - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put("NL", "nl"); // NETHERLANDS - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put("ES", "es"); // SPAIN - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put("CH", "ch"); // SWITZERLAND - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.UK.getCountry(), "co.uk"); - GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.US.getCountry(), "com"); - } - - /** - * Book search is offered everywhere that web search is available. - */ - private static final Map GOOGLE_BOOK_SEARCH_COUNTRY_TLD = GOOGLE_COUNTRY_TLD; - - private static final Collection TRANSLATED_HELP_ASSET_LANGUAGES = - Arrays.asList("de", "en", "es", "fr", "it", "ja", "ko", "nl", "pt", "ru", "uk", "zh-rCN", "zh-rTW", "zh-rHK"); - - private LocaleManager() {} - - /** - * @param context application's {@link Context} - * @return country-specific TLD suffix appropriate for the current default locale - * (e.g. "co.uk" for the United Kingdom) - */ - public static String getCountryTLD(Context context) { - return doGetTLD(GOOGLE_COUNTRY_TLD, context); - } - - /** - * The same as above, but specifically for Google Product Search. - * - * @param context application's {@link Context} - * @return The top-level domain to use. - */ - public static String getProductSearchCountryTLD(Context context) { - return doGetTLD(GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD, context); - } - - /** - * The same as above, but specifically for Google Book Search. - * - * @param context application's {@link Context} - * @return The top-level domain to use. - */ - public static String getBookSearchCountryTLD(Context context) { - return doGetTLD(GOOGLE_BOOK_SEARCH_COUNTRY_TLD, context); - } - - /** - * Does a given URL point to Google Book Search, regardless of domain. - * - * @param url The address to check. - * @return True if this is a Book Search URL. - */ - public static boolean isBookSearchUrl(String url) { - return url.startsWith("http://google.com/books") || url.startsWith("http://books.google."); - } - - private static String getSystemCountry() { - Locale locale = Locale.getDefault(); - return locale == null ? DEFAULT_COUNTRY : locale.getCountry(); - } - - private static String getSystemLanguage() { - Locale locale = Locale.getDefault(); - if (locale == null) { - return DEFAULT_LANGUAGE; - } - String language = locale.getLanguage(); - // Special case Chinese - if (Locale.SIMPLIFIED_CHINESE.getLanguage().equals(language)) { - return language + "-r" + getSystemCountry(); - } - return language; - } - - public static String getTranslatedAssetLanguage() { - String language = getSystemLanguage(); - return TRANSLATED_HELP_ASSET_LANGUAGES.contains(language) ? language : DEFAULT_LANGUAGE; - } - - private static String doGetTLD(Map map, Context context) { - String tld = map.get(getCountry(context)); - return tld == null ? DEFAULT_TLD : tld; - } - - public static String getCountry(Context context) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - String countryOverride = prefs.getString(PreferencesActivity.KEY_SEARCH_COUNTRY, "-"); - if (countryOverride != null && !countryOverride.isEmpty() && !"-".equals(countryOverride)) { - return countryOverride; - } - return getSystemCountry(); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/PreferencesActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/PreferencesActivity.java deleted file mode 100755 index 8d0dc645c0..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/PreferencesActivity.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.app.Activity; -import android.os.Bundle; - -/** - * The main settings activity. - * - * @author dswitkin@google.com (Daniel Switkin) - * @author Sean Owen - */ -public final class PreferencesActivity extends Activity { - - public static final String KEY_DECODE_1D_PRODUCT = "preferences_decode_1D_product"; - public static final String KEY_DECODE_1D_INDUSTRIAL = "preferences_decode_1D_industrial"; - public static final String KEY_DECODE_QR = "preferences_decode_QR"; - public static final String KEY_DECODE_DATA_MATRIX = "preferences_decode_Data_Matrix"; - public static final String KEY_DECODE_AZTEC = "preferences_decode_Aztec"; - public static final String KEY_DECODE_PDF417 = "preferences_decode_PDF417"; - - public static final String KEY_CUSTOM_PRODUCT_SEARCH = "preferences_custom_product_search"; - - public static final String KEY_PLAY_BEEP = "preferences_play_beep"; - public static final String KEY_VIBRATE = "preferences_vibrate"; - public static final String KEY_COPY_TO_CLIPBOARD = "preferences_copy_to_clipboard"; - public static final String KEY_FRONT_LIGHT_MODE = "preferences_front_light_mode"; - public static final String KEY_BULK_MODE = "preferences_bulk_mode"; - public static final String KEY_REMEMBER_DUPLICATES = "preferences_remember_duplicates"; - public static final String KEY_ENABLE_HISTORY = "preferences_history"; - public static final String KEY_SUPPLEMENTAL = "preferences_supplemental"; - public static final String KEY_AUTO_FOCUS = "preferences_auto_focus"; - public static final String KEY_INVERT_SCAN = "preferences_invert_scan"; - public static final String KEY_SEARCH_COUNTRY = "preferences_search_country"; - public static final String KEY_DISABLE_AUTO_ORIENTATION = "preferences_orientation"; - - public static final String KEY_DISABLE_CONTINUOUS_FOCUS = "preferences_disable_continuous_focus"; - public static final String KEY_DISABLE_EXPOSURE = "preferences_disable_exposure"; - public static final String KEY_DISABLE_METERING = "preferences_disable_metering"; - public static final String KEY_DISABLE_BARCODE_SCENE_MODE = "preferences_disable_barcode_scene_mode"; - public static final String KEY_AUTO_OPEN_WEB = "preferences_auto_open_web"; - - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit(); - } - - // Apparently this will be necessary when targeting API 19+: - /* - @Override - protected boolean isValidFragment(String fragmentName) { - return true; - } - */ - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/PreferencesFragment.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/PreferencesFragment.java deleted file mode 100755 index 8fecd8a55b..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/PreferencesFragment.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (C) 2013 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.app.AlertDialog; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.EditTextPreference; -import android.preference.Preference; -import android.preference.PreferenceFragment; -import android.preference.PreferenceScreen; - -import com.alibaba.weex.R; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Collection; - - -public final class PreferencesFragment - extends PreferenceFragment - implements SharedPreferences.OnSharedPreferenceChangeListener { - - private CheckBoxPreference[] checkBoxPrefs; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - addPreferencesFromResource(R.xml.preferences); - - PreferenceScreen preferences = getPreferenceScreen(); - preferences.getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - checkBoxPrefs = findDecodePrefs(preferences, - PreferencesActivity.KEY_DECODE_1D_PRODUCT, - PreferencesActivity.KEY_DECODE_1D_INDUSTRIAL, - PreferencesActivity.KEY_DECODE_QR, - PreferencesActivity.KEY_DECODE_DATA_MATRIX, - PreferencesActivity.KEY_DECODE_AZTEC, - PreferencesActivity.KEY_DECODE_PDF417); - disableLastCheckedPref(); - - EditTextPreference customProductSearch = (EditTextPreference) - preferences.findPreference(PreferencesActivity.KEY_CUSTOM_PRODUCT_SEARCH); - customProductSearch.setOnPreferenceChangeListener(new CustomSearchURLValidator()); - } - - private static CheckBoxPreference[] findDecodePrefs(PreferenceScreen preferences, String... keys) { - CheckBoxPreference[] prefs = new CheckBoxPreference[keys.length]; - for (int i = 0; i < keys.length; i++) { - prefs[i] = (CheckBoxPreference) preferences.findPreference(keys[i]); - } - return prefs; - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - disableLastCheckedPref(); - } - - private void disableLastCheckedPref() { - Collection checked = new ArrayList<>(checkBoxPrefs.length); - for (CheckBoxPreference pref : checkBoxPrefs) { - if (pref.isChecked()) { - checked.add(pref); - } - } - boolean disable = checked.size() <= 1; - for (CheckBoxPreference pref : checkBoxPrefs) { - pref.setEnabled(!(disable && checked.contains(pref))); - } - } - - private class CustomSearchURLValidator implements Preference.OnPreferenceChangeListener { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - if (!isValid(newValue)) { - AlertDialog.Builder builder = - new AlertDialog.Builder(PreferencesFragment.this.getActivity()); - builder.setTitle(R.string.msg_error); - builder.setMessage(R.string.msg_invalid_value); - builder.setCancelable(true); - builder.show(); - return false; - } - return true; - } - - private boolean isValid(Object newValue) { - // Allow empty/null value - if (newValue == null) { - return true; - } - String valueString = newValue.toString(); - if (valueString.isEmpty()) { - return true; - } - // Before validating, remove custom placeholders, which will not - // be considered valid parts of the URL in some locations: - // Blank %t and %s: - valueString = valueString.replaceAll("%[st]", ""); - // Blank %f but not if followed by digit or a-f as it may be a hex sequence - valueString = valueString.replaceAll("%f(?![0-9a-f])", ""); - // Require a scheme otherwise: - try { - URI uri = new URI(valueString); - return uri.getScheme() != null; - } catch (URISyntaxException use) { - return false; - } - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ScanFromWebPageManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ScanFromWebPageManager.java deleted file mode 100755 index c8d13967e4..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ScanFromWebPageManager.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; - -import android.net.Uri; - -import com.google.zxing.Result; -import com.google.zxing.client.android.result.ResultHandler; - -/** - * Manages functionality related to responding to requests to scan from an HTTP link in a web page. - * See
ScanningFromWebPages. - * - * @author Sean Owen - */ -final class ScanFromWebPageManager { - - private static final CharSequence CODE_PLACEHOLDER = "{CODE}"; - private static final CharSequence RAW_CODE_PLACEHOLDER = "{RAWCODE}"; - private static final CharSequence META_PLACEHOLDER = "{META}"; - private static final CharSequence FORMAT_PLACEHOLDER = "{FORMAT}"; - private static final CharSequence TYPE_PLACEHOLDER = "{TYPE}"; - - private static final String RETURN_URL_PARAM = "ret"; - private static final String RAW_PARAM = "raw"; - - private final String returnUrlTemplate; - private final boolean returnRaw; - - ScanFromWebPageManager(Uri inputUri) { - returnUrlTemplate = inputUri.getQueryParameter(RETURN_URL_PARAM); - returnRaw = inputUri.getQueryParameter(RAW_PARAM) != null; - } - - boolean isScanFromWebPage() { - return returnUrlTemplate != null; - } - - String buildReplyURL(Result rawResult, ResultHandler resultHandler) { - String result = returnUrlTemplate; - result = replace(CODE_PLACEHOLDER, - returnRaw ? rawResult.getText() : resultHandler.getDisplayContents(), result); - result = replace(RAW_CODE_PLACEHOLDER, rawResult.getText(), result); - result = replace(FORMAT_PLACEHOLDER, rawResult.getBarcodeFormat().toString(), result); - result = replace(TYPE_PLACEHOLDER, resultHandler.getType().toString(), result); - result = replace(META_PLACEHOLDER, String.valueOf(rawResult.getResultMetadata()), result); - return result; - } - - private static String replace(CharSequence placeholder, CharSequence with, String pattern) { - CharSequence escapedWith = with == null ? "" : with; - try { - escapedWith = URLEncoder.encode(escapedWith.toString(), "UTF-8"); - } catch (UnsupportedEncodingException e) { - // can't happen; UTF-8 is always supported. Continue, I guess, without encoding - } - return pattern.replace(placeholder, escapedWith); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ViewfinderResultPointCallback.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ViewfinderResultPointCallback.java deleted file mode 100755 index 48009a90ff..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ViewfinderResultPointCallback.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2009 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import com.google.zxing.ResultPoint; -import com.google.zxing.ResultPointCallback; - -final class ViewfinderResultPointCallback implements ResultPointCallback { - - private final ViewfinderView viewfinderView; - - ViewfinderResultPointCallback(ViewfinderView viewfinderView) { - this.viewfinderView = viewfinderView; - } - - @Override - public void foundPossibleResultPoint(ResultPoint point) { - viewfinderView.addPossibleResultPoint(point); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ViewfinderView.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ViewfinderView.java deleted file mode 100755 index 84a0e06a90..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/ViewfinderView.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.util.AttributeSet; -import android.view.View; - -import com.alibaba.weex.R; -import com.google.zxing.ResultPoint; -import com.google.zxing.client.android.camera.CameraManager; - -import java.util.ArrayList; -import java.util.List; - -/** - * This view is overlaid on top of the camera preview. It adds the viewfinder rectangle and partial - * transparency outside it, as well as the laser scanner animation and result points. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class ViewfinderView extends View { - - private static final int[] SCANNER_ALPHA = {0, 64, 128, 192, 255, 192, 128, 64}; - private static final long ANIMATION_DELAY = 80L; - private static final int CURRENT_POINT_OPACITY = 0xA0; - private static final int MAX_RESULT_POINTS = 20; - private static final int POINT_SIZE = 6; - - private CameraManager cameraManager; - private final Paint paint; - private Bitmap resultBitmap; - private final int maskColor; - private final int resultColor; - private final int laserColor; - private final int resultPointColor; - private int scannerAlpha; - private List possibleResultPoints; - private List lastPossibleResultPoints; - - // This constructor is used when the class is built from an XML resource. - public ViewfinderView(Context context, AttributeSet attrs) { - super(context, attrs); - - // Initialize these once for performance rather than calling them every time in onDraw(). - paint = new Paint(Paint.ANTI_ALIAS_FLAG); - Resources resources = getResources(); - maskColor = resources.getColor(R.color.viewfinder_mask); - resultColor = resources.getColor(R.color.result_view); - laserColor = resources.getColor(R.color.viewfinder_laser); - resultPointColor = resources.getColor(R.color.possible_result_points); - scannerAlpha = 0; - possibleResultPoints = new ArrayList<>(5); - lastPossibleResultPoints = null; - } - - public void setCameraManager(CameraManager cameraManager) { - this.cameraManager = cameraManager; - } - - @SuppressLint("DrawAllocation") - @Override - public void onDraw(Canvas canvas) { - if (cameraManager == null) { - return; // not ready yet, early draw before done configuring - } - Rect frame = cameraManager.getFramingRect(); - Rect previewFrame = cameraManager.getFramingRectInPreview(); - if (frame == null || previewFrame == null) { - return; - } - int width = canvas.getWidth(); - int height = canvas.getHeight(); - - // Draw the exterior (i.e. outside the framing rect) darkened - paint.setColor(resultBitmap != null ? resultColor : maskColor); - canvas.drawRect(0, 0, width, frame.top, paint); - canvas.drawRect(0, frame.top, frame.left, frame.bottom + 1, paint); - canvas.drawRect(frame.right + 1, frame.top, width, frame.bottom + 1, paint); - canvas.drawRect(0, frame.bottom + 1, width, height, paint); - - if (resultBitmap != null) { - // Draw the opaque result bitmap over the scanning rectangle - paint.setAlpha(CURRENT_POINT_OPACITY); - canvas.drawBitmap(resultBitmap, null, frame, paint); - } else { - - // Draw a red "laser scanner" line through the middle to show decoding is active - paint.setColor(laserColor); - paint.setAlpha(SCANNER_ALPHA[scannerAlpha]); - scannerAlpha = (scannerAlpha + 1) % SCANNER_ALPHA.length; - int middle = frame.height() / 2 + frame.top; - canvas.drawRect(frame.left + 2, middle - 1, frame.right - 1, middle + 2, paint); - - float scaleX = frame.width() / (float) previewFrame.width(); - float scaleY = frame.height() / (float) previewFrame.height(); - - List currentPossible = possibleResultPoints; - List currentLast = lastPossibleResultPoints; - int frameLeft = frame.left; - int frameTop = frame.top; - if (currentPossible.isEmpty()) { - lastPossibleResultPoints = null; - } else { - possibleResultPoints = new ArrayList<>(5); - lastPossibleResultPoints = currentPossible; - paint.setAlpha(CURRENT_POINT_OPACITY); - paint.setColor(resultPointColor); - synchronized (currentPossible) { - for (ResultPoint point : currentPossible) { - canvas.drawCircle(frameLeft + (int) (point.getX() * scaleX), - frameTop + (int) (point.getY() * scaleY), - POINT_SIZE, paint); - } - } - } - if (currentLast != null) { - paint.setAlpha(CURRENT_POINT_OPACITY / 2); - paint.setColor(resultPointColor); - synchronized (currentLast) { - float radius = POINT_SIZE / 2.0f; - for (ResultPoint point : currentLast) { - canvas.drawCircle(frameLeft + (int) (point.getX() * scaleX), - frameTop + (int) (point.getY() * scaleY), - radius, paint); - } - } - } - - // Request another update at the animation interval, but only repaint the laser line, - // not the entire viewfinder mask. - postInvalidateDelayed(ANIMATION_DELAY, - frame.left - POINT_SIZE, - frame.top - POINT_SIZE, - frame.right + POINT_SIZE, - frame.bottom + POINT_SIZE); - } - } - - public void drawViewfinder() { - Bitmap resultBitmap = this.resultBitmap; - this.resultBitmap = null; - if (resultBitmap != null) { - resultBitmap.recycle(); - } - invalidate(); - } - - /** - * Draw a bitmap with the result points highlighted instead of the live scanning display. - * - * @param barcode An image of the decoded barcode. - */ - public void drawResultBitmap(Bitmap barcode) { - resultBitmap = barcode; - invalidate(); - } - - public void addPossibleResultPoint(ResultPoint point) { - List points = possibleResultPoints; - synchronized (points) { - points.add(point); - int size = points.size(); - if (size > MAX_RESULT_POINTS) { - // trim it - points.subList(0, size - MAX_RESULT_POINTS / 2).clear(); - } - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/BrowseBookListener.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/BrowseBookListener.java deleted file mode 100755 index 7d8a7c8d09..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/BrowseBookListener.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2009 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.book; - -import java.util.List; - -import android.content.Intent; -import android.net.Uri; -import android.view.View; -import android.widget.AdapterView; - -import com.google.zxing.client.android.LocaleManager; - -final class BrowseBookListener implements AdapterView.OnItemClickListener { - - private final SearchBookContentsActivity activity; - private final List items; - - BrowseBookListener(SearchBookContentsActivity activity, List items) { - this.activity = activity; - this.items = items; - } - - @Override - public void onItemClick(AdapterView parent, View v, int position, long id) { - if (position < 1) { - // Clicked header, ignore it - return; - } - int itemOffset = position - 1; - if (itemOffset >= items.size()) { - return; - } - String pageId = items.get(itemOffset).getPageId(); - String query = SearchBookContentsResult.getQuery(); - if (LocaleManager.isBookSearchUrl(activity.getISBN()) && !pageId.isEmpty()) { - String uri = activity.getISBN(); - int equals = uri.indexOf('='); - String volumeId = uri.substring(equals + 1); - String readBookURI = "http://books.google." + - LocaleManager.getBookSearchCountryTLD(activity) + - "/books?id=" + volumeId + "&pg=" + pageId + "&vq=" + query; - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(readBookURI)); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - activity.startActivity(intent); - } - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsActivity.java deleted file mode 100755 index c33dbac191..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsActivity.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.book; - -import android.app.Activity; -import android.content.Intent; -import android.os.AsyncTask; -import android.os.Bundle; -import android.util.Log; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.View; -import android.webkit.CookieManager; -import android.webkit.CookieSyncManager; -import android.widget.EditText; -import android.widget.ListView; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.google.zxing.client.android.HttpHelper; -import com.google.zxing.client.android.Intents; -import com.google.zxing.client.android.LocaleManager; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Pattern; - -/** - * Uses Google Book Search to find a word or phrase in the requested book. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class SearchBookContentsActivity extends Activity { - - private static final String TAG = SearchBookContentsActivity.class.getSimpleName(); - - private static final Pattern TAG_PATTERN = Pattern.compile("\\<.*?\\>"); - private static final Pattern LT_ENTITY_PATTERN = Pattern.compile("<"); - private static final Pattern GT_ENTITY_PATTERN = Pattern.compile(">"); - private static final Pattern QUOTE_ENTITY_PATTERN = Pattern.compile("'"); - private static final Pattern QUOT_ENTITY_PATTERN = Pattern.compile("""); - - private String isbn; - private EditText queryTextView; - private View queryButton; - private ListView resultListView; - private TextView headerView; - private AsyncTask networkTask; - - private final View.OnClickListener buttonListener = new View.OnClickListener() { - @Override - public void onClick(View view) { - launchSearch(); - } - }; - - private final View.OnKeyListener keyListener = new View.OnKeyListener() { - @Override - public boolean onKey(View view, int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) { - launchSearch(); - return true; - } - return false; - } - }; - - String getISBN() { - return isbn; - } - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Make sure that expired cookies are removed on launch. - CookieSyncManager.createInstance(this); - CookieManager.getInstance().removeExpiredCookie(); - - Intent intent = getIntent(); - if (intent == null || !intent.getAction().equals(Intents.SearchBookContents.ACTION)) { - finish(); - return; - } - - isbn = intent.getStringExtra(Intents.SearchBookContents.ISBN); - if (LocaleManager.isBookSearchUrl(isbn)) { - setTitle(getString(R.string.sbc_name)); - } else { - setTitle(getString(R.string.sbc_name) + ": ISBN " + isbn); - } - - setContentView(R.layout.search_book_contents); - queryTextView = (EditText) findViewById(R.id.query_text_view); - - String initialQuery = intent.getStringExtra(Intents.SearchBookContents.QUERY); - if (initialQuery != null && !initialQuery.isEmpty()) { - // Populate the search box but don't trigger the search - queryTextView.setText(initialQuery); - } - queryTextView.setOnKeyListener(keyListener); - - queryButton = findViewById(R.id.query_button); - queryButton.setOnClickListener(buttonListener); - - resultListView = (ListView) findViewById(R.id.result_list_view); - LayoutInflater factory = LayoutInflater.from(this); - headerView = (TextView) factory.inflate(R.layout.search_book_contents_header, - resultListView, false); - resultListView.addHeaderView(headerView); - } - - @Override - protected void onResume() { - super.onResume(); - queryTextView.selectAll(); - } - - @Override - protected void onPause() { - AsyncTask oldTask = networkTask; - if (oldTask != null) { - oldTask.cancel(true); - networkTask = null; - } - super.onPause(); - } - - private void launchSearch() { - String query = queryTextView.getText().toString(); - if (query != null && !query.isEmpty()) { - AsyncTask oldTask = networkTask; - if (oldTask != null) { - oldTask.cancel(true); - } - networkTask = new NetworkTask(); - networkTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, query, isbn); - headerView.setText(R.string.msg_sbc_searching_book); - resultListView.setAdapter(null); - queryTextView.setEnabled(false); - queryButton.setEnabled(false); - } - } - - private final class NetworkTask extends AsyncTask { - - @Override - protected JSONObject doInBackground(String... args) { - try { - // These return a JSON result which describes if and where the query was found. This API may - // break or disappear at any time in the future. Since this is an API call rather than a - // website, we don't use LocaleManager to change the TLD. - String theQuery = args[0]; - String theIsbn = args[1]; - String uri; - if (LocaleManager.isBookSearchUrl(theIsbn)) { - int equals = theIsbn.indexOf('='); - String volumeId = theIsbn.substring(equals + 1); - uri = "http://www.google.com/books?id=" + volumeId + "&jscmd=SearchWithinVolume2&q=" + theQuery; - } else { - uri = "http://www.google.com/books?vid=isbn" + theIsbn + "&jscmd=SearchWithinVolume2&q=" + theQuery; - } - CharSequence content = HttpHelper.downloadViaHttp(uri, HttpHelper.ContentType.JSON); - return new JSONObject(content.toString()); - } catch (IOException ioe) { - Log.w(TAG, "Error accessing book search", ioe); - return null; - } catch (JSONException je) { - Log.w(TAG, "Error accessing book search", je); - return null; - } - } - - @Override - protected void onPostExecute(JSONObject result) { - if (result == null) { - headerView.setText(R.string.msg_sbc_failed); - } else { - handleSearchResults(result); - } - queryTextView.setEnabled(true); - queryTextView.selectAll(); - queryButton.setEnabled(true); - } - - // Currently there is no way to distinguish between a query which had no results and a book - // which is not searchable - both return zero results. - private void handleSearchResults(JSONObject json) { - try { - int count = json.getInt("number_of_results"); - headerView.setText(getString(R.string.msg_sbc_results) + " : " + count); - if (count > 0) { - JSONArray results = json.getJSONArray("search_results"); - SearchBookContentsResult.setQuery(queryTextView.getText().toString()); - List items = new ArrayList<>(count); - for (int x = 0; x < count; x++) { - items.add(parseResult(results.getJSONObject(x))); - } - resultListView.setOnItemClickListener(new BrowseBookListener(SearchBookContentsActivity.this, items)); - resultListView.setAdapter(new SearchBookContentsAdapter(SearchBookContentsActivity.this, items)); - } else { - String searchable = json.optString("searchable"); - if ("false".equals(searchable)) { - headerView.setText(R.string.msg_sbc_book_not_searchable); - } - resultListView.setAdapter(null); - } - } catch (JSONException e) { - Log.w(TAG, "Bad JSON from book search", e); - resultListView.setAdapter(null); - headerView.setText(R.string.msg_sbc_failed); - } - } - - // Available fields: page_id, page_number, snippet_text - private SearchBookContentsResult parseResult(JSONObject json) { - - String pageId; - String pageNumber; - String snippet; - try { - pageId = json.getString("page_id"); - pageNumber = json.optString("page_number"); - snippet = json.optString("snippet_text"); - } catch (JSONException e) { - Log.w(TAG, e); - // Never seen in the wild, just being complete. - return new SearchBookContentsResult(getString(R.string.msg_sbc_no_page_returned), "", "", false); - } - - if (pageNumber == null || pageNumber.isEmpty()) { - // This can happen for text on the jacket, and possibly other reasons. - pageNumber = ""; - } else { - pageNumber = getString(R.string.msg_sbc_page) + ' ' + pageNumber; - } - - boolean valid = snippet != null && !snippet.isEmpty(); - if (valid) { - // Remove all HTML tags and encoded characters. - snippet = TAG_PATTERN.matcher(snippet).replaceAll(""); - snippet = LT_ENTITY_PATTERN.matcher(snippet).replaceAll("<"); - snippet = GT_ENTITY_PATTERN.matcher(snippet).replaceAll(">"); - snippet = QUOTE_ENTITY_PATTERN.matcher(snippet).replaceAll("'"); - snippet = QUOT_ENTITY_PATTERN.matcher(snippet).replaceAll("\""); - } else { - snippet = '(' + getString(R.string.msg_sbc_snippet_unavailable) + ')'; - } - - return new SearchBookContentsResult(pageId, pageNumber, snippet, valid); - } - - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsAdapter.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsAdapter.java deleted file mode 100755 index 49eaba736d..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsAdapter.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.book; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; - -import com.alibaba.weex.R; - -import java.util.List; - - -/** - * Manufactures list items which represent SBC results. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -final class SearchBookContentsAdapter extends ArrayAdapter { - - SearchBookContentsAdapter(Context context, List items) { - super(context, R.layout.search_book_contents_list_item, 0, items); - } - - @Override - public View getView(int position, View view, ViewGroup viewGroup) { - SearchBookContentsListItem listItem; - - if (view == null) { - LayoutInflater factory = LayoutInflater.from(getContext()); - listItem = (SearchBookContentsListItem) factory.inflate( - R.layout.search_book_contents_list_item, viewGroup, false); - } else { - if (view instanceof SearchBookContentsListItem) { - listItem = (SearchBookContentsListItem) view; - } else { - return view; - } - } - - SearchBookContentsResult result = getItem(position); - listItem.set(result); - return listItem; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsListItem.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsListItem.java deleted file mode 100755 index 357d7efa94..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsListItem.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.book; - -import android.content.Context; -import android.graphics.Typeface; -import android.text.Spannable; -import android.text.SpannableString; -import android.text.style.StyleSpan; -import android.util.AttributeSet; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.alibaba.weex.R; - -import java.util.Locale; - - -/** - * A list item which displays the page number and snippet of this search result. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class SearchBookContentsListItem extends LinearLayout { - private TextView pageNumberView; - private TextView snippetView; - - SearchBookContentsListItem(Context context) { - super(context); - } - - public SearchBookContentsListItem(Context context, AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - pageNumberView = (TextView) findViewById(R.id.page_number_view); - snippetView = (TextView) findViewById(R.id.snippet_view); - } - - public void set(SearchBookContentsResult result) { - pageNumberView.setText(result.getPageNumber()); - String snippet = result.getSnippet(); - if (snippet.isEmpty()) { - snippetView.setText(""); - } else { - if (result.getValidSnippet()) { - String lowerQuery = SearchBookContentsResult.getQuery().toLowerCase(Locale.getDefault()); - String lowerSnippet = snippet.toLowerCase(Locale.getDefault()); - Spannable styledSnippet = new SpannableString(snippet); - StyleSpan boldSpan = new StyleSpan(Typeface.BOLD); - int queryLength = lowerQuery.length(); - int offset = 0; - while (true) { - int pos = lowerSnippet.indexOf(lowerQuery, offset); - if (pos < 0) { - break; - } - styledSnippet.setSpan(boldSpan, pos, pos + queryLength, 0); - offset = pos + queryLength; - } - snippetView.setText(styledSnippet); - } else { - // This may be an error message, so don't try to bold the query terms within it - snippetView.setText(snippet); - } - } - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsResult.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsResult.java deleted file mode 100755 index ffaafb33b9..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/book/SearchBookContentsResult.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.book; - -/** - * The underlying data for a SBC result. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -final class SearchBookContentsResult { - - private static String query = null; - - private final String pageId; - private final String pageNumber; - private final String snippet; - private final boolean validSnippet; - - SearchBookContentsResult(String pageId, - String pageNumber, - String snippet, - boolean validSnippet) { - this.pageId = pageId; - this.pageNumber = pageNumber; - this.snippet = snippet; - this.validSnippet = validSnippet; - } - - public static void setQuery(String query) { - SearchBookContentsResult.query = query; - } - - public String getPageId() { - return pageId; - } - - public String getPageNumber() { - return pageNumber; - } - - public String getSnippet() { - return snippet; - } - - public boolean getValidSnippet() { - return validSnippet; - } - - public static String getQuery() { - return query; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/AutoFocusManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/AutoFocusManager.java deleted file mode 100755 index b83e7caadf..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/AutoFocusManager.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.concurrent.RejectedExecutionException; - -import android.content.Context; -import android.content.SharedPreferences; -import android.hardware.Camera; -import android.os.AsyncTask; -import android.preference.PreferenceManager; -import android.util.Log; - -import com.google.zxing.client.android.PreferencesActivity; - -final class AutoFocusManager implements Camera.AutoFocusCallback { - - private static final String TAG = AutoFocusManager.class.getSimpleName(); - - private static final long AUTO_FOCUS_INTERVAL_MS = 2000L; - private static final Collection FOCUS_MODES_CALLING_AF; - static { - FOCUS_MODES_CALLING_AF = new ArrayList<>(2); - FOCUS_MODES_CALLING_AF.add(Camera.Parameters.FOCUS_MODE_AUTO); - FOCUS_MODES_CALLING_AF.add(Camera.Parameters.FOCUS_MODE_MACRO); - } - - private boolean stopped; - private boolean focusing; - private final boolean useAutoFocus; - private final Camera camera; - private AsyncTask outstandingTask; - - AutoFocusManager(Context context, Camera camera) { - this.camera = camera; - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); - String currentFocusMode = camera.getParameters().getFocusMode(); - useAutoFocus = - sharedPrefs.getBoolean(PreferencesActivity.KEY_AUTO_FOCUS, true) && - FOCUS_MODES_CALLING_AF.contains(currentFocusMode); - Log.i(TAG, "Current focus mode '" + currentFocusMode + "'; use auto focus? " + useAutoFocus); - start(); - } - - @Override - public synchronized void onAutoFocus(boolean success, Camera theCamera) { - focusing = false; - autoFocusAgainLater(); - } - - private synchronized void autoFocusAgainLater() { - if (!stopped && outstandingTask == null) { - AutoFocusTask newTask = new AutoFocusTask(); - try { - newTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - outstandingTask = newTask; - } catch (RejectedExecutionException ree) { - Log.w(TAG, "Could not request auto focus", ree); - } - } - } - - synchronized void start() { - if (useAutoFocus) { - outstandingTask = null; - if (!stopped && !focusing) { - try { - camera.autoFocus(this); - focusing = true; - } catch (RuntimeException re) { - // Have heard RuntimeException reported in Android 4.0.x+; continue? - Log.w(TAG, "Unexpected exception while focusing", re); - // Try again later to keep cycle going - autoFocusAgainLater(); - } - } - } - } - - private synchronized void cancelOutstandingTask() { - if (outstandingTask != null) { - if (outstandingTask.getStatus() != AsyncTask.Status.FINISHED) { - outstandingTask.cancel(true); - } - outstandingTask = null; - } - } - - synchronized void stop() { - stopped = true; - if (useAutoFocus) { - cancelOutstandingTask(); - // Doesn't hurt to call this even if not focusing - try { - camera.cancelAutoFocus(); - } catch (RuntimeException re) { - // Have heard RuntimeException reported in Android 4.0.x+; continue? - Log.w(TAG, "Unexpected exception while cancelling focusing", re); - } - } - } - - private final class AutoFocusTask extends AsyncTask { - @Override - protected Object doInBackground(Object... voids) { - try { - Thread.sleep(AUTO_FOCUS_INTERVAL_MS); - } catch (InterruptedException e) { - // continue - } - start(); - return null; - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraConfigurationManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraConfigurationManager.java deleted file mode 100755 index 45af1a03f9..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraConfigurationManager.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera; - -import android.content.Context; -import android.content.SharedPreferences; -import android.graphics.Point; -import android.hardware.Camera; -import android.preference.PreferenceManager; -import android.util.Log; -import android.view.Display; -import android.view.Surface; -import android.view.WindowManager; - -import com.google.zxing.client.android.PreferencesActivity; -import com.google.zxing.client.android.camera.open.CameraFacing; -import com.google.zxing.client.android.camera.open.OpenCamera; - -/** - * A class which deals with reading, parsing, and setting the camera parameters which are used to - * configure the camera hardware. - */ -final class CameraConfigurationManager { - - private static final String TAG = "CameraConfiguration"; - - private final Context context; - private int cwNeededRotation; - private int cwRotationFromDisplayToCamera; - private Point screenResolution; - private Point cameraResolution; - private Point bestPreviewSize; - private Point previewSizeOnScreen; - - CameraConfigurationManager(Context context) { - this.context = context; - } - - /** - * Reads, one time, values from the camera that are needed by the app. - */ - void initFromCameraParameters(OpenCamera camera) { - Camera.Parameters parameters = camera.getCamera().getParameters(); - WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - Display display = manager.getDefaultDisplay(); - - int displayRotation = display.getRotation(); - int cwRotationFromNaturalToDisplay; - switch (displayRotation) { - case Surface.ROTATION_0: - cwRotationFromNaturalToDisplay = 0; - break; - case Surface.ROTATION_90: - cwRotationFromNaturalToDisplay = 90; - break; - case Surface.ROTATION_180: - cwRotationFromNaturalToDisplay = 180; - break; - case Surface.ROTATION_270: - cwRotationFromNaturalToDisplay = 270; - break; - default: - // Have seen this return incorrect values like -90 - if (displayRotation % 90 == 0) { - cwRotationFromNaturalToDisplay = (360 + displayRotation) % 360; - } else { - throw new IllegalArgumentException("Bad rotation: " + displayRotation); - } - } - Log.i(TAG, "Display at: " + cwRotationFromNaturalToDisplay); - - int cwRotationFromNaturalToCamera = camera.getOrientation(); - Log.i(TAG, "Camera at: " + cwRotationFromNaturalToCamera); - - // Still not 100% sure about this. But acts like we need to flip this: - if (camera.getFacing() == CameraFacing.FRONT) { - cwRotationFromNaturalToCamera = (360 - cwRotationFromNaturalToCamera) % 360; - Log.i(TAG, "Front camera overriden to: " + cwRotationFromNaturalToCamera); - } - - /* - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - String overrideRotationString; - if (camera.getFacing() == CameraFacing.FRONT) { - overrideRotationString = prefs.getString(PreferencesActivity.KEY_FORCE_CAMERA_ORIENTATION_FRONT, null); - } else { - overrideRotationString = prefs.getString(PreferencesActivity.KEY_FORCE_CAMERA_ORIENTATION, null); - } - if (overrideRotationString != null && !"-".equals(overrideRotationString)) { - Log.i(TAG, "Overriding camera manually to " + overrideRotationString); - cwRotationFromNaturalToCamera = Integer.parseInt(overrideRotationString); - } - */ - - cwRotationFromDisplayToCamera = - (360 + cwRotationFromNaturalToCamera - cwRotationFromNaturalToDisplay) % 360; - Log.i(TAG, "Final display orientation: " + cwRotationFromDisplayToCamera); - if (camera.getFacing() == CameraFacing.FRONT) { - Log.i(TAG, "Compensating rotation for front camera"); - cwNeededRotation = (360 - cwRotationFromDisplayToCamera) % 360; - } else { - cwNeededRotation = cwRotationFromDisplayToCamera; - } - Log.i(TAG, "Clockwise rotation from display to camera: " + cwNeededRotation); - - Point theScreenResolution = new Point(); - display.getSize(theScreenResolution); - screenResolution = theScreenResolution; - Log.i(TAG, "Screen resolution in current orientation: " + screenResolution); - cameraResolution = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolution); - Log.i(TAG, "Camera resolution: " + cameraResolution); - bestPreviewSize = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolution); - Log.i(TAG, "Best available preview size: " + bestPreviewSize); - - boolean isScreenPortrait = screenResolution.x < screenResolution.y; - boolean isPreviewSizePortrait = bestPreviewSize.x < bestPreviewSize.y; - - if (isScreenPortrait == isPreviewSizePortrait) { - previewSizeOnScreen = bestPreviewSize; - } else { - previewSizeOnScreen = new Point(bestPreviewSize.y, bestPreviewSize.x); - } - Log.i(TAG, "Preview size on screen: " + previewSizeOnScreen); - } - - void setDesiredCameraParameters(OpenCamera camera, boolean safeMode) { - - Camera theCamera = camera.getCamera(); - Camera.Parameters parameters = theCamera.getParameters(); - - if (parameters == null) { - Log.w(TAG, "Device error: no camera parameters are available. Proceeding without configuration."); - return; - } - - Log.i(TAG, "Initial camera parameters: " + parameters.flatten()); - - if (safeMode) { - Log.w(TAG, "In camera config safe mode -- most settings will not be honored"); - } - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - - initializeTorch(parameters, prefs, safeMode); - - CameraConfigurationUtils.setFocus( - parameters, - prefs.getBoolean(PreferencesActivity.KEY_AUTO_FOCUS, true), - prefs.getBoolean(PreferencesActivity.KEY_DISABLE_CONTINUOUS_FOCUS, true), - safeMode); - - if (!safeMode) { - if (prefs.getBoolean(PreferencesActivity.KEY_INVERT_SCAN, false)) { - CameraConfigurationUtils.setInvertColor(parameters); - } - - if (!prefs.getBoolean(PreferencesActivity.KEY_DISABLE_BARCODE_SCENE_MODE, true)) { - CameraConfigurationUtils.setBarcodeSceneMode(parameters); - } - - if (!prefs.getBoolean(PreferencesActivity.KEY_DISABLE_METERING, true)) { - CameraConfigurationUtils.setVideoStabilization(parameters); - CameraConfigurationUtils.setFocusArea(parameters); - CameraConfigurationUtils.setMetering(parameters); - } - - } - - parameters.setPreviewSize(bestPreviewSize.x, bestPreviewSize.y); - - theCamera.setDisplayOrientation(90); - theCamera.setParameters(parameters); - - theCamera.setDisplayOrientation(cwRotationFromDisplayToCamera); - - Camera.Parameters afterParameters = theCamera.getParameters(); - Camera.Size afterSize = afterParameters.getPreviewSize(); - if (afterSize != null && (bestPreviewSize.x != afterSize.width || bestPreviewSize.y != afterSize.height)) { - Log.w(TAG, "Camera said it supported preview size " + bestPreviewSize.x + 'x' + bestPreviewSize.y + - ", but after setting it, preview size is " + afterSize.width + 'x' + afterSize.height); - bestPreviewSize.x = afterSize.width; - bestPreviewSize.y = afterSize.height; - } - } - - Point getBestPreviewSize() { - return bestPreviewSize; - } - - Point getPreviewSizeOnScreen() { - return previewSizeOnScreen; - } - - Point getCameraResolution() { - return cameraResolution; - } - - Point getScreenResolution() { - return screenResolution; - } - - int getCWNeededRotation() { - return cwNeededRotation; - } - - boolean getTorchState(Camera camera) { - if (camera != null) { - Camera.Parameters parameters = camera.getParameters(); - if (parameters != null) { - String flashMode = camera.getParameters().getFlashMode(); - return flashMode != null && - (Camera.Parameters.FLASH_MODE_ON.equals(flashMode) || - Camera.Parameters.FLASH_MODE_TORCH.equals(flashMode)); - } - } - return false; - } - - void setTorch(Camera camera, boolean newSetting) { - Camera.Parameters parameters = camera.getParameters(); - doSetTorch(parameters, newSetting, false); - camera.setParameters(parameters); - } - - private void initializeTorch(Camera.Parameters parameters, SharedPreferences prefs, boolean safeMode) { - boolean currentSetting = FrontLightMode.readPref(prefs) == FrontLightMode.ON; - doSetTorch(parameters, currentSetting, safeMode); - } - - private void doSetTorch(Camera.Parameters parameters, boolean newSetting, boolean safeMode) { - CameraConfigurationUtils.setTorch(parameters, newSetting); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - if (!safeMode && !prefs.getBoolean(PreferencesActivity.KEY_DISABLE_EXPOSURE, true)) { - CameraConfigurationUtils.setBestExposure(parameters, newSetting); - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraConfigurationUtils.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraConfigurationUtils.java deleted file mode 100755 index 32260a18af..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraConfigurationUtils.java +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Copyright (C) 2014 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; -import java.util.regex.Pattern; - -import android.annotation.TargetApi; -import android.graphics.Point; -import android.graphics.Rect; -import android.hardware.Camera; -import android.os.Build; -import android.util.Log; - -/** - * Utility methods for configuring the Android camera. - * - * @author Sean Owen - */ -@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) -public final class CameraConfigurationUtils { - - private static final String TAG = "CameraConfiguration"; - - private static final Pattern SEMICOLON = Pattern.compile(";"); - - private static final int MIN_PREVIEW_PIXELS = 480 * 320; // normal screen - private static final float MAX_EXPOSURE_COMPENSATION = 1.5f; - private static final float MIN_EXPOSURE_COMPENSATION = 0.0f; - private static final double MAX_ASPECT_DISTORTION = 0.15; - private static final int MIN_FPS = 10; - private static final int MAX_FPS = 20; - private static final int AREA_PER_1000 = 400; - - private CameraConfigurationUtils() { - } - - public static void setFocus(Camera.Parameters parameters, - boolean autoFocus, - boolean disableContinuous, - boolean safeMode) { - List supportedFocusModes = parameters.getSupportedFocusModes(); - String focusMode = null; - if (autoFocus) { - if (safeMode || disableContinuous) { - focusMode = findSettableValue("focus mode", - supportedFocusModes, - Camera.Parameters.FOCUS_MODE_AUTO); - } else { - focusMode = findSettableValue("focus mode", - supportedFocusModes, - Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE, - Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO, - Camera.Parameters.FOCUS_MODE_AUTO); - } - } - // Maybe selected auto-focus but not available, so fall through here: - if (!safeMode && focusMode == null) { - focusMode = findSettableValue("focus mode", - supportedFocusModes, - Camera.Parameters.FOCUS_MODE_MACRO, - Camera.Parameters.FOCUS_MODE_EDOF); - } - if (focusMode != null) { - if (focusMode.equals(parameters.getFocusMode())) { - Log.i(TAG, "Focus mode already set to " + focusMode); - } else { - parameters.setFocusMode(focusMode); - } - } - } - - public static void setTorch(Camera.Parameters parameters, boolean on) { - List supportedFlashModes = parameters.getSupportedFlashModes(); - String flashMode; - if (on) { - flashMode = findSettableValue("flash mode", - supportedFlashModes, - Camera.Parameters.FLASH_MODE_TORCH, - Camera.Parameters.FLASH_MODE_ON); - } else { - flashMode = findSettableValue("flash mode", - supportedFlashModes, - Camera.Parameters.FLASH_MODE_OFF); - } - if (flashMode != null) { - if (flashMode.equals(parameters.getFlashMode())) { - Log.i(TAG, "Flash mode already set to " + flashMode); - } else { - Log.i(TAG, "Setting flash mode to " + flashMode); - parameters.setFlashMode(flashMode); - } - } - } - - public static void setBestExposure(Camera.Parameters parameters, boolean lightOn) { - int minExposure = parameters.getMinExposureCompensation(); - int maxExposure = parameters.getMaxExposureCompensation(); - float step = parameters.getExposureCompensationStep(); - if ((minExposure != 0 || maxExposure != 0) && step > 0.0f) { - // Set low when light is on - float targetCompensation = lightOn ? MIN_EXPOSURE_COMPENSATION : MAX_EXPOSURE_COMPENSATION; - int compensationSteps = Math.round(targetCompensation / step); - float actualCompensation = step * compensationSteps; - // Clamp value: - compensationSteps = Math.max(Math.min(compensationSteps, maxExposure), minExposure); - if (parameters.getExposureCompensation() == compensationSteps) { - Log.i(TAG, "Exposure compensation already set to " + compensationSteps + " / " + actualCompensation); - } else { - Log.i(TAG, "Setting exposure compensation to " + compensationSteps + " / " + actualCompensation); - parameters.setExposureCompensation(compensationSteps); - } - } else { - Log.i(TAG, "Camera does not support exposure compensation"); - } - } - - public static void setBestPreviewFPS(Camera.Parameters parameters) { - setBestPreviewFPS(parameters, MIN_FPS, MAX_FPS); - } - - public static void setBestPreviewFPS(Camera.Parameters parameters, int minFPS, int maxFPS) { - List supportedPreviewFpsRanges = parameters.getSupportedPreviewFpsRange(); - Log.i(TAG, "Supported FPS ranges: " + toString(supportedPreviewFpsRanges)); - if (supportedPreviewFpsRanges != null && !supportedPreviewFpsRanges.isEmpty()) { - int[] suitableFPSRange = null; - for (int[] fpsRange : supportedPreviewFpsRanges) { - int thisMin = fpsRange[Camera.Parameters.PREVIEW_FPS_MIN_INDEX]; - int thisMax = fpsRange[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]; - if (thisMin >= minFPS * 1000 && thisMax <= maxFPS * 1000) { - suitableFPSRange = fpsRange; - break; - } - } - if (suitableFPSRange == null) { - Log.i(TAG, "No suitable FPS range?"); - } else { - int[] currentFpsRange = new int[2]; - parameters.getPreviewFpsRange(currentFpsRange); - if (Arrays.equals(currentFpsRange, suitableFPSRange)) { - Log.i(TAG, "FPS range already set to " + Arrays.toString(suitableFPSRange)); - } else { - Log.i(TAG, "Setting FPS range to " + Arrays.toString(suitableFPSRange)); - parameters.setPreviewFpsRange(suitableFPSRange[Camera.Parameters.PREVIEW_FPS_MIN_INDEX], - suitableFPSRange[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]); - } - } - } - } - - public static void setFocusArea(Camera.Parameters parameters) { - if (parameters.getMaxNumFocusAreas() > 0) { - Log.i(TAG, "Old focus areas: " + toString(parameters.getFocusAreas())); - List middleArea = buildMiddleArea(AREA_PER_1000); - Log.i(TAG, "Setting focus area to : " + toString(middleArea)); - parameters.setFocusAreas(middleArea); - } else { - Log.i(TAG, "Device does not support focus areas"); - } - } - - public static void setMetering(Camera.Parameters parameters) { - if (parameters.getMaxNumMeteringAreas() > 0) { - Log.i(TAG, "Old metering areas: " + parameters.getMeteringAreas()); - List middleArea = buildMiddleArea(AREA_PER_1000); - Log.i(TAG, "Setting metering area to : " + toString(middleArea)); - parameters.setMeteringAreas(middleArea); - } else { - Log.i(TAG, "Device does not support metering areas"); - } - } - - private static List buildMiddleArea(int areaPer1000) { - return Collections.singletonList( - new Camera.Area(new Rect(-areaPer1000, -areaPer1000, areaPer1000, areaPer1000), 1)); - } - - public static void setVideoStabilization(Camera.Parameters parameters) { - if (parameters.isVideoStabilizationSupported()) { - if (parameters.getVideoStabilization()) { - Log.i(TAG, "Video stabilization already enabled"); - } else { - Log.i(TAG, "Enabling video stabilization..."); - parameters.setVideoStabilization(true); - } - } else { - Log.i(TAG, "This device does not support video stabilization"); - } - } - - public static void setBarcodeSceneMode(Camera.Parameters parameters) { - if (Camera.Parameters.SCENE_MODE_BARCODE.equals(parameters.getSceneMode())) { - Log.i(TAG, "Barcode scene mode already set"); - return; - } - String sceneMode = findSettableValue("scene mode", - parameters.getSupportedSceneModes(), - Camera.Parameters.SCENE_MODE_BARCODE); - if (sceneMode != null) { - parameters.setSceneMode(sceneMode); - } - } - - public static void setZoom(Camera.Parameters parameters, double targetZoomRatio) { - if (parameters.isZoomSupported()) { - Integer zoom = indexOfClosestZoom(parameters, targetZoomRatio); - if (zoom == null) { - return; - } - if (parameters.getZoom() == zoom) { - Log.i(TAG, "Zoom is already set to " + zoom); - } else { - Log.i(TAG, "Setting zoom to " + zoom); - parameters.setZoom(zoom); - } - } else { - Log.i(TAG, "Zoom is not supported"); - } - } - - private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) { - List ratios = parameters.getZoomRatios(); - Log.i(TAG, "Zoom ratios: " + ratios); - int maxZoom = parameters.getMaxZoom(); - if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) { - Log.w(TAG, "Invalid zoom ratios!"); - return null; - } - double target100 = 100.0 * targetZoomRatio; - double smallestDiff = Double.POSITIVE_INFINITY; - int closestIndex = 0; - for (int i = 0; i < ratios.size(); i++) { - double diff = Math.abs(ratios.get(i) - target100); - if (diff < smallestDiff) { - smallestDiff = diff; - closestIndex = i; - } - } - Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0)); - return closestIndex; - } - - public static void setInvertColor(Camera.Parameters parameters) { - if (Camera.Parameters.EFFECT_NEGATIVE.equals(parameters.getColorEffect())) { - Log.i(TAG, "Negative effect already set"); - return; - } - String colorMode = findSettableValue("color effect", - parameters.getSupportedColorEffects(), - Camera.Parameters.EFFECT_NEGATIVE); - if (colorMode != null) { - parameters.setColorEffect(colorMode); - } - } - - public static Point findBestPreviewSizeValue(Camera.Parameters parameters, Point screenResolution) { - - List rawSupportedSizes = parameters.getSupportedPreviewSizes(); - if (rawSupportedSizes == null) { - Log.w(TAG, "Device returned no supported preview sizes; using default"); - Camera.Size defaultSize = parameters.getPreviewSize(); - if (defaultSize == null) { - throw new IllegalStateException("Parameters contained no preview size!"); - } - return new Point(defaultSize.width, defaultSize.height); - } - - // Sort by size, descending - List supportedPreviewSizes = new ArrayList(rawSupportedSizes); - Collections.sort(supportedPreviewSizes, new Comparator() { - @Override - public int compare(Camera.Size a, Camera.Size b) { - int aPixels = a.height * a.width; - int bPixels = b.height * b.width; - if (bPixels < aPixels) { - return -1; - } - if (bPixels > aPixels) { - return 1; - } - return 0; - } - }); - - if (Log.isLoggable(TAG, Log.INFO)) { - StringBuilder previewSizesString = new StringBuilder(); - for (Camera.Size supportedPreviewSize : supportedPreviewSizes) { - previewSizesString.append(supportedPreviewSize.width).append('x') - .append(supportedPreviewSize.height).append(' '); - } - Log.i(TAG, "Supported preview sizes: " + previewSizesString); - } - - double screenAspectRatio = (double) screenResolution.x / (double) screenResolution.y; - - // Remove sizes that are unsuitable - Iterator it = supportedPreviewSizes.iterator(); - while (it.hasNext()) { - Camera.Size supportedPreviewSize = it.next(); - int realWidth = supportedPreviewSize.width; - int realHeight = supportedPreviewSize.height; - if (realWidth * realHeight < MIN_PREVIEW_PIXELS) { - it.remove(); - continue; - } - - boolean isCandidatePortrait = realWidth < realHeight; - int maybeFlippedWidth = isCandidatePortrait ? realHeight : realWidth; - int maybeFlippedHeight = isCandidatePortrait ? realWidth : realHeight; - double aspectRatio = (double) maybeFlippedWidth / (double) maybeFlippedHeight; - double distortion = Math.abs(aspectRatio - screenAspectRatio); - if (distortion > MAX_ASPECT_DISTORTION) { - it.remove(); - continue; - } - - if (maybeFlippedWidth == screenResolution.x && maybeFlippedHeight == screenResolution.y) { - Point exactPoint = new Point(realWidth, realHeight); - Log.i(TAG, "Found preview size exactly matching screen size: " + exactPoint); - return exactPoint; - } - } - - // If no exact match, use largest preview size. This was not a great idea on older devices because - // of the additional computation needed. We're likely to get here on newer Android 4+ devices, where - // the CPU is much more powerful. - if (!supportedPreviewSizes.isEmpty()) { - Camera.Size largestPreview = supportedPreviewSizes.get(0); - Point largestSize = new Point(largestPreview.width, largestPreview.height); - Log.i(TAG, "Using largest suitable preview size: " + largestSize); - return largestSize; - } - - // If there is nothing at all suitable, return current preview size - Camera.Size defaultPreview = parameters.getPreviewSize(); - if (defaultPreview == null) { - throw new IllegalStateException("Parameters contained no preview size!"); - } - Point defaultSize = new Point(defaultPreview.width, defaultPreview.height); - Log.i(TAG, "No suitable preview sizes, using default: " + defaultSize); - return defaultSize; - } - - private static String findSettableValue(String name, - Collection supportedValues, - String... desiredValues) { - Log.i(TAG, "Requesting " + name + " value from among: " + Arrays.toString(desiredValues)); - Log.i(TAG, "Supported " + name + " values: " + supportedValues); - if (supportedValues != null) { - for (String desiredValue : desiredValues) { - if (supportedValues.contains(desiredValue)) { - Log.i(TAG, "Can set " + name + " to: " + desiredValue); - return desiredValue; - } - } - } - Log.i(TAG, "No supported values match"); - return null; - } - - private static String toString(Collection arrays) { - if (arrays == null || arrays.isEmpty()) { - return "[]"; - } - StringBuilder buffer = new StringBuilder(); - buffer.append('['); - Iterator it = arrays.iterator(); - while (it.hasNext()) { - buffer.append(Arrays.toString(it.next())); - if (it.hasNext()) { - buffer.append(", "); - } - } - buffer.append(']'); - return buffer.toString(); - } - - private static String toString(Iterable areas) { - if (areas == null) { - return null; - } - StringBuilder result = new StringBuilder(); - for (Camera.Area area : areas) { - result.append(area.rect).append(':').append(area.weight).append(' '); - } - return result.toString(); - } - - public static String collectStats(Camera.Parameters parameters) { - return collectStats(parameters.flatten()); - } - - public static String collectStats(CharSequence flattenedParams) { - StringBuilder result = new StringBuilder(1000); - - result.append("BOARD=").append(Build.BOARD).append('\n'); - result.append("BRAND=").append(Build.BRAND).append('\n'); - result.append("CPU_ABI=").append(Build.CPU_ABI).append('\n'); - result.append("DEVICE=").append(Build.DEVICE).append('\n'); - result.append("DISPLAY=").append(Build.DISPLAY).append('\n'); - result.append("FINGERPRINT=").append(Build.FINGERPRINT).append('\n'); - result.append("HOST=").append(Build.HOST).append('\n'); - result.append("ID=").append(Build.ID).append('\n'); - result.append("MANUFACTURER=").append(Build.MANUFACTURER).append('\n'); - result.append("MODEL=").append(Build.MODEL).append('\n'); - result.append("PRODUCT=").append(Build.PRODUCT).append('\n'); - result.append("TAGS=").append(Build.TAGS).append('\n'); - result.append("TIME=").append(Build.TIME).append('\n'); - result.append("TYPE=").append(Build.TYPE).append('\n'); - result.append("USER=").append(Build.USER).append('\n'); - result.append("VERSION.CODENAME=").append(Build.VERSION.CODENAME).append('\n'); - result.append("VERSION.INCREMENTAL=").append(Build.VERSION.INCREMENTAL).append('\n'); - result.append("VERSION.RELEASE=").append(Build.VERSION.RELEASE).append('\n'); - result.append("VERSION.SDK_INT=").append(Build.VERSION.SDK_INT).append('\n'); - - if (flattenedParams != null) { - String[] params = SEMICOLON.split(flattenedParams); - Arrays.sort(params); - for (String param : params) { - result.append(param).append('\n'); - } - } - - return result.toString(); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraManager.java deleted file mode 100755 index 110f661780..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/CameraManager.java +++ /dev/null @@ -1,338 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera; - -import java.io.IOException; - -import android.content.Context; -import android.graphics.Point; -import android.graphics.Rect; -import android.hardware.Camera; -import android.os.Handler; -import android.util.Log; -import android.view.SurfaceHolder; - -import com.google.zxing.PlanarYUVLuminanceSource; -import com.google.zxing.client.android.camera.open.OpenCamera; -import com.google.zxing.client.android.camera.open.OpenCameraInterface; - -/** - * This object wraps the Camera service object and expects to be the only one talking to it. The - * implementation encapsulates the steps needed to take preview-sized images, which are used for - * both preview and decoding. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class CameraManager { - - private static final String TAG = CameraManager.class.getSimpleName(); - - private static final int MIN_FRAME_WIDTH = 240; - private static final int MIN_FRAME_HEIGHT = 240; - private static final int MAX_FRAME_WIDTH = 1200; // = 5/8 * 1920 - private static final int MAX_FRAME_HEIGHT = 675; // = 5/8 * 1080 - - private final Context context; - private final CameraConfigurationManager configManager; - private OpenCamera camera; - private AutoFocusManager autoFocusManager; - private Rect framingRect; - private Rect framingRectInPreview; - private boolean initialized; - private boolean previewing; - private int requestedCameraId = OpenCameraInterface.NO_REQUESTED_CAMERA; - private int requestedFramingRectWidth; - private int requestedFramingRectHeight; - /** - * Preview frames are delivered here, which we pass on to the registered handler. Make sure to - * clear the handler so it will only receive one message. - */ - private final PreviewCallback previewCallback; - - public CameraManager(Context context) { - this.context = context; - this.configManager = new CameraConfigurationManager(context); - previewCallback = new PreviewCallback(configManager); - } - - /** - * Opens the camera driver and initializes the hardware parameters. - * - * @param holder The surface object which the camera will draw preview frames into. - * @throws IOException Indicates the camera driver failed to open. - */ - public synchronized void openDriver(SurfaceHolder holder) throws IOException { - OpenCamera theCamera = camera; - if (theCamera == null) { - theCamera = OpenCameraInterface.open(requestedCameraId); - if (theCamera == null) { - throw new IOException("Camera.open() failed to return object from driver"); - } - camera = theCamera; - } - - if (!initialized) { - initialized = true; - configManager.initFromCameraParameters(theCamera); - if (requestedFramingRectWidth > 0 && requestedFramingRectHeight > 0) { - setManualFramingRect(requestedFramingRectWidth, requestedFramingRectHeight); - requestedFramingRectWidth = 0; - requestedFramingRectHeight = 0; - } - } - - Camera cameraObject = theCamera.getCamera(); - Camera.Parameters parameters = cameraObject.getParameters(); - String parametersFlattened = parameters == null ? null : parameters.flatten(); // Save these, temporarily - try { - configManager.setDesiredCameraParameters(theCamera, false); - } catch (RuntimeException re) { - // Driver failed - Log.w(TAG, "Camera rejected parameters. Setting only minimal safe-mode parameters"); - Log.i(TAG, "Resetting to saved camera params: " + parametersFlattened); - // Reset: - if (parametersFlattened != null) { - parameters = cameraObject.getParameters(); - parameters.unflatten(parametersFlattened); - try { - cameraObject.setParameters(parameters); - configManager.setDesiredCameraParameters(theCamera, true); - } catch (RuntimeException re2) { - // Well, darn. Give up - Log.w(TAG, "Camera rejected even safe-mode parameters! No configuration"); - } - } - } - cameraObject.setPreviewDisplay(holder); - - } - - public synchronized boolean isOpen() { - return camera != null; - } - - /** - * Closes the camera driver if still in use. - */ - public synchronized void closeDriver() { - if (camera != null) { - camera.getCamera().release(); - camera = null; - // Make sure to clear these each time we close the camera, so that any scanning rect - // requested by intent is forgotten. - framingRect = null; - framingRectInPreview = null; - } - } - - /** - * Asks the camera hardware to begin drawing preview frames to the screen. - */ - public synchronized void startPreview() { - OpenCamera theCamera = camera; - if (theCamera != null && !previewing) { - theCamera.getCamera().startPreview(); - previewing = true; - autoFocusManager = new AutoFocusManager(context, theCamera.getCamera()); - } - } - - /** - * Tells the camera to stop drawing preview frames. - */ - public synchronized void stopPreview() { - if (autoFocusManager != null) { - autoFocusManager.stop(); - autoFocusManager = null; - } - if (camera != null && previewing) { - camera.getCamera().stopPreview(); - previewCallback.setHandler(null, 0); - previewing = false; - } - } - - /** - * Convenience method for {@link com.google.zxing.client.android.CaptureActivity} - * - * @param newSetting if {@code true}, light should be turned on if currently off. And vice versa. - */ - public synchronized void setTorch(boolean newSetting) { - OpenCamera theCamera = camera; - if (theCamera != null) { - if (newSetting != configManager.getTorchState(theCamera.getCamera())) { - boolean wasAutoFocusManager = autoFocusManager != null; - if (wasAutoFocusManager) { - autoFocusManager.stop(); - autoFocusManager = null; - } - configManager.setTorch(theCamera.getCamera(), newSetting); - if (wasAutoFocusManager) { - autoFocusManager = new AutoFocusManager(context, theCamera.getCamera()); - autoFocusManager.start(); - } - } - } - } - - /** - * A single preview frame will be returned to the handler supplied. The data will arrive as byte[] - * in the message.obj field, with width and height encoded as message.arg1 and message.arg2, - * respectively. - * - * @param handler The handler to send the message to. - * @param message The what field of the message to be sent. - */ - public synchronized void requestPreviewFrame(Handler handler, int message) { - OpenCamera theCamera = camera; - if (theCamera != null && previewing) { - previewCallback.setHandler(handler, message); - theCamera.getCamera().setOneShotPreviewCallback(previewCallback); - } - } - - /** - * Calculates the framing rect which the UI should draw to show the user where to place the - * barcode. This target helps with alignment as well as forces the user to hold the device - * far enough away to ensure the image will be in focus. - * - * @return The rectangle to draw on screen in window coordinates. - */ - public synchronized Rect getFramingRect() { - if (framingRect == null) { - if (camera == null) { - return null; - } - Point screenResolution = configManager.getScreenResolution(); - if (screenResolution == null) { - // Called early, before init even finished - return null; - } - - int width = findDesiredDimensionInRange(screenResolution.x, MIN_FRAME_WIDTH, MAX_FRAME_WIDTH); - int height = findDesiredDimensionInRange(screenResolution.y, MIN_FRAME_HEIGHT, MAX_FRAME_HEIGHT); - - int leftOffset = (screenResolution.x - width) / 2; - int topOffset = (screenResolution.y - height) / 2; - framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height); - Log.d(TAG, "Calculated framing rect: " + framingRect); - } - return framingRect; - } - - private static int findDesiredDimensionInRange(int resolution, int hardMin, int hardMax) { - int dim = 5 * resolution / 8; // Target 5/8 of each dimension - if (dim < hardMin) { - return hardMin; - } - if (dim > hardMax) { - return hardMax; - } - return dim; - } - - /** - * Like {@link #getFramingRect} but coordinates are in terms of the preview frame, - * not UI / screen. - * - * @return {@link Rect} expressing barcode scan area in terms of the preview size - */ - public synchronized Rect getFramingRectInPreview() { - if (framingRectInPreview == null) { - Rect framingRect = getFramingRect(); - if (framingRect == null) { - return null; - } - Rect rect = new Rect(framingRect); - Point cameraResolution = configManager.getCameraResolution(); - Point screenResolution = configManager.getScreenResolution(); - if (cameraResolution == null || screenResolution == null) { - // Called early, before init even finished - return null; - } -// rect.left = rect.left * cameraResolution.x / screenResolution.x; -// rect.right = rect.right * cameraResolution.x / screenResolution.x; -// rect.top = rect.top * cameraResolution.y / screenResolution.y; -// rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y; - rect.left = rect.left * cameraResolution.y / screenResolution.x; - rect.right = rect.right * cameraResolution.y / screenResolution.x; - rect.top = rect.top * cameraResolution.x / screenResolution.y; - rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y; - - framingRectInPreview = rect; - } - return framingRectInPreview; - } - - - /** - * Allows third party apps to specify the camera ID, rather than determine - * it automatically based on available cameras and their orientation. - * - * @param cameraId camera ID of the camera to use. A negative value means "no preference". - */ - public synchronized void setManualCameraId(int cameraId) { - requestedCameraId = cameraId; - } - - /** - * Allows third party apps to specify the scanning rectangle dimensions, rather than determine - * them automatically based on screen resolution. - * - * @param width The width in pixels to scan. - * @param height The height in pixels to scan. - */ - public synchronized void setManualFramingRect(int width, int height) { - if (initialized) { - Point screenResolution = configManager.getScreenResolution(); - if (width > screenResolution.x) { - width = screenResolution.x; - } - if (height > screenResolution.y) { - height = screenResolution.y; - } - int leftOffset = (screenResolution.x - width) / 2; - int topOffset = (screenResolution.y - height) / 2; - framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height); - Log.d(TAG, "Calculated manual framing rect: " + framingRect); - framingRectInPreview = null; - } else { - requestedFramingRectWidth = width; - requestedFramingRectHeight = height; - } - } - - /** - * A factory method to build the appropriate LuminanceSource object based on the format - * of the preview buffers, as described by Camera.Parameters. - * - * @param data A preview frame. - * @param width The width of the image. - * @param height The height of the image. - * @return A PlanarYUVLuminanceSource instance. - */ - public PlanarYUVLuminanceSource buildLuminanceSource(byte[] data, int width, int height) { - Rect rect = getFramingRectInPreview(); - if (rect == null) { - return null; - } - // Go ahead and assume it's YUV rather than die. - return new PlanarYUVLuminanceSource(data, width, height, rect.left, rect.top, - rect.width(), rect.height(), false); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/FrontLightMode.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/FrontLightMode.java deleted file mode 100755 index 013339a836..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/FrontLightMode.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera; - -import android.content.SharedPreferences; - -import com.google.zxing.client.android.PreferencesActivity; - -/** - * Enumerates settings of the preference controlling the front light. - */ -public enum FrontLightMode { - - /** Always on. */ - ON, - /** On only when ambient light is low. */ - AUTO, - /** Always off. */ - OFF; - - private static FrontLightMode parse(String modeString) { - return modeString == null ? OFF : valueOf(modeString); - } - - public static FrontLightMode readPref(SharedPreferences sharedPrefs) { - return parse(sharedPrefs.getString(PreferencesActivity.KEY_FRONT_LIGHT_MODE, OFF.toString())); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/PreviewCallback.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/PreviewCallback.java deleted file mode 100755 index 7dc703574d..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/PreviewCallback.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera; - -import android.graphics.Point; -import android.hardware.Camera; -import android.os.Handler; -import android.os.Message; -import android.util.Log; - -final class PreviewCallback implements Camera.PreviewCallback { - - private static final String TAG = PreviewCallback.class.getSimpleName(); - - private final CameraConfigurationManager configManager; - private Handler previewHandler; - private int previewMessage; - - PreviewCallback(CameraConfigurationManager configManager) { - this.configManager = configManager; - } - - void setHandler(Handler previewHandler, int previewMessage) { - this.previewHandler = previewHandler; - this.previewMessage = previewMessage; - } - - @Override - public void onPreviewFrame(byte[] data, Camera camera) { - Point cameraResolution = configManager.getCameraResolution(); - Handler thePreviewHandler = previewHandler; - if (cameraResolution != null && thePreviewHandler != null) { - Message message = thePreviewHandler.obtainMessage(previewMessage, cameraResolution.x, - cameraResolution.y, data); - message.sendToTarget(); - previewHandler = null; - } else { - Log.d(TAG, "Got preview callback, but no handler or resolution available"); - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/CameraFacing.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/CameraFacing.java deleted file mode 100755 index 20fd4e3c5d..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/CameraFacing.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2015 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera.open; - -public enum CameraFacing { - - BACK, // must be value 0! - FRONT, // must be value 1! - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/OpenCamera.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/OpenCamera.java deleted file mode 100755 index ddac7345b9..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/OpenCamera.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2015 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera.open; - -import android.hardware.Camera; - -public final class OpenCamera { - - private final int index; - private final Camera camera; - private final CameraFacing facing; - private final int orientation; - - public OpenCamera(int index, Camera camera, CameraFacing facing, int orientation) { - this.index = index; - this.camera = camera; - this.facing = facing; - this.orientation = orientation; - } - - public Camera getCamera() { - return camera; - } - - public CameraFacing getFacing() { - return facing; - } - - public int getOrientation() { - return orientation; - } - - @Override - public String toString() { - return "Camera #" + index + " : " + facing + ',' + orientation; - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/OpenCameraInterface.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/OpenCameraInterface.java deleted file mode 100755 index 24e0f13a1e..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/camera/open/OpenCameraInterface.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.camera.open; - -import android.hardware.Camera; -import android.util.Log; - -public final class OpenCameraInterface { - - private static final String TAG = OpenCameraInterface.class.getName(); - - private OpenCameraInterface() { - } - - /** For {@link #open(int)}, means no preference for which camera to open. */ - public static final int NO_REQUESTED_CAMERA = -1; - - /** - * Opens the requested camera with {@link Camera#open(int)}, if one exists. - * - * @param cameraId camera ID of the camera to use. A negative value - * or {@link #NO_REQUESTED_CAMERA} means "no preference", in which case a rear-facing - * camera is returned if possible or else any camera - * @return handle to {@link OpenCamera} that was opened - */ - public static OpenCamera open(int cameraId) { - - int numCameras = Camera.getNumberOfCameras(); - if (numCameras == 0) { - Log.w(TAG, "No cameras!"); - return null; - } - - boolean explicitRequest = cameraId >= 0; - - Camera.CameraInfo selectedCameraInfo = null; - int index; - if (explicitRequest) { - index = cameraId; - selectedCameraInfo = new Camera.CameraInfo(); - Camera.getCameraInfo(index, selectedCameraInfo); - } else { - index = 0; - while (index < numCameras) { - Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); - Camera.getCameraInfo(index, cameraInfo); - CameraFacing reportedFacing = CameraFacing.values()[cameraInfo.facing]; - if (reportedFacing == CameraFacing.BACK) { - selectedCameraInfo = cameraInfo; - break; - } - index++; - } - } - - Camera camera; - if (index < numCameras) { - Log.i(TAG, "Opening camera #" + index); - camera = Camera.open(index); - } else { - if (explicitRequest) { - Log.w(TAG, "Requested camera does not exist: " + cameraId); - camera = null; - } else { - Log.i(TAG, "No camera facing " + CameraFacing.BACK + "; returning camera #0"); - camera = Camera.open(0); - selectedCameraInfo = new Camera.CameraInfo(); - Camera.getCameraInfo(0, selectedCameraInfo); - } - } - - if (camera == null) { - return null; - } - return new OpenCamera(index, - camera, - CameraFacing.values()[selectedCameraInfo.facing], - selectedCameraInfo.orientation); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/clipboard/ClipboardInterface.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/clipboard/ClipboardInterface.java deleted file mode 100755 index 3ba0603781..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/clipboard/ClipboardInterface.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.clipboard; - -import android.content.ClipData; -import android.content.ClipboardManager; -import android.content.Context; -import android.util.Log; - -public final class ClipboardInterface { - - private static final String TAG = ClipboardInterface.class.getSimpleName(); - - private ClipboardInterface() { - } - - public static CharSequence getText(Context context) { - ClipboardManager clipboard = getManager(context); - ClipData clip = clipboard.getPrimaryClip(); - return hasText(context) ? clip.getItemAt(0).coerceToText(context) : null; - } - - public static void setText(CharSequence text, Context context) { - if (text != null) { - try { - getManager(context).setPrimaryClip(ClipData.newPlainText(null, text)); - } catch (NullPointerException | IllegalStateException e) { - // Have seen this in the wild, bizarrely - Log.w(TAG, "Clipboard bug", e); - } - } - } - - public static boolean hasText(Context context) { - ClipboardManager clipboard = getManager(context); - ClipData clip = clipboard.getPrimaryClip(); - return clip != null && clip.getItemCount() > 0; - } - - private static ClipboardManager getManager(Context context) { - return (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/ContactEncoder.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/ContactEncoder.java deleted file mode 100755 index 41639a976b..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/ContactEncoder.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.encode; - -import java.util.Collection; -import java.util.HashSet; -import java.util.List; - -/** - * Implementations encode according to some scheme for encoding contact information, like VCard or - * MECARD. - * - * @author Sean Owen - */ -abstract class ContactEncoder { - - /** - * @return first, the best effort encoding of all data in the appropriate format; second, a - * display-appropriate version of the contact information - */ - abstract String[] encode(List names, - String organization, - List addresses, - List phones, - List phoneTypes, - List emails, - List urls, - String note); - - /** - * @return null if s is null or empty, or result of s.trim() otherwise - */ - static String trim(String s) { - if (s == null) { - return null; - } - String result = s.trim(); - return result.isEmpty() ? null : result; - } - - static void append(StringBuilder newContents, - StringBuilder newDisplayContents, - String prefix, - String value, - Formatter fieldFormatter, - char terminator) { - String trimmed = trim(value); - if (trimmed != null) { - newContents.append(prefix).append(fieldFormatter.format(trimmed, 0)).append(terminator); - newDisplayContents.append(trimmed).append('\n'); - } - } - - static void appendUpToUnique(StringBuilder newContents, - StringBuilder newDisplayContents, - String prefix, - List values, - int max, - Formatter displayFormatter, - Formatter fieldFormatter, - char terminator) { - if (values == null) { - return; - } - int count = 0; - Collection uniques = new HashSet<>(2); - for (int i = 0; i < values.size(); i++) { - String value = values.get(i); - String trimmed = trim(value); - if (trimmed != null && !trimmed.isEmpty() && !uniques.contains(trimmed)) { - newContents.append(prefix).append(fieldFormatter.format(trimmed, i)).append(terminator); - CharSequence display = displayFormatter == null ? trimmed : displayFormatter.format(trimmed, i); - newDisplayContents.append(display).append('\n'); - if (++count == max) { - break; - } - uniques.add(trimmed); - } - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/EncodeActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/EncodeActivity.java deleted file mode 100755 index 28866aa7aa..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/EncodeActivity.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.encode; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.net.Uri; -import android.os.Bundle; -import android.os.Environment; -import android.util.Log; -import android.view.Display; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.google.zxing.WriterException; -import com.google.zxing.client.android.Contents; -import com.google.zxing.client.android.FinishListener; -import com.google.zxing.client.android.Intents; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.regex.Pattern; - -/** - * This class encodes data from an Intent into a QR code, and then displays it full screen so that - * another person can scan it with their device. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class EncodeActivity extends Activity { - - private static final String TAG = EncodeActivity.class.getSimpleName(); - - private static final int MAX_BARCODE_FILENAME_LENGTH = 24; - private static final Pattern NOT_ALPHANUMERIC = Pattern.compile("[^A-Za-z0-9]"); - private static final String USE_VCARD_KEY = "USE_VCARD"; - - private QRCodeEncoder qrCodeEncoder; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - Intent intent = getIntent(); - if (intent == null) { - finish(); - } else { - String action = intent.getAction(); - if (Intents.Encode.ACTION.equals(action) || Intent.ACTION_SEND.equals(action)) { - setContentView(R.layout.encode); - } else { - finish(); - } - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater menuInflater = getMenuInflater(); - menuInflater.inflate(R.menu.encode, menu); - boolean useVcard = qrCodeEncoder != null && qrCodeEncoder.isUseVCard(); - int encodeNameResource = useVcard ? R.string.menu_encode_mecard : R.string.menu_encode_vcard; - MenuItem encodeItem = menu.findItem(R.id.menu_encode); - encodeItem.setTitle(encodeNameResource); - Intent intent = getIntent(); - if (intent != null) { - String type = intent.getStringExtra(Intents.Encode.TYPE); - encodeItem.setVisible(Contents.Type.CONTACT.equals(type)); - } - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int i = item.getItemId(); - if (i == R.id.menu_share) { - share(); - return true; - } else if (i == R.id.menu_encode) { - Intent intent = getIntent(); - if (intent == null) { - return false; - } - intent.putExtra(USE_VCARD_KEY, !qrCodeEncoder.isUseVCard()); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(intent); - finish(); - return true; - } else { - return false; - } - } - - private void share() { - QRCodeEncoder encoder = qrCodeEncoder; - if (encoder == null) { // Odd - Log.w(TAG, "No existing barcode to send?"); - return; - } - - String contents = encoder.getContents(); - if (contents == null) { - Log.w(TAG, "No existing barcode to send?"); - return; - } - - Bitmap bitmap; - try { - bitmap = encoder.encodeAsBitmap(); - } catch (WriterException we) { - Log.w(TAG, we); - return; - } - if (bitmap == null) { - return; - } - - File bsRoot = new File(Environment.getExternalStorageDirectory(), "BarcodeScanner"); - File barcodesRoot = new File(bsRoot, "Barcodes"); - if (!barcodesRoot.exists() && !barcodesRoot.mkdirs()) { - Log.w(TAG, "Couldn't make dir " + barcodesRoot); - showErrorMessage(R.string.msg_unmount_usb); - return; - } - File barcodeFile = new File(barcodesRoot, makeBarcodeFileName(contents) + ".png"); - if (!barcodeFile.delete()) { - Log.w(TAG, "Could not delete " + barcodeFile); - // continue anyway - } - FileOutputStream fos = null; - try { - fos = new FileOutputStream(barcodeFile); - bitmap.compress(Bitmap.CompressFormat.PNG, 0, fos); - } catch (FileNotFoundException fnfe) { - Log.w(TAG, "Couldn't access file " + barcodeFile + " due to " + fnfe); - showErrorMessage(R.string.msg_unmount_usb); - return; - } finally { - if (fos != null) { - try { - fos.close(); - } catch (IOException ioe) { - // do nothing - } - } - } - - Intent intent = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); - intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name) + " - " + encoder.getTitle()); - intent.putExtra(Intent.EXTRA_TEXT, contents); - intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + barcodeFile.getAbsolutePath())); - intent.setType("image/png"); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - startActivity(Intent.createChooser(intent, null)); - } - - private static CharSequence makeBarcodeFileName(CharSequence contents) { - String fileName = NOT_ALPHANUMERIC.matcher(contents).replaceAll("_"); - if (fileName.length() > MAX_BARCODE_FILENAME_LENGTH) { - fileName = fileName.substring(0, MAX_BARCODE_FILENAME_LENGTH); - } - return fileName; - } - - @Override - protected void onResume() { - super.onResume(); - // This assumes the view is full screen, which is a good assumption - WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE); - Display display = manager.getDefaultDisplay(); - Point displaySize = new Point(); - display.getSize(displaySize); - int width = displaySize.x; - int height = displaySize.y; - int smallerDimension = width < height ? width : height; - smallerDimension = smallerDimension * 7 / 8; - - Intent intent = getIntent(); - if (intent == null) { - return; - } - - try { - boolean useVCard = intent.getBooleanExtra(USE_VCARD_KEY, false); - qrCodeEncoder = new QRCodeEncoder(this, intent, smallerDimension, useVCard); - Bitmap bitmap = qrCodeEncoder.encodeAsBitmap(); - if (bitmap == null) { - Log.w(TAG, "Could not encode barcode"); - showErrorMessage(R.string.msg_encode_contents_failed); - qrCodeEncoder = null; - return; - } - - ImageView view = (ImageView) findViewById(R.id.image_view); - view.setImageBitmap(bitmap); - - TextView contents = (TextView) findViewById(R.id.contents_text_view); - if (intent.getBooleanExtra(Intents.Encode.SHOW_CONTENTS, true)) { - contents.setText(qrCodeEncoder.getDisplayContents()); - setTitle(qrCodeEncoder.getTitle()); - } else { - contents.setText(""); - setTitle(""); - } - } catch (WriterException e) { - Log.w(TAG, "Could not encode barcode", e); - showErrorMessage(R.string.msg_encode_contents_failed); - qrCodeEncoder = null; - } - } - - private void showErrorMessage(int message) { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setMessage(message); - builder.setPositiveButton(R.string.button_ok, new FinishListener(this)); - builder.setOnCancelListener(new FinishListener(this)); - builder.show(); - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/Formatter.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/Formatter.java deleted file mode 100755 index 9e0ae85a42..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/Formatter.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.encode; - -/** - * Encapsulates some simple formatting logic, to aid refactoring in {@link ContactEncoder}. - * - * @author Sean Owen - */ -interface Formatter { - - /** - * @param value value to format - * @param index index of value in a list of values to be formatted - * @return formatted value - */ - CharSequence format(CharSequence value, int index); - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/MECARDContactEncoder.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/MECARDContactEncoder.java deleted file mode 100755 index 4facf77427..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/MECARDContactEncoder.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.encode; - -import java.util.List; -import java.util.regex.Pattern; - -import android.telephony.PhoneNumberUtils; - -/** - * Encodes contact information according to the MECARD format. - * - * @author Sean Owen - */ -final class MECARDContactEncoder extends ContactEncoder { - - private static final char TERMINATOR = ';'; - - @Override - public String[] encode(List names, - String organization, - List addresses, - List phones, - List phoneTypes, - List emails, - List urls, - String note) { - StringBuilder newContents = new StringBuilder(100); - newContents.append("MECARD:"); - - StringBuilder newDisplayContents = new StringBuilder(100); - - Formatter fieldFormatter = new MECARDFieldFormatter(); - - appendUpToUnique(newContents, newDisplayContents, "N", names, 1, new - MECARDNameDisplayFormatter(), fieldFormatter, TERMINATOR); - - append(newContents, newDisplayContents, "ORG", organization, fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "ADR", addresses, 1, null, fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "TEL", phones, Integer.MAX_VALUE, - new MECARDTelDisplayFormatter(), fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "EMAIL", emails, Integer.MAX_VALUE, null, - fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "URL", urls, Integer.MAX_VALUE, null, - fieldFormatter, TERMINATOR); - - append(newContents, newDisplayContents, "NOTE", note, fieldFormatter, TERMINATOR); - - newContents.append(';'); - - return new String[] { newContents.toString(), newDisplayContents.toString() }; - } - - private static class MECARDFieldFormatter implements Formatter { - private static final Pattern RESERVED_MECARD_CHARS = Pattern.compile("([\\\\:;])"); - private static final Pattern NEWLINE = Pattern.compile("\\n"); - @Override - public CharSequence format(CharSequence value, int index) { - return ':' + NEWLINE.matcher(RESERVED_MECARD_CHARS.matcher(value).replaceAll("\\\\$1")).replaceAll(""); - } - } - - private static class MECARDTelDisplayFormatter implements Formatter { - private static final Pattern NOT_DIGITS = Pattern.compile("[^0-9]+"); - @Override - public CharSequence format(CharSequence value, int index) { - return NOT_DIGITS.matcher(PhoneNumberUtils.formatNumber(value.toString())).replaceAll(""); - } - } - - private static class MECARDNameDisplayFormatter implements Formatter { - private static final Pattern COMMA = Pattern.compile(","); - @Override - public CharSequence format(CharSequence value, int index) { - return COMMA.matcher(value).replaceAll(""); - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/QRCodeEncoder.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/QRCodeEncoder.java deleted file mode 100755 index d4d8bd2d27..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/QRCodeEncoder.java +++ /dev/null @@ -1,389 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.encode; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.net.Uri; -import android.os.Bundle; -import android.provider.ContactsContract; -import android.telephony.PhoneNumberUtils; -import android.util.Log; - -import com.alibaba.weex.R; -import com.google.zxing.BarcodeFormat; -import com.google.zxing.EncodeHintType; -import com.google.zxing.MultiFormatWriter; -import com.google.zxing.Result; -import com.google.zxing.WriterException; -import com.google.zxing.client.android.Contents; -import com.google.zxing.client.android.Intents; -import com.google.zxing.client.result.AddressBookParsedResult; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.ResultParser; -import com.google.zxing.common.BitMatrix; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.EnumMap; -import java.util.List; -import java.util.Map; - -/** - * This class does the work of decoding the user's request and extracting all the data - * to be encoded in a barcode. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -final class QRCodeEncoder { - - private static final String TAG = QRCodeEncoder.class.getSimpleName(); - - private static final int WHITE = 0xFFFFFFFF; - private static final int BLACK = 0xFF000000; - - private final Context activity; - private String contents; - private String displayContents; - private String title; - private BarcodeFormat format; - private final int dimension; - private final boolean useVCard; - - QRCodeEncoder(Context activity, Intent intent, int dimension, boolean useVCard) throws WriterException { - this.activity = activity; - this.dimension = dimension; - this.useVCard = useVCard; - String action = intent.getAction(); - if (action.equals(Intents.Encode.ACTION)) { - encodeContentsFromZXingIntent(intent); - } else if (action.equals(Intent.ACTION_SEND)) { - encodeContentsFromShareIntent(intent); - } - } - - String getContents() { - return contents; - } - - String getDisplayContents() { - return displayContents; - } - - String getTitle() { - return title; - } - - boolean isUseVCard() { - return useVCard; - } - - // It would be nice if the string encoding lived in the core ZXing library, - // but we use platform specific code like PhoneNumberUtils, so it can't. - private boolean encodeContentsFromZXingIntent(Intent intent) { - // Default to QR_CODE if no format given. - String formatString = intent.getStringExtra(Intents.Encode.FORMAT); - format = null; - if (formatString != null) { - try { - format = BarcodeFormat.valueOf(formatString); - } catch (IllegalArgumentException iae) { - // Ignore it then - } - } - if (format == null || format == BarcodeFormat.QR_CODE) { - String type = intent.getStringExtra(Intents.Encode.TYPE); - if (type == null || type.isEmpty()) { - return false; - } - this.format = BarcodeFormat.QR_CODE; - encodeQRCodeContents(intent, type); - } else { - String data = intent.getStringExtra(Intents.Encode.DATA); - if (data != null && !data.isEmpty()) { - contents = data; - displayContents = data; - title = activity.getString(R.string.contents_text); - } - } - return contents != null && !contents.isEmpty(); - } - - // Handles send intents from multitude of Android applications - private void encodeContentsFromShareIntent(Intent intent) throws WriterException { - // Check if this is a plain text encoding, or contact - if (intent.hasExtra(Intent.EXTRA_STREAM)) { - encodeFromStreamExtra(intent); - } else { - encodeFromTextExtras(intent); - } - } - - private void encodeFromTextExtras(Intent intent) throws WriterException { - // Notice: Google Maps shares both URL and details in one text, bummer! - String theContents = ContactEncoder.trim(intent.getStringExtra(Intent.EXTRA_TEXT)); - if (theContents == null) { - theContents = ContactEncoder.trim(intent.getStringExtra("android.intent.extra.HTML_TEXT")); - // Intent.EXTRA_HTML_TEXT - if (theContents == null) { - theContents = ContactEncoder.trim(intent.getStringExtra(Intent.EXTRA_SUBJECT)); - if (theContents == null) { - String[] emails = intent.getStringArrayExtra(Intent.EXTRA_EMAIL); - if (emails != null) { - theContents = ContactEncoder.trim(emails[0]); - } else { - theContents = "?"; - } - } - } - } - - // Trim text to avoid URL breaking. - if (theContents == null || theContents.isEmpty()) { - throw new WriterException("Empty EXTRA_TEXT"); - } - contents = theContents; - // We only do QR code. - format = BarcodeFormat.QR_CODE; - if (intent.hasExtra(Intent.EXTRA_SUBJECT)) { - displayContents = intent.getStringExtra(Intent.EXTRA_SUBJECT); - } else if (intent.hasExtra(Intent.EXTRA_TITLE)) { - displayContents = intent.getStringExtra(Intent.EXTRA_TITLE); - } else { - displayContents = contents; - } - title = activity.getString(R.string.contents_text); - } - - // Handles send intents from the Contacts app, retrieving a contact as a VCARD. - private void encodeFromStreamExtra(Intent intent) throws WriterException { - format = BarcodeFormat.QR_CODE; - Bundle bundle = intent.getExtras(); - if (bundle == null) { - throw new WriterException("No extras"); - } - Uri uri = bundle.getParcelable(Intent.EXTRA_STREAM); - if (uri == null) { - throw new WriterException("No EXTRA_STREAM"); - } - byte[] vcard; - String vcardString; - InputStream stream = null; - try { - stream = activity.getContentResolver().openInputStream(uri); - if (stream == null) { - throw new WriterException("Can't open stream for " + uri); - } - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - byte[] buffer = new byte[2048]; - int bytesRead; - while ((bytesRead = stream.read(buffer)) > 0) { - baos.write(buffer, 0, bytesRead); - } - vcard = baos.toByteArray(); - vcardString = new String(vcard, 0, vcard.length, "UTF-8"); - } catch (IOException ioe) { - throw new WriterException(ioe); - } finally { - if (stream != null) { - try { - stream.close(); - } catch (IOException e) { - // continue - } - } - } - Log.d(TAG, "Encoding share intent content:"); - Log.d(TAG, vcardString); - Result result = new Result(vcardString, vcard, null, BarcodeFormat.QR_CODE); - ParsedResult parsedResult = ResultParser.parseResult(result); - if (!(parsedResult instanceof AddressBookParsedResult)) { - throw new WriterException("Result was not an address"); - } - encodeQRCodeContents((AddressBookParsedResult) parsedResult); - if (contents == null || contents.isEmpty()) { - throw new WriterException("No content to encode"); - } - } - - private void encodeQRCodeContents(Intent intent, String type) { - switch (type) { - case Contents.Type.TEXT: - String textData = intent.getStringExtra(Intents.Encode.DATA); - if (textData != null && !textData.isEmpty()) { - contents = textData; - displayContents = textData; - title = activity.getString(R.string.contents_text); - } - break; - - case Contents.Type.EMAIL: - String emailData = ContactEncoder.trim(intent.getStringExtra(Intents.Encode.DATA)); - if (emailData != null) { - contents = "mailto:" + emailData; - displayContents = emailData; - title = activity.getString(R.string.contents_email); - } - break; - - case Contents.Type.PHONE: - String phoneData = ContactEncoder.trim(intent.getStringExtra(Intents.Encode.DATA)); - if (phoneData != null) { - contents = "tel:" + phoneData; - displayContents = PhoneNumberUtils.formatNumber(phoneData); - title = activity.getString(R.string.contents_phone); - } - break; - - case Contents.Type.SMS: - String smsData = ContactEncoder.trim(intent.getStringExtra(Intents.Encode.DATA)); - if (smsData != null) { - contents = "sms:" + smsData; - displayContents = PhoneNumberUtils.formatNumber(smsData); - title = activity.getString(R.string.contents_sms); - } - break; - - case Contents.Type.CONTACT: - Bundle contactBundle = intent.getBundleExtra(Intents.Encode.DATA); - if (contactBundle != null) { - - String name = contactBundle.getString(ContactsContract.Intents.Insert.NAME); - String organization = contactBundle.getString(ContactsContract.Intents.Insert.COMPANY); - String address = contactBundle.getString(ContactsContract.Intents.Insert.POSTAL); - List phones = getAllBundleValues(contactBundle, Contents.PHONE_KEYS); - List phoneTypes = getAllBundleValues(contactBundle, Contents.PHONE_TYPE_KEYS); - List emails = getAllBundleValues(contactBundle, Contents.EMAIL_KEYS); - String url = contactBundle.getString(Contents.URL_KEY); - List urls = url == null ? null : Collections.singletonList(url); - String note = contactBundle.getString(Contents.NOTE_KEY); - - ContactEncoder encoder = useVCard ? new VCardContactEncoder() : new MECARDContactEncoder(); - String[] encoded = encoder.encode(Collections.singletonList(name), - organization, - Collections.singletonList(address), - phones, - phoneTypes, - emails, - urls, - note); - // Make sure we've encoded at least one field. - if (!encoded[1].isEmpty()) { - contents = encoded[0]; - displayContents = encoded[1]; - title = activity.getString(R.string.contents_contact); - } - - } - break; - - case Contents.Type.LOCATION: - Bundle locationBundle = intent.getBundleExtra(Intents.Encode.DATA); - if (locationBundle != null) { - // These must use Bundle.getFloat(), not getDouble(), it's part of the API. - float latitude = locationBundle.getFloat("LAT", Float.MAX_VALUE); - float longitude = locationBundle.getFloat("LONG", Float.MAX_VALUE); - if (latitude != Float.MAX_VALUE && longitude != Float.MAX_VALUE) { - contents = "geo:" + latitude + ',' + longitude; - displayContents = latitude + "," + longitude; - title = activity.getString(R.string.contents_location); - } - } - break; - } - } - - private static List getAllBundleValues(Bundle bundle, String[] keys) { - List values = new ArrayList<>(keys.length); - for (String key : keys) { - Object value = bundle.get(key); - values.add(value == null ? null : value.toString()); - } - return values; - } - - private void encodeQRCodeContents(AddressBookParsedResult contact) { - ContactEncoder encoder = useVCard ? new VCardContactEncoder() : new MECARDContactEncoder(); - String[] encoded = encoder.encode(toList(contact.getNames()), - contact.getOrg(), - toList(contact.getAddresses()), - toList(contact.getPhoneNumbers()), - null, - toList(contact.getEmails()), - toList(contact.getURLs()), - null); - // Make sure we've encoded at least one field. - if (!encoded[1].isEmpty()) { - contents = encoded[0]; - displayContents = encoded[1]; - title = activity.getString(R.string.contents_contact); - } - } - - private static List toList(String[] values) { - return values == null ? null : Arrays.asList(values); - } - - Bitmap encodeAsBitmap() throws WriterException { - String contentsToEncode = contents; - if (contentsToEncode == null) { - return null; - } - Map hints = null; - String encoding = guessAppropriateEncoding(contentsToEncode); - if (encoding != null) { - hints = new EnumMap<>(EncodeHintType.class); - hints.put(EncodeHintType.CHARACTER_SET, encoding); - } - BitMatrix result; - try { - result = new MultiFormatWriter().encode(contentsToEncode, format, dimension, dimension, hints); - } catch (IllegalArgumentException iae) { - // Unsupported format - return null; - } - int width = result.getWidth(); - int height = result.getHeight(); - int[] pixels = new int[width * height]; - for (int y = 0; y < height; y++) { - int offset = y * width; - for (int x = 0; x < width; x++) { - pixels[offset + x] = result.get(x, y) ? BLACK : WHITE; - } - } - - Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bitmap.setPixels(pixels, 0, width, 0, 0, width, height); - return bitmap; - } - - private static String guessAppropriateEncoding(CharSequence contents) { - // Very crude at the moment - for (int i = 0; i < contents.length(); i++) { - if (contents.charAt(i) > 0xFF) { - return "UTF-8"; - } - } - return null; - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardContactEncoder.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardContactEncoder.java deleted file mode 100755 index 00bd9e2606..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardContactEncoder.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.encode; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import android.provider.ContactsContract; - -/** - * Encodes contact information according to the vCard format. - * - * @author Sean Owen - */ -final class VCardContactEncoder extends ContactEncoder { - - private static final char TERMINATOR = '\n'; - - @Override - public String[] encode(List names, - String organization, - List addresses, - List phones, - List phoneTypes, - List emails, - List urls, - String note) { - StringBuilder newContents = new StringBuilder(100); - newContents.append("BEGIN:VCARD").append(TERMINATOR); - newContents.append("VERSION:3.0").append(TERMINATOR); - - StringBuilder newDisplayContents = new StringBuilder(100); - - Formatter fieldFormatter = new VCardFieldFormatter(); - - appendUpToUnique(newContents, newDisplayContents, "N", names, 1, null, fieldFormatter, TERMINATOR); - - append(newContents, newDisplayContents, "ORG", organization, fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "ADR", addresses, 1, null, fieldFormatter, TERMINATOR); - - List>> phoneMetadata = buildPhoneMetadata(phones, phoneTypes); - appendUpToUnique(newContents, newDisplayContents, "TEL", phones, Integer.MAX_VALUE, - new VCardTelDisplayFormatter(phoneMetadata), - new VCardFieldFormatter(phoneMetadata), TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "EMAIL", emails, Integer.MAX_VALUE, null, - fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "URL", urls, Integer.MAX_VALUE, null, - fieldFormatter, TERMINATOR); - - append(newContents, newDisplayContents, "NOTE", note, fieldFormatter, TERMINATOR); - - newContents.append("END:VCARD").append(TERMINATOR); - - return new String[] { newContents.toString(), newDisplayContents.toString() }; - } - - static List>> buildPhoneMetadata(Collection phones, List phoneTypes) { - if (phoneTypes == null || phoneTypes.isEmpty()) { - return null; - } - List>> metadataForIndex = new ArrayList<>(); - for (int i = 0; i < phones.size(); i++) { - if (phoneTypes.size() <= i) { - metadataForIndex.add(null); - } else { - Map> metadata = new HashMap<>(); - metadataForIndex.add(metadata); - Set typeTokens = new HashSet<>(); - metadata.put("TYPE", typeTokens); - String typeString = phoneTypes.get(i); - Integer androidType = maybeIntValue(typeString); - if (androidType == null) { - typeTokens.add(typeString); - } else { - String purpose = vCardPurposeLabelForAndroidType(androidType); - String context = vCardContextLabelForAndroidType(androidType); - if (purpose != null) { - typeTokens.add(purpose); - } - if (context != null) { - typeTokens.add(context); - } - } - } - } - return metadataForIndex; - } - - private static Integer maybeIntValue(String value) { - try { - return Integer.valueOf(value); - } catch (NumberFormatException nfe) { - return null; - } - } - - private static String vCardPurposeLabelForAndroidType(int androidType) { - switch (androidType) { - case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME: - case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK: - case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER_FAX: - return "fax"; - case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER: - case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_PAGER: - return "pager"; - case ContactsContract.CommonDataKinds.Phone.TYPE_TTY_TDD: - return "textphone"; - case ContactsContract.CommonDataKinds.Phone.TYPE_MMS: - return "text"; - default: - return null; - } - } - - private static String vCardContextLabelForAndroidType(int androidType) { - switch (androidType) { - case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: - case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: - case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME: - case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER: - return "home"; - case ContactsContract.CommonDataKinds.Phone.TYPE_COMPANY_MAIN: - case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: - case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE: - case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK: - case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_PAGER: - return "work"; - default: - return null; - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardFieldFormatter.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardFieldFormatter.java deleted file mode 100755 index 070a4cd523..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardFieldFormatter.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2014 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.encode; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.regex.Pattern; - -/** - * @author Sean Owen - */ -final class VCardFieldFormatter implements Formatter { - - private static final Pattern RESERVED_VCARD_CHARS = Pattern.compile("([\\\\,;])"); - private static final Pattern NEWLINE = Pattern.compile("\\n"); - - private final List>> metadataForIndex; - - VCardFieldFormatter() { - this(null); - } - - VCardFieldFormatter(List>> metadataForIndex) { - this.metadataForIndex = metadataForIndex; - } - - @Override - public CharSequence format(CharSequence value, int index) { - value = RESERVED_VCARD_CHARS.matcher(value).replaceAll("\\\\$1"); - value = NEWLINE.matcher(value).replaceAll(""); - Map> metadata = - metadataForIndex == null || metadataForIndex.size() <= index ? null : metadataForIndex.get(index); - value = formatMetadata(value, metadata); - return value; - } - - private static CharSequence formatMetadata(CharSequence value, Map> metadata) { - StringBuilder withMetadata = new StringBuilder(); - if (metadata != null) { - for (Map.Entry> metadatum : metadata.entrySet()) { - Set values = metadatum.getValue(); - if (values == null || values.isEmpty()) { - continue; - } - withMetadata.append(';').append(metadatum.getKey()).append('='); - if (values.size() > 1) { - withMetadata.append('"'); - } - Iterator valuesIt = values.iterator(); - withMetadata.append(valuesIt.next()); - while (valuesIt.hasNext()) { - withMetadata.append(',').append(valuesIt.next()); - } - if (values.size() > 1) { - withMetadata.append('"'); - } - } - } - withMetadata.append(':').append(value); - return withMetadata; - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardTelDisplayFormatter.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardTelDisplayFormatter.java deleted file mode 100755 index 21d2e7fd2c..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/encode/VCardTelDisplayFormatter.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2014 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.encode; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import android.telephony.PhoneNumberUtils; - -/** - * @author Sean Owen - */ -final class VCardTelDisplayFormatter implements Formatter { - - private final List>> metadataForIndex; - - VCardTelDisplayFormatter() { - this(null); - } - - VCardTelDisplayFormatter(List>> metadataForIndex) { - this.metadataForIndex = metadataForIndex; - } - - @Override - public CharSequence format(CharSequence value, int index) { - value = PhoneNumberUtils.formatNumber(value.toString()); - Map> metadata = - metadataForIndex == null || metadataForIndex.size() <= index ? null : metadataForIndex.get(index); - value = formatMetadata(value, metadata); - return value; - } - - private static CharSequence formatMetadata(CharSequence value, Map> metadata) { - if (metadata == null || metadata.isEmpty()) { - return value; - } - StringBuilder withMetadata = new StringBuilder(); - for (Map.Entry> metadatum : metadata.entrySet()) { - Set values = metadatum.getValue(); - if (values == null || values.isEmpty()) { - continue; - } - Iterator valuesIt = values.iterator(); - withMetadata.append(valuesIt.next()); - while (valuesIt.hasNext()) { - withMetadata.append(',').append(valuesIt.next()); - } - } - if (withMetadata.length() > 0) { - withMetadata.append(' '); - } - withMetadata.append(value); - return withMetadata; - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/DBHelper.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/DBHelper.java deleted file mode 100755 index 290d8677f9..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/DBHelper.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2009 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.history; - -import android.content.Context; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; - -/** - * @author Sean Owen - */ -final class DBHelper extends SQLiteOpenHelper { - - private static final int DB_VERSION = 5; - private static final String DB_NAME = "barcode_scanner_history.db"; - static final String TABLE_NAME = "history"; - static final String ID_COL = "id"; - static final String TEXT_COL = "text"; - static final String FORMAT_COL = "format"; - static final String DISPLAY_COL = "display"; - static final String TIMESTAMP_COL = "timestamp"; - static final String DETAILS_COL = "details"; - - DBHelper(Context context) { - super(context, DB_NAME, null, DB_VERSION); - } - - @Override - public void onCreate(SQLiteDatabase sqLiteDatabase) { - sqLiteDatabase.execSQL( - "CREATE TABLE " + TABLE_NAME + " (" + - ID_COL + " INTEGER PRIMARY KEY, " + - TEXT_COL + " TEXT, " + - FORMAT_COL + " TEXT, " + - DISPLAY_COL + " TEXT, " + - TIMESTAMP_COL + " INTEGER, " + - DETAILS_COL + " TEXT);"); - } - - @Override - public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { - sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); - onCreate(sqLiteDatabase); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryActivity.java deleted file mode 100755 index 555bf53931..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryActivity.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.history; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.ListActivity; -import android.content.ActivityNotFoundException; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.os.Parcelable; -import android.util.Log; -import android.view.ContextMenu; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.ListView; - -import com.alibaba.weex.R; -import com.google.zxing.client.android.CaptureActivity; -import com.google.zxing.client.android.Intents; - -public final class HistoryActivity extends ListActivity { - - private static final String TAG = HistoryActivity.class.getSimpleName(); - - private HistoryManager historyManager; - private ArrayAdapter adapter; - private CharSequence originalTitle; - - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - this.historyManager = new HistoryManager(this); - adapter = new HistoryItemAdapter(this); - setListAdapter(adapter); - View listview = getListView(); - registerForContextMenu(listview); - originalTitle = getTitle(); - } - - @Override - protected void onResume() { - super.onResume(); - reloadHistoryItems(); - } - - private void reloadHistoryItems() { - Iterable items = historyManager.buildHistoryItems(); - adapter.clear(); - for (HistoryItem item : items) { - adapter.add(item); - } - setTitle(originalTitle + " (" + adapter.getCount() + ')'); - if (adapter.isEmpty()) { - adapter.add(new HistoryItem(null, null, null)); - } - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) { - if (adapter.getItem(position).getResult() != null) { - Intent intent = new Intent(this, CaptureActivity.class); - intent.putExtra(Intents.History.ITEM_NUMBER, position); - setResult(Activity.RESULT_OK, intent); - finish(); - } - } - - @Override - public void onCreateContextMenu(ContextMenu menu, - View v, - ContextMenu.ContextMenuInfo menuInfo) { - int position = ((AdapterView.AdapterContextMenuInfo) menuInfo).position; - if (position >= adapter.getCount() || adapter.getItem(position).getResult() != null) { - menu.add(Menu.NONE, position, position, R.string.history_clear_one_history_text); - } // else it's just that dummy "Empty" message - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - int position = item.getItemId(); - historyManager.deleteHistoryItem(position); - reloadHistoryItems(); - return true; - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - if (historyManager.hasHistoryItems()) { - MenuInflater menuInflater = getMenuInflater(); - menuInflater.inflate(R.menu.history, menu); - } - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int i = item.getItemId(); - if (i == R.id.menu_history_send) { - CharSequence history = historyManager.buildHistory(); - Parcelable historyFile = HistoryManager.saveHistory(history.toString()); - if (historyFile == null) { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setMessage(R.string.msg_unmount_usb); - builder.setPositiveButton(R.string.button_ok, null); - builder.show(); - } else { - Intent intent = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - String subject = getResources().getString(R.string.history_email_title); - intent.putExtra(Intent.EXTRA_SUBJECT, subject); - intent.putExtra(Intent.EXTRA_TEXT, subject); - intent.putExtra(Intent.EXTRA_STREAM, historyFile); - intent.setType("text/csv"); - try { - startActivity(intent); - } catch (ActivityNotFoundException anfe) { - Log.w(TAG, anfe.toString()); - } - } - - } else if (i == R.id.menu_history_clear_text) { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setMessage(R.string.msg_sure); - builder.setCancelable(true); - builder.setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int i2) { - historyManager.clearHistory(); - dialog.dismiss(); - finish(); - } - }); - builder.setNegativeButton(R.string.button_cancel, null); - builder.show(); - - } else { - return super.onOptionsItemSelected(item); - } - return true; - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryItem.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryItem.java deleted file mode 100755 index 45da8bd307..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryItem.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.history; - -import com.google.zxing.Result; - -public final class HistoryItem { - - private final Result result; - private final String display; - private final String details; - - HistoryItem(Result result, String display, String details) { - this.result = result; - this.display = display; - this.details = details; - } - - public Result getResult() { - return result; - } - - public String getDisplayAndDetails() { - StringBuilder displayResult = new StringBuilder(); - if (display == null || display.isEmpty()) { - displayResult.append(result.getText()); - } else { - displayResult.append(display); - } - if (details != null && !details.isEmpty()) { - displayResult.append(" : ").append(details); - } - return displayResult.toString(); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryItemAdapter.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryItemAdapter.java deleted file mode 100755 index 1ebb21cd6f..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryItemAdapter.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.history; - -import android.content.Context; -import android.content.res.Resources; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.google.zxing.Result; - -import java.util.ArrayList; - -final class HistoryItemAdapter extends ArrayAdapter { - - private final Context activity; - - HistoryItemAdapter(Context activity) { - super(activity, R.layout.history_list_item, new ArrayList()); - this.activity = activity; - } - - @Override - public View getView(int position, View view, ViewGroup viewGroup) { - View layout; - if (view instanceof LinearLayout) { - layout = view; - } else { - LayoutInflater factory = LayoutInflater.from(activity); - layout = factory.inflate(R.layout.history_list_item, viewGroup, false); - } - - HistoryItem item = getItem(position); - Result result = item.getResult(); - - CharSequence title; - CharSequence detail; - if (result != null) { - title = result.getText(); - detail = item.getDisplayAndDetails(); - } else { - Resources resources = getContext().getResources(); - title = resources.getString(R.string.history_empty); - detail = resources.getString(R.string.history_empty_detail); - } - - ((TextView) layout.findViewById(R.id.history_title)).setText(title); - ((TextView) layout.findViewById(R.id.history_detail)).setText(detail); - - return layout; - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryManager.java deleted file mode 100755 index 281ae82ad0..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/history/HistoryManager.java +++ /dev/null @@ -1,366 +0,0 @@ -/* - * Copyright (C) 2009 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.history; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.nio.charset.Charset; -import java.text.DateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import android.app.Activity; -import android.content.ContentValues; -import android.content.SharedPreferences; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteException; -import android.database.sqlite.SQLiteOpenHelper; -import android.net.Uri; -import android.os.Environment; -import android.preference.PreferenceManager; -import android.util.Log; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.Result; -import com.google.zxing.client.android.Intents; -import com.google.zxing.client.android.PreferencesActivity; -import com.google.zxing.client.android.result.ResultHandler; - -/** - *

Manages functionality related to scan history.

- * - * @author Sean Owen - */ -public final class HistoryManager { - - private static final String TAG = HistoryManager.class.getSimpleName(); - - private static final int MAX_ITEMS = 2000; - - private static final String[] COLUMNS = { - DBHelper.TEXT_COL, - DBHelper.DISPLAY_COL, - DBHelper.FORMAT_COL, - DBHelper.TIMESTAMP_COL, - DBHelper.DETAILS_COL, - }; - - private static final String[] COUNT_COLUMN = { "COUNT(1)" }; - - private static final String[] ID_COL_PROJECTION = { DBHelper.ID_COL }; - private static final String[] ID_DETAIL_COL_PROJECTION = { DBHelper.ID_COL, DBHelper.DETAILS_COL }; - - private final Activity activity; - private final boolean enableHistory; - - public HistoryManager(Activity activity) { - this.activity = activity; - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); - enableHistory = prefs.getBoolean(PreferencesActivity.KEY_ENABLE_HISTORY, true); - } - - public boolean hasHistoryItems() { - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - Cursor cursor = null; - try { - db = helper.getReadableDatabase(); - cursor = db.query(DBHelper.TABLE_NAME, COUNT_COLUMN, null, null, null, null, null); - cursor.moveToFirst(); - return cursor.getInt(0) > 0; - } finally { - close(cursor, db); - } - } - - public List buildHistoryItems() { - SQLiteOpenHelper helper = new DBHelper(activity); - List items = new ArrayList<>(); - SQLiteDatabase db = null; - Cursor cursor = null; - try { - db = helper.getReadableDatabase(); - cursor = db.query(DBHelper.TABLE_NAME, COLUMNS, null, null, null, null, DBHelper.TIMESTAMP_COL + " DESC"); - while (cursor.moveToNext()) { - String text = cursor.getString(0); - String display = cursor.getString(1); - String format = cursor.getString(2); - long timestamp = cursor.getLong(3); - String details = cursor.getString(4); - Result result = new Result(text, null, null, BarcodeFormat.valueOf(format), timestamp); - items.add(new HistoryItem(result, display, details)); - } - } finally { - close(cursor, db); - } - return items; - } - - public HistoryItem buildHistoryItem(int number) { - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - Cursor cursor = null; - try { - db = helper.getReadableDatabase(); - cursor = db.query(DBHelper.TABLE_NAME, COLUMNS, null, null, null, null, DBHelper.TIMESTAMP_COL + " DESC"); - cursor.move(number + 1); - String text = cursor.getString(0); - String display = cursor.getString(1); - String format = cursor.getString(2); - long timestamp = cursor.getLong(3); - String details = cursor.getString(4); - Result result = new Result(text, null, null, BarcodeFormat.valueOf(format), timestamp); - return new HistoryItem(result, display, details); - } finally { - close(cursor, db); - } - } - - public void deleteHistoryItem(int number) { - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - Cursor cursor = null; - try { - db = helper.getWritableDatabase(); - cursor = db.query(DBHelper.TABLE_NAME, - ID_COL_PROJECTION, - null, null, null, null, - DBHelper.TIMESTAMP_COL + " DESC"); - cursor.move(number + 1); - db.delete(DBHelper.TABLE_NAME, DBHelper.ID_COL + '=' + cursor.getString(0), null); - } finally { - close(cursor, db); - } - } - - public void addHistoryItem(Result result, ResultHandler handler) { - // Do not save this item to the history if the preference is turned off, or the contents are - // considered secure. - if (!activity.getIntent().getBooleanExtra(Intents.Scan.SAVE_HISTORY, true) || - handler.areContentsSecure() || !enableHistory) { - return; - } - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); - if (!prefs.getBoolean(PreferencesActivity.KEY_REMEMBER_DUPLICATES, false)) { - deletePrevious(result.getText()); - } - - ContentValues values = new ContentValues(); - values.put(DBHelper.TEXT_COL, result.getText()); - values.put(DBHelper.FORMAT_COL, result.getBarcodeFormat().toString()); - values.put(DBHelper.DISPLAY_COL, handler.getDisplayContents().toString()); - values.put(DBHelper.TIMESTAMP_COL, System.currentTimeMillis()); - - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - try { - db = helper.getWritableDatabase(); - // Insert the new entry into the DB. - db.insert(DBHelper.TABLE_NAME, DBHelper.TIMESTAMP_COL, values); - } finally { - close(null, db); - } - } - - public void addHistoryItemDetails(String itemID, String itemDetails) { - // As we're going to do an update only we don't need need to worry - // about the preferences; if the item wasn't saved it won't be udpated - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - Cursor cursor = null; - try { - db = helper.getWritableDatabase(); - cursor = db.query(DBHelper.TABLE_NAME, - ID_DETAIL_COL_PROJECTION, - DBHelper.TEXT_COL + "=?", - new String[] { itemID }, - null, - null, - DBHelper.TIMESTAMP_COL + " DESC", - "1"); - String oldID = null; - String oldDetails = null; - if (cursor.moveToNext()) { - oldID = cursor.getString(0); - oldDetails = cursor.getString(1); - } - - if (oldID != null) { - String newDetails; - if (oldDetails == null) { - newDetails = itemDetails; - } else if (oldDetails.contains(itemDetails)) { - newDetails = null; - } else { - newDetails = oldDetails + " : " + itemDetails; - } - if (newDetails != null) { - ContentValues values = new ContentValues(); - values.put(DBHelper.DETAILS_COL, newDetails); - db.update(DBHelper.TABLE_NAME, values, DBHelper.ID_COL + "=?", new String[] { oldID }); - } - } - - } finally { - close(cursor, db); - } - } - - private void deletePrevious(String text) { - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - try { - db = helper.getWritableDatabase(); - db.delete(DBHelper.TABLE_NAME, DBHelper.TEXT_COL + "=?", new String[] { text }); - } finally { - close(null, db); - } - } - - public void trimHistory() { - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - Cursor cursor = null; - try { - db = helper.getWritableDatabase(); - cursor = db.query(DBHelper.TABLE_NAME, - ID_COL_PROJECTION, - null, null, null, null, - DBHelper.TIMESTAMP_COL + " DESC"); - cursor.move(MAX_ITEMS); - while (cursor.moveToNext()) { - String id = cursor.getString(0); - Log.i(TAG, "Deleting scan history ID " + id); - db.delete(DBHelper.TABLE_NAME, DBHelper.ID_COL + '=' + id, null); - } - } catch (SQLiteException sqle) { - // We're seeing an error here when called in CaptureActivity.onCreate() in rare cases - // and don't understand it. First theory is that it's transient so can be safely ignored. - Log.w(TAG, sqle); - // continue - } finally { - close(cursor, db); - } - } - - /** - *

Builds a text representation of the scanning history. Each scan is encoded on one - * line, terminated by a line break (\r\n). The values in each line are comma-separated, - * and double-quoted. Double-quotes within values are escaped with a sequence of two - * double-quotes. The fields output are:

- * - *
    - *
  1. Raw text
  2. - *
  3. Display text
  4. - *
  5. Format (e.g. QR_CODE)
  6. - *
  7. Unix timestamp (milliseconds since the epoch)
  8. - *
  9. Formatted version of timestamp
  10. - *
  11. Supplemental info (e.g. price info for a product barcode)
  12. - *
- */ - CharSequence buildHistory() { - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - Cursor cursor = null; - try { - db = helper.getWritableDatabase(); - cursor = db.query(DBHelper.TABLE_NAME, - COLUMNS, - null, null, null, null, - DBHelper.TIMESTAMP_COL + " DESC"); - - DateFormat format = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); - StringBuilder historyText = new StringBuilder(1000); - while (cursor.moveToNext()) { - - historyText.append('"').append(massageHistoryField(cursor.getString(0))).append("\","); - historyText.append('"').append(massageHistoryField(cursor.getString(1))).append("\","); - historyText.append('"').append(massageHistoryField(cursor.getString(2))).append("\","); - historyText.append('"').append(massageHistoryField(cursor.getString(3))).append("\","); - - // Add timestamp again, formatted - long timestamp = cursor.getLong(3); - historyText.append('"').append(massageHistoryField( - format.format(new Date(timestamp)))).append("\","); - - // Above we're preserving the old ordering of columns which had formatted data in position 5 - - historyText.append('"').append(massageHistoryField(cursor.getString(4))).append("\"\r\n"); - } - return historyText; - } finally { - close(cursor, db); - } - } - - void clearHistory() { - SQLiteOpenHelper helper = new DBHelper(activity); - SQLiteDatabase db = null; - try { - db = helper.getWritableDatabase(); - db.delete(DBHelper.TABLE_NAME, null, null); - } finally { - close(null, db); - } - } - - static Uri saveHistory(String history) { - File bsRoot = new File(Environment.getExternalStorageDirectory(), "BarcodeScanner"); - File historyRoot = new File(bsRoot, "History"); - if (!historyRoot.exists() && !historyRoot.mkdirs()) { - Log.w(TAG, "Couldn't make dir " + historyRoot); - return null; - } - File historyFile = new File(historyRoot, "history-" + System.currentTimeMillis() + ".csv"); - OutputStreamWriter out = null; - try { - out = new OutputStreamWriter(new FileOutputStream(historyFile), Charset.forName("UTF-8")); - out.write(history); - return Uri.parse("file://" + historyFile.getAbsolutePath()); - } catch (IOException ioe) { - Log.w(TAG, "Couldn't access file " + historyFile + " due to " + ioe); - return null; - } finally { - if (out != null) { - try { - out.close(); - } catch (IOException ioe) { - // do nothing - } - } - } - } - - private static String massageHistoryField(String value) { - return value == null ? "" : value.replace("\"","\"\""); - } - - private static void close(Cursor cursor, SQLiteDatabase database) { - if (cursor != null) { - cursor.close(); - } - if (database != null) { - database.close(); - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/AddressBookResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/AddressBookResultHandler.java deleted file mode 100755 index 70d48a21b0..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/AddressBookResultHandler.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; -import android.telephony.PhoneNumberUtils; -import android.text.Spannable; -import android.text.SpannableString; -import android.text.style.StyleSpan; - -import com.alibaba.weex.R; -import com.google.zxing.client.result.AddressBookParsedResult; -import com.google.zxing.client.result.ParsedResult; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -/** - * Handles address book entries. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class AddressBookResultHandler extends ResultHandler { - - private static final DateFormat[] DATE_FORMATS = { - new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH), - new SimpleDateFormat("yyyyMMdd'T'HHmmss", Locale.ENGLISH), - new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH), - new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH), - }; - static { - for (DateFormat format : DATE_FORMATS) { - format.setLenient(false); - } - } - - private static final int[] BUTTON_TEXTS = { - R.string.button_add_contact, - R.string.button_show_map, - R.string.button_dial, - R.string.button_email, - }; - - private final boolean[] fields; - private int buttonCount; - - // This takes all the work out of figuring out which buttons/actions should be in which - // positions, based on which fields are present in this barcode. - private int mapIndexToAction(int index) { - if (index < buttonCount) { - int count = -1; - for (int x = 0; x < MAX_BUTTON_COUNT; x++) { - if (fields[x]) { - count++; - } - if (count == index) { - return x; - } - } - } - return -1; - } - - public AddressBookResultHandler(Activity activity, ParsedResult result) { - super(activity, result); - AddressBookParsedResult addressResult = (AddressBookParsedResult) result; - String[] addresses = addressResult.getAddresses(); - boolean hasAddress = addresses != null && addresses.length > 0 && addresses[0] != null && !addresses[0].isEmpty(); - String[] phoneNumbers = addressResult.getPhoneNumbers(); - boolean hasPhoneNumber = phoneNumbers != null && phoneNumbers.length > 0; - String[] emails = addressResult.getEmails(); - boolean hasEmailAddress = emails != null && emails.length > 0; - - fields = new boolean[MAX_BUTTON_COUNT]; - fields[0] = true; // Add contact is always available - fields[1] = hasAddress; - fields[2] = hasPhoneNumber; - fields[3] = hasEmailAddress; - - buttonCount = 0; - for (int x = 0; x < MAX_BUTTON_COUNT; x++) { - if (fields[x]) { - buttonCount++; - } - } - } - - @Override - public int getButtonCount() { - return buttonCount; - } - - @Override - public int getButtonText(int index) { - return BUTTON_TEXTS[mapIndexToAction(index)]; - } - - @Override - public void handleButtonPress(int index) { - AddressBookParsedResult addressResult = (AddressBookParsedResult) getResult(); - String[] addresses = addressResult.getAddresses(); - String address1 = addresses == null || addresses.length < 1 ? null : addresses[0]; - String[] addressTypes = addressResult.getAddressTypes(); - String address1Type = addressTypes == null || addressTypes.length < 1 ? null : addressTypes[0]; - int action = mapIndexToAction(index); - switch (action) { - case 0: - addContact(addressResult.getNames(), - addressResult.getNicknames(), - addressResult.getPronunciation(), - addressResult.getPhoneNumbers(), - addressResult.getPhoneTypes(), - addressResult.getEmails(), - addressResult.getEmailTypes(), - addressResult.getNote(), - addressResult.getInstantMessenger(), - address1, - address1Type, - addressResult.getOrg(), - addressResult.getTitle(), - addressResult.getURLs(), - addressResult.getBirthday(), - addressResult.getGeo()); - break; - case 1: - searchMap(address1); - break; - case 2: - dialPhone(addressResult.getPhoneNumbers()[0]); - break; - case 3: - sendEmail(addressResult.getEmails(), null, null, null, null); - break; - default: - break; - } - } - - private static Date parseDate(String s) { - for (DateFormat currentFormat : DATE_FORMATS) { - try { - return currentFormat.parse(s); - } catch (ParseException e) { - // continue - } - } - return null; - } - - // Overriden so we can hyphenate phone numbers, format birthdays, and bold the name. - @Override - public CharSequence getDisplayContents() { - AddressBookParsedResult result = (AddressBookParsedResult) getResult(); - StringBuilder contents = new StringBuilder(100); - ParsedResult.maybeAppend(result.getNames(), contents); - int namesLength = contents.length(); - - String pronunciation = result.getPronunciation(); - if (pronunciation != null && !pronunciation.isEmpty()) { - contents.append("\n("); - contents.append(pronunciation); - contents.append(')'); - } - - ParsedResult.maybeAppend(result.getTitle(), contents); - ParsedResult.maybeAppend(result.getOrg(), contents); - ParsedResult.maybeAppend(result.getAddresses(), contents); - String[] numbers = result.getPhoneNumbers(); - if (numbers != null) { - for (String number : numbers) { - if (number != null) { - ParsedResult.maybeAppend(PhoneNumberUtils.formatNumber(number), contents); - } - } - } - ParsedResult.maybeAppend(result.getEmails(), contents); - ParsedResult.maybeAppend(result.getURLs(), contents); - - String birthday = result.getBirthday(); - if (birthday != null && !birthday.isEmpty()) { - Date date = parseDate(birthday); - if (date != null) { - ParsedResult.maybeAppend(DateFormat.getDateInstance(DateFormat.MEDIUM).format(date.getTime()), contents); - } - } - ParsedResult.maybeAppend(result.getNote(), contents); - - if (namesLength > 0) { - // Bold the full name to make it stand out a bit. - Spannable styled = new SpannableString(contents.toString()); - styled.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, namesLength, 0); - return styled; - } else { - return contents.toString(); - } - } - - @Override - public int getDisplayTitle() { - return R.string.result_address_book; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/CalendarResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/CalendarResultHandler.java deleted file mode 100755 index 29d9520c89..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/CalendarResultHandler.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.util.Log; - -import com.alibaba.weex.R; -import com.google.zxing.client.result.CalendarParsedResult; -import com.google.zxing.client.result.ParsedResult; - -import java.text.DateFormat; -import java.util.Date; - -/** - * Handles calendar entries encoded in QR Codes. - * - * @author dswitkin@google.com (Daniel Switkin) - * @author Sean Owen - */ -public final class CalendarResultHandler extends ResultHandler { - - private static final String TAG = CalendarResultHandler.class.getSimpleName(); - - private static final int[] buttons = { - R.string.button_add_calendar - }; - - public CalendarResultHandler(Activity activity, ParsedResult result) { - super(activity, result); - } - - @Override - public int getButtonCount() { - return buttons.length; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public void handleButtonPress(int index) { - if (index == 0) { - CalendarParsedResult calendarResult = (CalendarParsedResult) getResult(); - - String description = calendarResult.getDescription(); - String organizer = calendarResult.getOrganizer(); - if (organizer != null) { // No separate Intent key, put in description - if (description == null) { - description = organizer; - } else { - description = description + '\n' + organizer; - } - } - - addCalendarEvent(calendarResult.getSummary(), - calendarResult.getStart(), - calendarResult.isStartAllDay(), - calendarResult.getEnd(), - calendarResult.getLocation(), - description, - calendarResult.getAttendees()); - } - } - - /** - * Sends an intent to create a new calendar event by prepopulating the Add Event UI. Older - * versions of the system have a bug where the event title will not be filled out. - * - * @param summary A description of the event - * @param start The start time - * @param allDay if true, event is considered to be all day starting from start time - * @param end The end time (optional) - * @param location a text description of the event location - * @param description a text description of the event itself - * @param attendees attendees to invite - */ - private void addCalendarEvent(String summary, - Date start, - boolean allDay, - Date end, - String location, - String description, - String[] attendees) { - Intent intent = new Intent(Intent.ACTION_INSERT); - intent.setType("vnd.android.cursor.item/event"); - long startMilliseconds = start.getTime(); - intent.putExtra("beginTime", startMilliseconds); - if (allDay) { - intent.putExtra("allDay", true); - } - long endMilliseconds; - if (end == null) { - if (allDay) { - // + 1 day - endMilliseconds = startMilliseconds + 24 * 60 * 60 * 1000; - } else { - endMilliseconds = startMilliseconds; - } - } else { - endMilliseconds = end.getTime(); - } - intent.putExtra("endTime", endMilliseconds); - intent.putExtra("title", summary); - intent.putExtra("eventLocation", location); - intent.putExtra("description", description); - if (attendees != null) { - intent.putExtra(Intent.EXTRA_EMAIL, attendees); - // Documentation says this is either a String[] or comma-separated String, which is right? - } - - try { - // Do this manually at first - rawLaunchIntent(intent); - } catch (ActivityNotFoundException anfe) { - Log.w(TAG, "No calendar app available that responds to " + Intent.ACTION_INSERT); - // For calendar apps that don't like "INSERT": - intent.setAction(Intent.ACTION_EDIT); - launchIntent(intent); // Fail here for real if nothing can handle it - } - } - - - @Override - public CharSequence getDisplayContents() { - - CalendarParsedResult calResult = (CalendarParsedResult) getResult(); - StringBuilder result = new StringBuilder(100); - - ParsedResult.maybeAppend(calResult.getSummary(), result); - - Date start = calResult.getStart(); - ParsedResult.maybeAppend(format(calResult.isStartAllDay(), start), result); - - Date end = calResult.getEnd(); - if (end != null) { - if (calResult.isEndAllDay() && !start.equals(end)) { - // Show only year/month/day - // if it's all-day and this is the end date, it's exclusive, so show the user - // that it ends on the day before to make more intuitive sense. - // But don't do it if the event already (incorrectly?) specifies the same start/end - end = new Date(end.getTime() - 24 * 60 * 60 * 1000); - } - ParsedResult.maybeAppend(format(calResult.isEndAllDay(), end), result); - } - - ParsedResult.maybeAppend(calResult.getLocation(), result); - ParsedResult.maybeAppend(calResult.getOrganizer(), result); - ParsedResult.maybeAppend(calResult.getAttendees(), result); - ParsedResult.maybeAppend(calResult.getDescription(), result); - return result.toString(); - } - - private static String format(boolean allDay, Date date) { - if (date == null) { - return null; - } - DateFormat format = allDay - ? DateFormat.getDateInstance(DateFormat.MEDIUM) - : DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); - return format.format(date); - } - - @Override - public int getDisplayTitle() { - return R.string.result_calendar; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/EmailAddressResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/EmailAddressResultHandler.java deleted file mode 100755 index d05db007a6..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/EmailAddressResultHandler.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; - -import com.alibaba.weex.R; -import com.google.zxing.client.result.EmailAddressParsedResult; -import com.google.zxing.client.result.ParsedResult; - -/** - * Handles email addresses. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class EmailAddressResultHandler extends ResultHandler { - private static final int[] buttons = { - R.string.button_email, - R.string.button_add_contact - }; - - public EmailAddressResultHandler(Activity activity, ParsedResult result) { - super(activity, result); - } - - @Override - public int getButtonCount() { - return buttons.length; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public void handleButtonPress(int index) { - EmailAddressParsedResult emailResult = (EmailAddressParsedResult) getResult(); - switch (index) { - case 0: - sendEmail(emailResult.getTos(), - emailResult.getCCs(), - emailResult.getBCCs(), - emailResult.getSubject(), - emailResult.getBody()); - break; - case 1: - addEmailOnlyContact(emailResult.getTos(), null); - break; - } - } - - @Override - public int getDisplayTitle() { - return R.string.result_email_address; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/GeoResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/GeoResultHandler.java deleted file mode 100755 index 1fed4e57f4..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/GeoResultHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; - -import com.alibaba.weex.R; -import com.google.zxing.client.result.GeoParsedResult; -import com.google.zxing.client.result.ParsedResult; - -/** - * Handles geographic coordinates (typically encoded as geo: URLs). - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class GeoResultHandler extends ResultHandler { - private static final int[] buttons = { - R.string.button_show_map, - R.string.button_get_directions - }; - - public GeoResultHandler(Activity activity, ParsedResult result) { - super(activity, result); - } - - @Override - public int getButtonCount() { - return buttons.length; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public void handleButtonPress(int index) { - GeoParsedResult geoResult = (GeoParsedResult) getResult(); - switch (index) { - case 0: - openMap(geoResult.getGeoURI()); - break; - case 1: - getDirections(geoResult.getLatitude(), geoResult.getLongitude()); - break; - } - } - - @Override - public int getDisplayTitle() { - return R.string.result_geo; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ISBNResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ISBNResultHandler.java deleted file mode 100755 index dbe2f1b9f1..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ISBNResultHandler.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; - -import com.alibaba.weex.R; -import com.google.zxing.Result; -import com.google.zxing.client.result.ISBNParsedResult; -import com.google.zxing.client.result.ParsedResult; - -/** - * Handles books encoded by their ISBN values. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class ISBNResultHandler extends ResultHandler { - private static final int[] buttons = { - R.string.button_product_search, - R.string.button_book_search, - R.string.button_search_book_contents, - R.string.button_custom_product_search - }; - - public ISBNResultHandler(Activity activity, ParsedResult result, Result rawResult) { - super(activity, result, rawResult); - } - - @Override - public int getButtonCount() { - return hasCustomProductSearch() ? buttons.length : buttons.length - 1; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public void handleButtonPress(int index) { - ISBNParsedResult isbnResult = (ISBNParsedResult) getResult(); - switch (index) { - case 0: - openProductSearch(isbnResult.getISBN()); - break; - case 1: - openBookSearch(isbnResult.getISBN()); - break; - case 2: - searchBookContents(isbnResult.getISBN()); - break; - case 3: - openURL(fillInCustomSearchURL(isbnResult.getISBN())); - break; - } - } - - @Override - public int getDisplayTitle() { - return R.string.result_isbn; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ProductResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ProductResultHandler.java deleted file mode 100755 index c8e5159057..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ProductResultHandler.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; - -import com.alibaba.weex.R; -import com.google.zxing.Result; -import com.google.zxing.client.result.ExpandedProductParsedResult; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.ProductParsedResult; - -/** - * Handles generic products which are not books. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class ProductResultHandler extends ResultHandler { - private static final int[] buttons = { - R.string.button_product_search, - R.string.button_web_search, - R.string.button_custom_product_search - }; - - public ProductResultHandler(Activity activity, ParsedResult result, Result rawResult) { - super(activity, result, rawResult); - } - - @Override - public int getButtonCount() { - return hasCustomProductSearch() ? buttons.length : buttons.length - 1; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public void handleButtonPress(int index) { - String productID = getProductIDFromResult(getResult()); - switch (index) { - case 0: - openProductSearch(productID); - break; - case 1: - webSearch(productID); - break; - case 2: - openURL(fillInCustomSearchURL(productID)); - break; - } - } - - private static String getProductIDFromResult(ParsedResult rawResult) { - if (rawResult instanceof ProductParsedResult) { - return ((ProductParsedResult) rawResult).getNormalizedProductID(); - } - if (rawResult instanceof ExpandedProductParsedResult) { - return ((ExpandedProductParsedResult) rawResult).getRawText(); - } - throw new IllegalArgumentException(rawResult.getClass().toString()); - } - - @Override - public int getDisplayTitle() { - return R.string.result_product; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultButtonListener.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultButtonListener.java deleted file mode 100755 index 2e107c42a5..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultButtonListener.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.view.View; - -/** - * Handles the result of barcode decoding in the context of the Android platform, by dispatching the - * proper intents to open other activities like GMail, Maps, etc. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class ResultButtonListener implements View.OnClickListener { - private final ResultHandler resultHandler; - private final int index; - - public ResultButtonListener(ResultHandler resultHandler, int index) { - this.resultHandler = resultHandler; - this.index = index; - } - - @Override - public void onClick(View view) { - resultHandler.handleButtonPress(index); - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultHandler.java deleted file mode 100755 index 92187e8e02..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultHandler.java +++ /dev/null @@ -1,513 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.ActivityNotFoundException; -import android.content.ContentValues; -import android.content.Intent; -import android.content.SharedPreferences; -import android.net.Uri; -import android.preference.PreferenceManager; -import android.provider.ContactsContract; -import android.util.Log; - -import com.alibaba.weex.R; -import com.google.zxing.Result; -import com.google.zxing.client.android.Contents; -import com.google.zxing.client.android.Intents; -import com.google.zxing.client.android.LocaleManager; -import com.google.zxing.client.android.PreferencesActivity; -import com.google.zxing.client.android.book.SearchBookContentsActivity; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.ParsedResultType; -import com.google.zxing.client.result.ResultParser; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Locale; - -/** - * A base class for the Android-specific barcode handlers. These allow the app to polymorphically - * suggest the appropriate actions for each data type. - * - * This class also contains a bunch of utility methods to take common actions like opening a URL. - * They could easily be moved into a helper object, but it can't be static because the Activity - * instance is needed to launch an intent. - * - * @author dswitkin@google.com (Daniel Switkin) - * @author Sean Owen - */ -public abstract class ResultHandler { - - private static final String TAG = ResultHandler.class.getSimpleName(); - - private static final String[] EMAIL_TYPE_STRINGS = {"home", "work", "mobile"}; - private static final String[] PHONE_TYPE_STRINGS = {"home", "work", "mobile", "fax", "pager", "main"}; - private static final String[] ADDRESS_TYPE_STRINGS = {"home", "work"}; - private static final int[] EMAIL_TYPE_VALUES = { - ContactsContract.CommonDataKinds.Email.TYPE_HOME, - ContactsContract.CommonDataKinds.Email.TYPE_WORK, - ContactsContract.CommonDataKinds.Email.TYPE_MOBILE, - }; - private static final int[] PHONE_TYPE_VALUES = { - ContactsContract.CommonDataKinds.Phone.TYPE_HOME, - ContactsContract.CommonDataKinds.Phone.TYPE_WORK, - ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, - ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK, - ContactsContract.CommonDataKinds.Phone.TYPE_PAGER, - ContactsContract.CommonDataKinds.Phone.TYPE_MAIN, - }; - private static final int[] ADDRESS_TYPE_VALUES = { - ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME, - ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK, - }; - private static final int NO_TYPE = -1; - - public static final int MAX_BUTTON_COUNT = 4; - - private final ParsedResult result; - private final Activity activity; - private final Result rawResult; - private final String customProductSearch; - - ResultHandler(Activity activity, ParsedResult result) { - this(activity, result, null); - } - - ResultHandler(Activity activity, ParsedResult result, Result rawResult) { - this.result = result; - this.activity = activity; - this.rawResult = rawResult; - this.customProductSearch = parseCustomSearchURL(); - } - - public final ParsedResult getResult() { - return result; - } - - final boolean hasCustomProductSearch() { - return customProductSearch != null; - } - - final Activity getActivity() { - return activity; - } - - /** - * Indicates how many buttons the derived class wants shown. - * - * @return The integer button count. - */ - public abstract int getButtonCount(); - - /** - * The text of the nth action button. - * - * @param index From 0 to getButtonCount() - 1 - * @return The button text as a resource ID - */ - public abstract int getButtonText(int index); - - public Integer getDefaultButtonID() { - return null; - } - - /** - * Execute the action which corresponds to the nth button. - * - * @param index The button that was clicked. - */ - public abstract void handleButtonPress(int index); - - /** - * Some barcode contents are considered secure, and should not be saved to history, copied to - * the clipboard, or otherwise persisted. - * - * @return If true, do not create any permanent record of these contents. - */ - public boolean areContentsSecure() { - return false; - } - - /** - * Create a possibly styled string for the contents of the current barcode. - * - * @return The text to be displayed. - */ - public CharSequence getDisplayContents() { - String contents = result.getDisplayResult(); - return contents.replace("\r", ""); - } - - /** - * A string describing the kind of barcode that was found, e.g. "Found contact info". - * - * @return The resource ID of the string. - */ - public abstract int getDisplayTitle(); - - /** - * A convenience method to get the parsed type. Should not be overridden. - * - * @return The parsed type, e.g. URI or ISBN - */ - public final ParsedResultType getType() { - return result.getType(); - } - - final void addPhoneOnlyContact(String[] phoneNumbers,String[] phoneTypes) { - addContact(null, null, null, phoneNumbers, phoneTypes, null, null, null, null, null, null, null, null, null, null, null); - } - - final void addEmailOnlyContact(String[] emails, String[] emailTypes) { - addContact(null, null, null, null, null, emails, emailTypes, null, null, null, null, null, null, null, null, null); - } - - final void addContact(String[] names, - String[] nicknames, - String pronunciation, - String[] phoneNumbers, - String[] phoneTypes, - String[] emails, - String[] emailTypes, - String note, - String instantMessenger, - String address, - String addressType, - String org, - String title, - String[] urls, - String birthday, - String[] geo) { - - // Only use the first name in the array, if present. - Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT, ContactsContract.Contacts.CONTENT_URI); - intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE); - putExtra(intent, ContactsContract.Intents.Insert.NAME, names != null ? names[0] : null); - - putExtra(intent, ContactsContract.Intents.Insert.PHONETIC_NAME, pronunciation); - - int phoneCount = Math.min(phoneNumbers != null ? phoneNumbers.length : 0, Contents.PHONE_KEYS.length); - for (int x = 0; x < phoneCount; x++) { - putExtra(intent, Contents.PHONE_KEYS[x], phoneNumbers[x]); - if (phoneTypes != null && x < phoneTypes.length) { - int type = toPhoneContractType(phoneTypes[x]); - if (type >= 0) { - intent.putExtra(Contents.PHONE_TYPE_KEYS[x], type); - } - } - } - - int emailCount = Math.min(emails != null ? emails.length : 0, Contents.EMAIL_KEYS.length); - for (int x = 0; x < emailCount; x++) { - putExtra(intent, Contents.EMAIL_KEYS[x], emails[x]); - if (emailTypes != null && x < emailTypes.length) { - int type = toEmailContractType(emailTypes[x]); - if (type >= 0) { - intent.putExtra(Contents.EMAIL_TYPE_KEYS[x], type); - } - } - } - - ArrayList data = new ArrayList<>(); - if (urls != null) { - for (String url : urls) { - if (url != null && !url.isEmpty()) { - ContentValues row = new ContentValues(2); - row.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE); - row.put(ContactsContract.CommonDataKinds.Website.URL, url); - data.add(row); - break; - } - } - } - - if (birthday != null) { - ContentValues row = new ContentValues(3); - row.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE); - row.put(ContactsContract.CommonDataKinds.Event.TYPE, ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY); - row.put(ContactsContract.CommonDataKinds.Event.START_DATE, birthday); - data.add(row); - } - - if (nicknames != null) { - for (String nickname : nicknames) { - if (nickname != null && !nickname.isEmpty()) { - ContentValues row = new ContentValues(3); - row.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE); - row.put(ContactsContract.CommonDataKinds.Nickname.TYPE, - ContactsContract.CommonDataKinds.Nickname.TYPE_DEFAULT); - row.put(ContactsContract.CommonDataKinds.Nickname.NAME, nickname); - data.add(row); - break; - } - } - } - - if (!data.isEmpty()) { - intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, data); - } - - StringBuilder aggregatedNotes = new StringBuilder(); - if (note != null) { - aggregatedNotes.append('\n').append(note); - } - if (geo != null) { - aggregatedNotes.append('\n').append(geo[0]).append(',').append(geo[1]); - } - - if (aggregatedNotes.length() > 0) { - // Remove extra leading '\n' - putExtra(intent, ContactsContract.Intents.Insert.NOTES, aggregatedNotes.substring(1)); - } - - putExtra(intent, ContactsContract.Intents.Insert.IM_HANDLE, instantMessenger); - putExtra(intent, ContactsContract.Intents.Insert.POSTAL, address); - if (addressType != null) { - int type = toAddressContractType(addressType); - if (type >= 0) { - intent.putExtra(ContactsContract.Intents.Insert.POSTAL_TYPE, type); - } - } - putExtra(intent, ContactsContract.Intents.Insert.COMPANY, org); - putExtra(intent, ContactsContract.Intents.Insert.JOB_TITLE, title); - launchIntent(intent); - } - - private static int toEmailContractType(String typeString) { - return doToContractType(typeString, EMAIL_TYPE_STRINGS, EMAIL_TYPE_VALUES); - } - - private static int toPhoneContractType(String typeString) { - return doToContractType(typeString, PHONE_TYPE_STRINGS, PHONE_TYPE_VALUES); - } - - private static int toAddressContractType(String typeString) { - return doToContractType(typeString, ADDRESS_TYPE_STRINGS, ADDRESS_TYPE_VALUES); - } - - private static int doToContractType(String typeString, String[] types, int[] values) { - if (typeString == null) { - return NO_TYPE; - } - for (int i = 0; i < types.length; i++) { - String type = types[i]; - if (typeString.startsWith(type) || typeString.startsWith(type.toUpperCase(Locale.ENGLISH))) { - return values[i]; - } - } - return NO_TYPE; - } - - final void shareByEmail(String contents) { - sendEmail(null, null, null, null, contents); - } - - final void sendEmail(String[] to, - String[] cc, - String[] bcc, - String subject, - String body) { - Intent intent = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); - if (to != null && to.length != 0) { - intent.putExtra(Intent.EXTRA_EMAIL, to); - } - if (cc != null && cc.length != 0) { - intent.putExtra(Intent.EXTRA_CC, cc); - } - if (bcc != null && bcc.length != 0) { - intent.putExtra(Intent.EXTRA_BCC, bcc); - } - putExtra(intent, Intent.EXTRA_SUBJECT, subject); - putExtra(intent, Intent.EXTRA_TEXT, body); - intent.setType("text/plain"); - launchIntent(intent); - } - - final void shareBySMS(String contents) { - sendSMSFromUri("smsto:", contents); - } - - final void sendSMS(String phoneNumber, String body) { - sendSMSFromUri("smsto:" + phoneNumber, body); - } - - final void sendSMSFromUri(String uri, String body) { - Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri)); - putExtra(intent, "sms_body", body); - // Exit the app once the SMS is sent - intent.putExtra("compose_mode", true); - launchIntent(intent); - } - - final void sendMMS(String phoneNumber, String subject, String body) { - sendMMSFromUri("mmsto:" + phoneNumber, subject, body); - } - - final void sendMMSFromUri(String uri, String subject, String body) { - Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri)); - // The Messaging app needs to see a valid subject or else it will treat this an an SMS. - if (subject == null || subject.isEmpty()) { - putExtra(intent, "subject", activity.getString(R.string.msg_default_mms_subject)); - } else { - putExtra(intent, "subject", subject); - } - putExtra(intent, "sms_body", body); - intent.putExtra("compose_mode", true); - launchIntent(intent); - } - - final void dialPhone(String phoneNumber) { - launchIntent(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber))); - } - - final void dialPhoneFromUri(String uri) { - launchIntent(new Intent(Intent.ACTION_DIAL, Uri.parse(uri))); - } - - final void openMap(String geoURI) { - launchIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(geoURI))); - } - - /** - * Do a geo search using the address as the query. - * - * @param address The address to find - */ - final void searchMap(String address) { - launchIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" + Uri.encode(address)))); - } - - final void getDirections(double latitude, double longitude) { - launchIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("http://maps.google." + - LocaleManager.getCountryTLD(activity) + "/maps?f=d&daddr=" + latitude + ',' + longitude))); - } - - // Uses the mobile-specific version of Product Search, which is formatted for small screens. - final void openProductSearch(String upc) { - Uri uri = Uri.parse("http://www.google." + LocaleManager.getProductSearchCountryTLD(activity) + - "/m/products?q=" + upc + "&source=zxing"); - launchIntent(new Intent(Intent.ACTION_VIEW, uri)); - } - - final void openBookSearch(String isbn) { - Uri uri = Uri.parse("http://books.google." + LocaleManager.getBookSearchCountryTLD(activity) + - "/books?vid=isbn" + isbn); - launchIntent(new Intent(Intent.ACTION_VIEW, uri)); - } - - final void searchBookContents(String isbnOrUrl) { - Intent intent = new Intent(Intents.SearchBookContents.ACTION); - intent.setClassName(activity, SearchBookContentsActivity.class.getName()); - putExtra(intent, Intents.SearchBookContents.ISBN, isbnOrUrl); - launchIntent(intent); - } - - final void openURL(String url) { - // Strangely, some Android browsers don't seem to register to handle HTTP:// or HTTPS://. - // Lower-case these as it should always be OK to lower-case these schemes. - if (url.startsWith("HTTP://")) { - url = "http" + url.substring(4); - } else if (url.startsWith("HTTPS://")) { - url = "https" + url.substring(5); - } - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - try { - launchIntent(intent); - } catch (ActivityNotFoundException ignored) { - Log.w(TAG, "Nothing available to handle " + intent); - } - } - - final void webSearch(String query) { - Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); - intent.putExtra("query", query); - launchIntent(intent); - } - - /** - * Like {@link #launchIntent(Intent)} but will tell you if it is not handle-able - * via {@link ActivityNotFoundException}. - * - * @throws ActivityNotFoundException - */ - final void rawLaunchIntent(Intent intent) { - if (intent != null) { - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - Log.d(TAG, "Launching intent: " + intent + " with extras: " + intent.getExtras()); - activity.startActivity(intent); - } - } - - /** - * Like {@link #rawLaunchIntent(Intent)} but will show a user dialog if nothing is available to handle. - */ - final void launchIntent(Intent intent) { - try { - rawLaunchIntent(intent); - } catch (ActivityNotFoundException ignored) { - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - builder.setTitle(R.string.app_name); - builder.setMessage(R.string.msg_intent_failed); - builder.setPositiveButton(R.string.button_ok, null); - builder.show(); - } - } - - private static void putExtra(Intent intent, String key, String value) { - if (value != null && !value.isEmpty()) { - intent.putExtra(key, value); - } - } - - private String parseCustomSearchURL() { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); - String customProductSearch = prefs.getString(PreferencesActivity.KEY_CUSTOM_PRODUCT_SEARCH, - null); - if (customProductSearch != null && customProductSearch.trim().isEmpty()) { - return null; - } - return customProductSearch; - } - - final String fillInCustomSearchURL(String text) { - if (customProductSearch == null) { - return text; // ? - } - try { - text = URLEncoder.encode(text, "UTF-8"); - } catch (UnsupportedEncodingException e) { - // can't happen; UTF-8 is always supported. Continue, I guess, without encoding - } - String url = customProductSearch; - if (rawResult != null) { - // Replace %f but only if it doesn't seem to be a hex escape sequence. This remains - // problematic but avoids the more surprising problem of breaking escapes - url = url.replaceFirst("%f(?![0-9a-f])", rawResult.getBarcodeFormat().toString()); - if (url.contains("%t")) { - ParsedResult parsedResultAgain = ResultParser.parseResult(rawResult); - url = url.replace("%t", parsedResultAgain.getType().toString()); - } - } - // Replace %s last as it might contain itself %f or %t - return url.replace("%s", text); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultHandlerFactory.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultHandlerFactory.java deleted file mode 100755 index a31d089880..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/ResultHandlerFactory.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import com.google.zxing.Result; -import com.google.zxing.client.android.CaptureActivity; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.ResultParser; - -/** - * Manufactures Android-specific handlers based on the barcode content's type. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class ResultHandlerFactory { - private ResultHandlerFactory() { - } - - public static ResultHandler makeResultHandler(CaptureActivity activity, Result rawResult) { - ParsedResult result = parseResult(rawResult); - switch (result.getType()) { - case ADDRESSBOOK: - return new AddressBookResultHandler(activity, result); - case EMAIL_ADDRESS: - return new EmailAddressResultHandler(activity, result); - case PRODUCT: - return new ProductResultHandler(activity, result, rawResult); - case URI: - return new URIResultHandler(activity, result); - case WIFI: - return new WifiResultHandler(activity, result); - case GEO: - return new GeoResultHandler(activity, result); - case TEL: - return new TelResultHandler(activity, result); - case SMS: - return new SMSResultHandler(activity, result); - case CALENDAR: - return new CalendarResultHandler(activity, result); - case ISBN: - return new ISBNResultHandler(activity, result, rawResult); - default: - return new TextResultHandler(activity, result, rawResult); - } - } - - private static ParsedResult parseResult(Result rawResult) { - return ResultParser.parseResult(rawResult); - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/SMSResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/SMSResultHandler.java deleted file mode 100755 index 22bce750c0..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/SMSResultHandler.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; -import android.telephony.PhoneNumberUtils; - -import com.alibaba.weex.R; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.SMSParsedResult; - -/** - * Handles SMS addresses, offering a choice of composing a new SMS or MMS message. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class SMSResultHandler extends ResultHandler { - private static final int[] buttons = { - R.string.button_sms, - R.string.button_mms - }; - - public SMSResultHandler(Activity activity, ParsedResult result) { - super(activity, result); - } - - @Override - public int getButtonCount() { - return buttons.length; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public void handleButtonPress(int index) { - SMSParsedResult smsResult = (SMSParsedResult) getResult(); - String number = smsResult.getNumbers()[0]; - switch (index) { - case 0: - // Don't know of a way yet to express a SENDTO intent with multiple recipients - sendSMS(number, smsResult.getBody()); - break; - case 1: - sendMMS(number, smsResult.getSubject(), smsResult.getBody()); - break; - } - } - - @Override - public CharSequence getDisplayContents() { - SMSParsedResult smsResult = (SMSParsedResult) getResult(); - String[] rawNumbers = smsResult.getNumbers(); - String[] formattedNumbers = new String[rawNumbers.length]; - for (int i = 0; i < rawNumbers.length; i++) { - formattedNumbers[i] = PhoneNumberUtils.formatNumber(rawNumbers[i]); - } - StringBuilder contents = new StringBuilder(50); - ParsedResult.maybeAppend(formattedNumbers, contents); - ParsedResult.maybeAppend(smsResult.getSubject(), contents); - ParsedResult.maybeAppend(smsResult.getBody(), contents); - return contents.toString(); - } - - @Override - public int getDisplayTitle() { - return R.string.result_sms; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/TelResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/TelResultHandler.java deleted file mode 100755 index a42e7cf3d1..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/TelResultHandler.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; -import android.telephony.PhoneNumberUtils; - -import com.alibaba.weex.R; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.TelParsedResult; - -/** - * Offers relevant actions for telephone numbers. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class TelResultHandler extends ResultHandler { - private static final int[] buttons = { - R.string.button_dial, - R.string.button_add_contact - }; - - public TelResultHandler(Activity activity, ParsedResult result) { - super(activity, result); - } - - @Override - public int getButtonCount() { - return buttons.length; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public void handleButtonPress(int index) { - TelParsedResult telResult = (TelParsedResult) getResult(); - switch (index) { - case 0: - dialPhoneFromUri(telResult.getTelURI()); - // When dialer comes up, it allows underlying display activity to continue or something, - // but app can't get camera in this state. Avoid issues by just quitting, only in the - // case of a phone number - getActivity().finish(); - break; - case 1: - String[] numbers = new String[1]; - numbers[0] = telResult.getNumber(); - addPhoneOnlyContact(numbers, null); - break; - } - } - - // Overriden so we can take advantage of Android's phone number hyphenation routines. - @Override - public CharSequence getDisplayContents() { - String contents = getResult().getDisplayResult(); - contents = contents.replace("\r", ""); - return PhoneNumberUtils.formatNumber(contents); - } - - @Override - public int getDisplayTitle() { - return R.string.result_tel; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/TextResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/TextResultHandler.java deleted file mode 100755 index 32bda84b91..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/TextResultHandler.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; - -import com.alibaba.weex.R; -import com.google.zxing.Result; -import com.google.zxing.client.result.ParsedResult; - -/** - * This class handles TextParsedResult as well as unknown formats. It's the fallback handler. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class TextResultHandler extends ResultHandler { - - private static final int[] buttons = { - R.string.button_web_search, - R.string.button_share_by_email, - R.string.button_share_by_sms, - R.string.button_custom_product_search, - }; - - public TextResultHandler(Activity activity, ParsedResult result, Result rawResult) { - super(activity, result, rawResult); - } - - @Override - public int getButtonCount() { - return hasCustomProductSearch() ? buttons.length : buttons.length - 1; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public void handleButtonPress(int index) { - String text = getResult().getDisplayResult(); - switch (index) { - case 0: - webSearch(text); - break; - case 1: - shareByEmail(text); - break; - case 2: - shareBySMS(text); - break; - case 3: - openURL(fillInCustomSearchURL(text)); - break; - } - } - - @Override - public int getDisplayTitle() { - return R.string.result_text; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/URIResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/URIResultHandler.java deleted file mode 100755 index 6d0658396a..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/URIResultHandler.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; - -import com.alibaba.weex.R; -import com.google.zxing.client.android.LocaleManager; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.URIParsedResult; - -import java.util.Locale; - -/** - * Offers appropriate actions for URLS. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class URIResultHandler extends ResultHandler { - // URIs beginning with entries in this array will not be saved to history or copied to the - // clipboard for security. - private static final String[] SECURE_PROTOCOLS = { - "otpauth:" - }; - - private static final int[] buttons = { - R.string.button_open_browser, - R.string.button_share_by_email, - R.string.button_share_by_sms, - R.string.button_search_book_contents, - }; - - public URIResultHandler(Activity activity, ParsedResult result) { - super(activity, result); - } - - @Override - public int getButtonCount() { - if (LocaleManager.isBookSearchUrl(((URIParsedResult) getResult()).getURI())) { - return buttons.length; - } - return buttons.length - 1; - } - - @Override - public int getButtonText(int index) { - return buttons[index]; - } - - @Override - public Integer getDefaultButtonID() { - return 0; - } - - @Override - public void handleButtonPress(int index) { - URIParsedResult uriResult = (URIParsedResult) getResult(); - String uri = uriResult.getURI(); - switch (index) { - case 0: - openURL(uri); - break; - case 1: - shareByEmail(uri); - break; - case 2: - shareBySMS(uri); - break; - case 3: - searchBookContents(uri); - break; - } - } - - @Override - public int getDisplayTitle() { - return R.string.result_uri; - } - - @Override - public boolean areContentsSecure() { - URIParsedResult uriResult = (URIParsedResult) getResult(); - String uri = uriResult.getURI().toLowerCase(Locale.ENGLISH); - for (String secure : SECURE_PROTOCOLS) { - if (uri.startsWith(secure)) { - return true; - } - } - return false; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/WifiResultHandler.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/WifiResultHandler.java deleted file mode 100755 index ab76af3822..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/WifiResultHandler.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result; - -import android.app.Activity; -import android.content.Context; -import android.net.wifi.WifiManager; -import android.os.AsyncTask; -import android.util.Log; -import android.widget.Toast; - -import com.alibaba.weex.R; -import com.google.zxing.client.android.CaptureActivity; -import com.google.zxing.client.android.wifi.WifiConfigManager; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.WifiParsedResult; - -/** - * Handles wifi access information. - * - * @author Vikram Aggarwal - * @author Sean Owen - */ -public final class WifiResultHandler extends ResultHandler { - - private static final String TAG = WifiResultHandler.class.getSimpleName(); - - private final CaptureActivity parent; - - public WifiResultHandler(CaptureActivity activity, ParsedResult result) { - super(activity, result); - parent = activity; - } - - @Override - public int getButtonCount() { - // We just need one button, and that is to configure the wireless. This could change in the future. - return 1; - } - - @Override - public int getButtonText(int index) { - return R.string.button_wifi; - } - - @Override - public void handleButtonPress(int index) { - if (index == 0) { - WifiParsedResult wifiResult = (WifiParsedResult) getResult(); - WifiManager wifiManager = (WifiManager) getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE); - if (wifiManager == null) { - Log.w(TAG, "No WifiManager available from device"); - return; - } - final Activity activity = getActivity(); - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - Toast.makeText(activity.getApplicationContext(), R.string.wifi_changing_network, Toast.LENGTH_SHORT).show(); - } - }); - new WifiConfigManager(wifiManager).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, wifiResult); - parent.restartPreviewAfterDelay(0L); - } - } - - // Display the name of the network and the network type to the user. - @Override - public CharSequence getDisplayContents() { - WifiParsedResult wifiResult = (WifiParsedResult) getResult(); - return wifiResult.getSsid() + " (" + wifiResult.getNetworkEncryption() + ')'; - } - - @Override - public int getDisplayTitle() { - return R.string.result_wifi; - } -} \ No newline at end of file diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/BookResultInfoRetriever.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/BookResultInfoRetriever.java deleted file mode 100755 index 769f7708d9..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/BookResultInfoRetriever.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result.supplement; - -import android.content.Context; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.google.zxing.client.android.HttpHelper; -import com.google.zxing.client.android.LocaleManager; -import com.google.zxing.client.android.history.HistoryManager; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.json.JSONTokener; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; - -/** - * @author Kamil Kaczmarczyk - * @author Sean Owen - */ -final class BookResultInfoRetriever extends SupplementalInfoRetriever { - - private final String isbn; - private final String source; - private final Context context; - - BookResultInfoRetriever(TextView textView, String isbn, HistoryManager historyManager, Context context) { - super(textView, historyManager); - this.isbn = isbn; - this.source = context.getString(R.string.msg_google_books); - this.context = context; - } - - @Override - void retrieveSupplementalInfo() throws IOException { - - CharSequence contents = HttpHelper.downloadViaHttp("https://www.googleapis.com/books/v1/volumes?q=isbn:" + isbn, - HttpHelper.ContentType.JSON); - - if (contents.length() == 0) { - return; - } - - String title; - String pages; - Collection authors = null; - - try { - - JSONObject topLevel = (JSONObject) new JSONTokener(contents.toString()).nextValue(); - JSONArray items = topLevel.optJSONArray("items"); - if (items == null || items.isNull(0)) { - return; - } - - JSONObject volumeInfo = ((JSONObject) items.get(0)).getJSONObject("volumeInfo"); - if (volumeInfo == null) { - return; - } - - title = volumeInfo.optString("title"); - pages = volumeInfo.optString("pageCount"); - - JSONArray authorsArray = volumeInfo.optJSONArray("authors"); - if (authorsArray != null && !authorsArray.isNull(0)) { - authors = new ArrayList<>(authorsArray.length()); - for (int i = 0; i < authorsArray.length(); i++) { - authors.add(authorsArray.getString(i)); - } - } - - } catch (JSONException e) { - throw new IOException(e); - } - - Collection newTexts = new ArrayList<>(); - maybeAddText(title, newTexts); - maybeAddTextSeries(authors, newTexts); - maybeAddText(pages == null || pages.isEmpty() ? null : pages + "pp.", newTexts); - - String baseBookUri = "http://www.google." + LocaleManager.getBookSearchCountryTLD(context) - + "/search?tbm=bks&source=zxing&q="; - - append(isbn, source, newTexts.toArray(new String[newTexts.size()]), baseBookUri + isbn); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/ProductResultInfoRetriever.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/ProductResultInfoRetriever.java deleted file mode 100755 index ad6fe8e25a..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/ProductResultInfoRetriever.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result.supplement; - -import android.content.Context; -import android.text.Html; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.google.zxing.client.android.HttpHelper; -import com.google.zxing.client.android.LocaleManager; -import com.google.zxing.client.android.history.HistoryManager; - -import java.io.IOException; -import java.net.URLEncoder; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - *

Retrieves product information from Google Product search.

- * - *

Please do not reuse this code. Using results in this way requires permission - * from Google, and that is not granted to users via this project.

- * - * @author Sean Owen - */ -final class ProductResultInfoRetriever extends SupplementalInfoRetriever { - - private static final Pattern[] PRODUCT_NAME_PRICE_PATTERNS = { - Pattern.compile(",event\\)\">([^<]+).+([^<]+)"), - Pattern.compile("owb63p\">([^<]+).+zdi3pb\">([^<]+)"), - }; - - private final String productID; - private final String source; - private final Context context; - - ProductResultInfoRetriever(TextView textView, String productID, HistoryManager historyManager, Context context) { - super(textView, historyManager); - this.productID = productID; - this.source = context.getString(R.string.msg_google_product); - this.context = context; - } - - @Override - void retrieveSupplementalInfo() throws IOException { - - String encodedProductID = URLEncoder.encode(productID, "UTF-8"); - String uri = "https://www.google." + LocaleManager.getProductSearchCountryTLD(context) - + "/m/products?ie=utf8&oe=utf8&scoring=p&source=zxing&q=" + encodedProductID; - CharSequence content = HttpHelper.downloadViaHttp(uri, HttpHelper.ContentType.HTML); - - for (Pattern p : PRODUCT_NAME_PRICE_PATTERNS) { - Matcher matcher = p.matcher(content); - if (matcher.find()) { - append(productID, - source, - new String[] { unescapeHTML(matcher.group(1)), unescapeHTML(matcher.group(2)) }, - uri); - break; - } - } - } - - private static String unescapeHTML(String raw) { - return Html.fromHtml(raw).toString(); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/SupplementalInfoRetriever.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/SupplementalInfoRetriever.java deleted file mode 100755 index 8791be8891..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/SupplementalInfoRetriever.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result.supplement; - -import java.io.IOException; -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.Collection; -import java.util.concurrent.RejectedExecutionException; - -import android.content.Context; -import android.os.AsyncTask; -import android.text.Spannable; -import android.text.SpannableString; -import android.text.Spanned; -import android.text.method.LinkMovementMethod; -import android.text.style.URLSpan; -import android.util.Log; -import android.widget.TextView; - -import com.google.zxing.client.android.history.HistoryManager; -import com.google.zxing.client.result.ISBNParsedResult; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.ProductParsedResult; -import com.google.zxing.client.result.URIParsedResult; - -public abstract class SupplementalInfoRetriever extends AsyncTask { - - private static final String TAG = "SupplementalInfo"; - - public static void maybeInvokeRetrieval(TextView textView, - ParsedResult result, - HistoryManager historyManager, - Context context) { - try { - if (result instanceof URIParsedResult) { - SupplementalInfoRetriever uriRetriever = - new URIResultInfoRetriever(textView, (URIParsedResult) result, historyManager, context); - uriRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - SupplementalInfoRetriever titleRetriever = - new TitleRetriever(textView, (URIParsedResult) result, historyManager); - titleRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } else if (result instanceof ProductParsedResult) { - ProductParsedResult productParsedResult = (ProductParsedResult) result; - String productID = productParsedResult.getProductID(); - SupplementalInfoRetriever productRetriever = - new ProductResultInfoRetriever(textView, productID, historyManager, context); - productRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } else if (result instanceof ISBNParsedResult) { - String isbn = ((ISBNParsedResult) result).getISBN(); - SupplementalInfoRetriever productInfoRetriever = - new ProductResultInfoRetriever(textView, isbn, historyManager, context); - productInfoRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - SupplementalInfoRetriever bookInfoRetriever = - new BookResultInfoRetriever(textView, isbn, historyManager, context); - bookInfoRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - } catch (RejectedExecutionException ree) { - // do nothing - } - } - - private final WeakReference textViewRef; - private final WeakReference historyManagerRef; - private final Collection newContents; - private final Collection newHistories; - - SupplementalInfoRetriever(TextView textView, HistoryManager historyManager) { - textViewRef = new WeakReference<>(textView); - historyManagerRef = new WeakReference<>(historyManager); - newContents = new ArrayList<>(); - newHistories = new ArrayList<>(); - } - - @Override - public final Object doInBackground(Object... args) { - try { - retrieveSupplementalInfo(); - } catch (IOException e) { - Log.w(TAG, e); - } - return null; - } - - @Override - protected final void onPostExecute(Object arg) { - TextView textView = textViewRef.get(); - if (textView != null) { - for (CharSequence content : newContents) { - textView.append(content); - } - textView.setMovementMethod(LinkMovementMethod.getInstance()); - } - HistoryManager historyManager = historyManagerRef.get(); - if (historyManager != null) { - for (String[] text : newHistories) { - historyManager.addHistoryItemDetails(text[0], text[1]); - } - } - } - - abstract void retrieveSupplementalInfo() throws IOException; - - final void append(String itemID, String source, String[] newTexts, String linkURL) { - - StringBuilder newTextCombined = new StringBuilder(); - - if (source != null) { - newTextCombined.append(source).append(' '); - } - - int linkStart = newTextCombined.length(); - - boolean first = true; - for (String newText : newTexts) { - if (first) { - newTextCombined.append(newText); - first = false; - } else { - newTextCombined.append(" ["); - newTextCombined.append(newText); - newTextCombined.append(']'); - } - } - - int linkEnd = newTextCombined.length(); - - String newText = newTextCombined.toString(); - Spannable content = new SpannableString(newText + "\n\n"); - if (linkURL != null) { - // Strangely, some Android browsers don't seem to register to handle HTTP:// or HTTPS://. - // Lower-case these as it should always be OK to lower-case these schemes. - if (linkURL.startsWith("HTTP://")) { - linkURL = "http" + linkURL.substring(4); - } else if (linkURL.startsWith("HTTPS://")) { - linkURL = "https" + linkURL.substring(5); - } - content.setSpan(new URLSpan(linkURL), linkStart, linkEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - } - - newContents.add(content); - newHistories.add(new String[] {itemID, newText}); - } - - static void maybeAddText(String text, Collection texts) { - if (text != null && !text.isEmpty()) { - texts.add(text); - } - } - - static void maybeAddTextSeries(Collection textSeries, Collection texts) { - if (textSeries != null && !textSeries.isEmpty()) { - boolean first = true; - StringBuilder authorsText = new StringBuilder(); - for (String author : textSeries) { - if (first) { - first = false; - } else { - authorsText.append(", "); - } - authorsText.append(author); - } - texts.add(authorsText.toString()); - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/TitleRetriever.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/TitleRetriever.java deleted file mode 100755 index 7d0f7e233e..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/TitleRetriever.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result.supplement; - -import java.io.IOException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import android.text.Html; -import android.widget.TextView; - -import com.google.zxing.client.android.HttpHelper; -import com.google.zxing.client.android.history.HistoryManager; -import com.google.zxing.client.result.URIParsedResult; - -/** - * Retrieves the title of a web page as supplemental info. - * - * @author Sean Owen - */ -final class TitleRetriever extends SupplementalInfoRetriever { - - private static final Pattern TITLE_PATTERN = Pattern.compile("([^<]+)"); - private static final int MAX_TITLE_LEN = 100; - - private final String httpUrl; - - TitleRetriever(TextView textView, URIParsedResult result, HistoryManager historyManager) { - super(textView, historyManager); - this.httpUrl = result.getURI(); - } - - @Override - void retrieveSupplementalInfo() { - CharSequence contents; - try { - contents = HttpHelper.downloadViaHttp(httpUrl, HttpHelper.ContentType.HTML, 4096); - } catch (IOException ioe) { - // ignore this - return; - } - if (contents != null && contents.length() > 0) { - Matcher m = TITLE_PATTERN.matcher(contents); - if (m.find()) { - String title = m.group(1); - if (title != null && !title.isEmpty()) { - title = Html.fromHtml(title).toString(); - if (title.length() > MAX_TITLE_LEN) { - title = title.substring(0, MAX_TITLE_LEN) + "..."; - } - append(httpUrl, null, new String[] {title}, httpUrl); - } - } - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/URIResultInfoRetriever.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/URIResultInfoRetriever.java deleted file mode 100755 index bebf3bedad..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/result/supplement/URIResultInfoRetriever.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.result.supplement; - -import android.content.Context; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.google.zxing.client.android.HttpHelper; -import com.google.zxing.client.android.history.HistoryManager; -import com.google.zxing.client.result.URIParsedResult; - -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -final class URIResultInfoRetriever extends SupplementalInfoRetriever { - - private static final int MAX_REDIRECTS = 5; - - private final URIParsedResult result; - private final String redirectString; - - URIResultInfoRetriever(TextView textView, URIParsedResult result, HistoryManager historyManager, Context context) { - super(textView, historyManager); - redirectString = context.getString(R.string.msg_redirect); - this.result = result; - } - - @Override - void retrieveSupplementalInfo() throws IOException { - URI oldURI; - try { - oldURI = new URI(result.getURI()); - } catch (URISyntaxException ignored) { - return; - } - URI newURI = HttpHelper.unredirect(oldURI); - int count = 0; - while (count++ < MAX_REDIRECTS && !oldURI.equals(newURI)) { - append(result.getDisplayResult(), - null, - new String[] { redirectString + " : " + newURI }, - newURI.toString()); - oldURI = newURI; - newURI = HttpHelper.unredirect(newURI); - } - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/AppInfo.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/AppInfo.java deleted file mode 100755 index 94bde9b534..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/AppInfo.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2013 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.share; - -import android.graphics.drawable.Drawable; - -final class AppInfo implements Comparable<AppInfo> { - - private final String packageName; - private final String label; - private final Drawable icon; - - AppInfo(String packageName, String label, Drawable icon) { - this.packageName = packageName; - this.label = label; - this.icon = icon; - } - - String getPackageName() { - return packageName; - } - - Drawable getIcon() { - return icon; - } - - @Override - public String toString() { - return label; - } - - @Override - public int compareTo(AppInfo another) { - return label.compareTo(another.label); - } - - @Override - public int hashCode() { - return label.hashCode(); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof AppInfo)) { - return false; - } - AppInfo another = (AppInfo) other; - return label.equals(another.label); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/AppPickerActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/AppPickerActivity.java deleted file mode 100755 index 319fd63ec4..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/AppPickerActivity.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2009 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.share; - -import android.app.ListActivity; -import android.content.Intent; -import android.os.AsyncTask; -import android.view.View; -import android.widget.Adapter; -import android.widget.ListView; - -import java.util.List; - -public final class AppPickerActivity extends ListActivity { - - private AsyncTask<Object,Object,List<AppInfo>> backgroundTask; - - @Override - protected void onResume() { - super.onResume(); - backgroundTask = new LoadPackagesAsyncTask(this); - backgroundTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - - @Override - protected void onPause() { - AsyncTask<?,?,?> task = backgroundTask; - if (task != null) { - task.cancel(true); - backgroundTask = null; - } - super.onPause(); - } - - @Override - protected void onListItemClick(ListView l, View view, int position, long id) { - Adapter adapter = getListAdapter(); - if (position >= 0 && position < adapter.getCount()) { - String packageName = ((AppInfo) adapter.getItem(position)).getPackageName(); - Intent intent = new Intent(); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.putExtra("url", "market://details?id=" + packageName); - setResult(RESULT_OK, intent); - } else { - setResult(RESULT_CANCELED); - } - finish(); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookMarkColumns.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookMarkColumns.java deleted file mode 100755 index 0bcc262626..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookMarkColumns.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.google.zxing.client.android.share; - -import android.graphics.BitmapFactory; -import android.provider.BaseColumns; - -/** - * Created by shihan.zsh on 15/12/24. - */ -public class BookMarkColumns { - /** - * The URL of the bookmark or history item. - * <p>Type: TEXT (URL)</p> - */ - public static final String URL = "url"; - - /** - * The number of time the item has been visited. - * <p>Type: NUMBER</p> - */ - public static final String VISITS = "visits"; - - /** - * The date the item was last visited, in milliseconds since the epoch. - * <p>Type: NUMBER (date in milliseconds since January 1, 1970)</p> - */ - public static final String DATE = "date"; - - /** - * Flag indicating that an item is a bookmark. A value of 1 indicates a bookmark, a value - * of 0 indicates a history item. - * <p>Type: INTEGER (boolean)</p> - */ - public static final String BOOKMARK = "bookmark"; - - /** - * The user visible title of the bookmark or history item. - * <p>Type: TEXT</p> - */ - public static final String TITLE = "title"; - - /** - * The date the item created, in milliseconds since the epoch. - * <p>Type: NUMBER (date in milliseconds since January 1, 1970)</p> - */ - public static final String CREATED = "created"; - - /** - * The favicon of the bookmark. Must decode via {@link BitmapFactory#decodeByteArray}. - * <p>Type: BLOB (image)</p> - */ - public static final String FAVICON = "favicon"; - - /** - * @hide - */ - public static final String THUMBNAIL = "thumbnail"; - - /** - * @hide - */ - public static final String TOUCH_ICON = "touch_icon"; - - /** - * @hide - */ - public static final String USER_ENTERED = "user_entered"; - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookmarkAdapter.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookmarkAdapter.java deleted file mode 100755 index 020321aa32..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookmarkAdapter.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.share; - - -import android.content.Context; -import android.database.Cursor; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.alibaba.weex.R; - - -/** - * A custom adapter designed to fetch bookmarks from a cursor. Before Honeycomb we used - * SimpleCursorAdapter, but it assumes the existence of an _id column, and the bookmark schema was - * rewritten for HC without one. This caused the app to crash, hence this new class, which is - * forwards and backwards compatible. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -final class BookmarkAdapter extends BaseAdapter { - private final Context context; - private final Cursor cursor; - - BookmarkAdapter(Context context, Cursor cursor) { - this.context = context; - this.cursor = cursor; - } - - @Override - public int getCount() { - return cursor.isClosed() ? 0 : cursor.getCount(); - } - - @Override - public Object getItem(int index) { - // Not used, so no point in retrieving it. - return null; - } - - @Override - public long getItemId(int index) { - return index; - } - - @Override - public View getView(int index, View view, ViewGroup viewGroup) { - View layout; - if (view instanceof LinearLayout) { - layout = view; - } else { - LayoutInflater factory = LayoutInflater.from(context); - layout = factory.inflate(R.layout.bookmark_picker_list_item, viewGroup, false); - } - - if (!cursor.isClosed()) { - cursor.moveToPosition(index); - CharSequence title = cursor.getString(BookmarkPickerActivity.TITLE_COLUMN); - ((TextView) layout.findViewById(R.id.bookmark_title)).setText(title); - CharSequence url = cursor.getString(BookmarkPickerActivity.URL_COLUMN); - ((TextView) layout.findViewById(R.id.bookmark_url)).setText(url); - } // Otherwise... just don't update as the object is shutting down - return layout; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookmarkPickerActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookmarkPickerActivity.java deleted file mode 100755 index 0464f0a7e5..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/BookmarkPickerActivity.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.share; - -import android.app.ListActivity; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.util.Log; -import android.view.View; -import android.widget.ListView; - -/** - * This class is only needed because I can't successfully send an ACTION_PICK intent to - * com.android.browser.BrowserBookmarksPage. It can go away if that starts working in the future. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class BookmarkPickerActivity extends ListActivity { - - private static final String TAG = BookmarkPickerActivity.class.getSimpleName(); - public static final Uri BOOKMARKS_URI = Uri.parse("content://browser/bookmarks"); - - private static final String[] BOOKMARK_PROJECTION = { - BookMarkColumns.TITLE, - BookMarkColumns.URL - }; - - static final int TITLE_COLUMN = 0; - static final int URL_COLUMN = 1; - - private static final String BOOKMARK_SELECTION = - BookMarkColumns.BOOKMARK + " = 1 AND " + BookMarkColumns.URL + " IS NOT NULL"; - - private Cursor cursor; - - @Override - protected void onResume() { - super.onResume(); - cursor = getContentResolver().query(BOOKMARKS_URI, BOOKMARK_PROJECTION, - BOOKMARK_SELECTION, null, null); - -// cursor = getContentResolver().query("url", BOOKMARK_PROJECTION, -// BOOKMARK_SELECTION, null, null); - if (cursor == null) { - Log.w(TAG, "No cursor returned for bookmark query"); - finish(); - return; - } - setListAdapter(new BookmarkAdapter(this, cursor)); - } - - @Override - protected void onPause() { - if (cursor != null) { - cursor.close(); - cursor = null; - } - super.onPause(); - } - - @Override - protected void onListItemClick(ListView l, View view, int position, long id) { - if (!cursor.isClosed() && cursor.moveToPosition(position)) { - Intent intent = new Intent(); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.putExtra(BookMarkColumns.TITLE, cursor.getString(TITLE_COLUMN)); - intent.putExtra(BookMarkColumns.URL, cursor.getString(URL_COLUMN)); - setResult(RESULT_OK, intent); - } else { - setResult(RESULT_CANCELED); - } - finish(); - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/LoadPackagesAsyncTask.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/LoadPackagesAsyncTask.java deleted file mode 100755 index 550f46fb1e..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/LoadPackagesAsyncTask.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2009 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.share; - -import android.app.ListActivity; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageItemInfo; -import android.content.pm.PackageManager; -import android.graphics.drawable.Drawable; -import android.os.AsyncTask; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.ListAdapter; - -import com.alibaba.weex.R; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - - -/** - * Loads a list of packages installed on the device asynchronously. - * - * @author Sean Owen - */ -final class LoadPackagesAsyncTask extends AsyncTask<Object,Object,List<AppInfo>> { - - private static final String[] PKG_PREFIX_WHITELIST = { - "com.google.android.apps.", - }; - private static final String[] PKG_PREFIX_BLACKLIST = { - "com.android.", - "android", - "com.google.android.", - "com.htc", - }; - - private final ListActivity activity; - - LoadPackagesAsyncTask(ListActivity activity) { - this.activity = activity; - } - - @Override - protected List<AppInfo> doInBackground(Object... objects) { - List<AppInfo> labelsPackages = new ArrayList<>(); - PackageManager packageManager = activity.getPackageManager(); - Iterable<ApplicationInfo> appInfos = packageManager.getInstalledApplications(0); - for (PackageItemInfo appInfo : appInfos) { - String packageName = appInfo.packageName; - if (!isHidden(packageName)) { - CharSequence label = appInfo.loadLabel(packageManager); - Drawable icon = appInfo.loadIcon(packageManager); - if (label != null) { - labelsPackages.add(new AppInfo(packageName, label.toString(), icon)); - } - } - } - Collections.sort(labelsPackages); - return labelsPackages; - } - - private static boolean isHidden(String packageName) { - if (packageName == null) { - return true; - } - for (String prefix : PKG_PREFIX_WHITELIST) { - if (packageName.startsWith(prefix)) { - return false; - } - } - for (String prefix : PKG_PREFIX_BLACKLIST) { - if (packageName.startsWith(prefix)) { - return true; - } - } - return false; - } - - @Override - protected void onPostExecute(final List<AppInfo> results) { - ListAdapter listAdapter = new ArrayAdapter<AppInfo>(activity, - R.layout.app_picker_list_item, - R.id.app_picker_list_item_label, - results) { - @Override - public View getView(int position, View convertView, ViewGroup parent) { - View view = super.getView(position, convertView, parent); - Drawable icon = results.get(position).getIcon(); - if (icon != null) { - ((ImageView) view.findViewById(R.id.app_picker_list_item_icon)).setImageDrawable(icon); - } - return view; - } - }; - activity.setListAdapter(listAdapter); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/ShareActivity.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/ShareActivity.java deleted file mode 100755 index 25c8af48bc..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/share/ShareActivity.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.share; - -import android.app.Activity; -import android.content.ContentResolver; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.provider.BaseColumns; -import android.provider.ContactsContract; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.widget.TextView; - -import com.alibaba.weex.R; -import com.google.zxing.BarcodeFormat; -import com.google.zxing.client.android.Contents; -import com.google.zxing.client.android.Intents; -import com.google.zxing.client.android.clipboard.ClipboardInterface; - -/** - * Barcode Scanner can share data like contacts and bookmarks by displaying a QR Code on screen, - * such that another user can scan the barcode with their phone. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class ShareActivity extends Activity { - - private static final String TAG = ShareActivity.class.getSimpleName(); - - private static final int PICK_BOOKMARK = 0; - private static final int PICK_CONTACT = 1; - private static final int PICK_APP = 2; - - private View clipboardButton; - - private final View.OnClickListener contactListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - startActivityForResult(intent, PICK_CONTACT); - } - }; - - private final View.OnClickListener bookmarkListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(Intent.ACTION_PICK); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.setClassName(ShareActivity.this, BookmarkPickerActivity.class.getName()); - startActivityForResult(intent, PICK_BOOKMARK); - } - }; - - private final View.OnClickListener appListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(Intent.ACTION_PICK); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.setClassName(ShareActivity.this, AppPickerActivity.class.getName()); - startActivityForResult(intent, PICK_APP); - } - }; - - private final View.OnClickListener clipboardListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - // Should always be true, because we grey out the clipboard button in onResume() if it's empty - CharSequence text = ClipboardInterface.getText(ShareActivity.this); - if (text != null) { - launchSearch(text.toString()); - } - } - }; - - private final View.OnKeyListener textListener = new View.OnKeyListener() { - @Override - public boolean onKey(View view, int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) { - String text = ((TextView) view).getText().toString(); - if (text != null && !text.isEmpty()) { - launchSearch(text); - } - return true; - } - return false; - } - }; - - private void launchSearch(String text) { - Intent intent = new Intent(Intents.Encode.ACTION); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.putExtra(Intents.Encode.TYPE, Contents.Type.TEXT); - intent.putExtra(Intents.Encode.DATA, text); - intent.putExtra(Intents.Encode.FORMAT, BarcodeFormat.QR_CODE.toString()); - startActivity(intent); - } - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - setContentView(R.layout.share); - - findViewById(R.id.share_contact_button).setOnClickListener(contactListener); - findViewById(R.id.share_bookmark_button).setOnClickListener(bookmarkListener); - findViewById(R.id.share_app_button).setOnClickListener(appListener); - clipboardButton = findViewById(R.id.share_clipboard_button); - clipboardButton.setOnClickListener(clipboardListener); - findViewById(R.id.share_text_view).setOnKeyListener(textListener); - } - - @Override - protected void onResume() { - super.onResume(); - clipboardButton.setEnabled(ClipboardInterface.hasText(this)); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent intent) { - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PICK_BOOKMARK: - case PICK_APP: - showTextAsBarcode(intent.getStringExtra(BookMarkColumns.URL)); - break; - case PICK_CONTACT: - // Data field is content://contacts/people/984 - showContactAsBarcode(intent.getData()); - break; - } - } - } - - private void showTextAsBarcode(String text) { - Log.i(TAG, "Showing text as barcode: " + text); - if (text == null) { - return; // Show error? - } - Intent intent = new Intent(Intents.Encode.ACTION); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.putExtra(Intents.Encode.TYPE, Contents.Type.TEXT); - intent.putExtra(Intents.Encode.DATA, text); - intent.putExtra(Intents.Encode.FORMAT, BarcodeFormat.QR_CODE.toString()); - startActivity(intent); - } - - /** - * Takes a contact Uri and does the necessary database lookups to retrieve that person's info, - * then sends an Encode intent to render it as a QR Code. - * - * @param contactUri A Uri of the form content://contacts/people/17 - */ - private void showContactAsBarcode(Uri contactUri) { - Log.i(TAG, "Showing contact URI as barcode: " + contactUri); - if (contactUri == null) { - return; // Show error? - } - ContentResolver resolver = getContentResolver(); - - Cursor cursor; - try { - // We're seeing about six reports a week of this exception although I don't understand why. - cursor = resolver.query(contactUri, null, null, null, null); - } catch (IllegalArgumentException ignored) { - return; - } - if (cursor == null) { - return; - } - - String id; - String name; - boolean hasPhone; - try { - if (!cursor.moveToFirst()) { - return; - } - - id = cursor.getString(cursor.getColumnIndex(BaseColumns._ID)); - name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); - hasPhone = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0; - - - } finally { - cursor.close(); - } - - // Don't require a name to be present, this contact might be just a phone number. - Bundle bundle = new Bundle(); - if (name != null && !name.isEmpty()) { - bundle.putString(ContactsContract.Intents.Insert.NAME, massageContactData(name)); - } - - if (hasPhone) { - Cursor phonesCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, - null, - ContactsContract.CommonDataKinds.Phone.CONTACT_ID + '=' + id, - null, - null); - if (phonesCursor != null) { - try { - int foundPhone = 0; - int phonesNumberColumn = phonesCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); - int phoneTypeColumn = phonesCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); - while (phonesCursor.moveToNext() && foundPhone < Contents.PHONE_KEYS.length) { - String number = phonesCursor.getString(phonesNumberColumn); - if (number != null && !number.isEmpty()) { - bundle.putString(Contents.PHONE_KEYS[foundPhone], massageContactData(number)); - } - int type = phonesCursor.getInt(phoneTypeColumn); - bundle.putInt(Contents.PHONE_TYPE_KEYS[foundPhone], type); - foundPhone++; - } - } finally { - phonesCursor.close(); - } - } - } - - Cursor methodsCursor = resolver.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI, - null, - ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + '=' + id, - null, - null); - if (methodsCursor != null) { - try { - if (methodsCursor.moveToNext()) { - String data = methodsCursor.getString( - methodsCursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS)); - if (data != null && !data.isEmpty()) { - bundle.putString(ContactsContract.Intents.Insert.POSTAL, massageContactData(data)); - } - } - } finally { - methodsCursor.close(); - } - } - - Cursor emailCursor = resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, - null, - ContactsContract.CommonDataKinds.Email.CONTACT_ID + '=' + id, - null, - null); - if (emailCursor != null) { - try { - int foundEmail = 0; - int emailColumn = emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA); - while (emailCursor.moveToNext() && foundEmail < Contents.EMAIL_KEYS.length) { - String email = emailCursor.getString(emailColumn); - if (email != null && !email.isEmpty()) { - bundle.putString(Contents.EMAIL_KEYS[foundEmail], massageContactData(email)); - } - foundEmail++; - } - } finally { - emailCursor.close(); - } - } - - Intent intent = new Intent(Intents.Encode.ACTION); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - intent.putExtra(Intents.Encode.TYPE, Contents.Type.CONTACT); - intent.putExtra(Intents.Encode.DATA, bundle); - intent.putExtra(Intents.Encode.FORMAT, BarcodeFormat.QR_CODE.toString()); - - Log.i(TAG, "Sending bundle for encoding: " + bundle); - startActivity(intent); - } - - private static String massageContactData(String data) { - // For now -- make sure we don't put newlines in shared contact data. It messes up - // any known encoding of contact data. Replace with space. - if (data.indexOf('\n') >= 0) { - data = data.replace("\n", " "); - } - if (data.indexOf('\r') >= 0) { - data = data.replace("\r", " "); - } - return data; - } -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/wifi/NetworkType.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/wifi/NetworkType.java deleted file mode 100755 index 809e3c6c3d..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/wifi/NetworkType.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.wifi; - -enum NetworkType { - - WEP, - WPA, - NO_PASSWORD; - - static NetworkType forIntentValue(String networkTypeString) { - if (networkTypeString == null) { - return NO_PASSWORD; - } - if ("WPA".equals(networkTypeString)) { - return WPA; - } - if ("WEP".equals(networkTypeString)) { - return WEP; - } - if ("nopass".equals(networkTypeString)) { - return NO_PASSWORD; - } - throw new IllegalArgumentException(networkTypeString); - } - -} diff --git a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/wifi/WifiConfigManager.java b/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/wifi/WifiConfigManager.java deleted file mode 100755 index 5bde1f0e7b..0000000000 --- a/android/playground/app/src/main/java_zxing/com/google/zxing/client/android/wifi/WifiConfigManager.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.client.android.wifi; - -import java.util.regex.Pattern; - -import android.net.wifi.WifiConfiguration; -import android.net.wifi.WifiManager; -import android.os.AsyncTask; -import android.util.Log; - -import com.google.zxing.client.result.WifiParsedResult; - -/** - * @author Vikram Aggarwal - * @author Sean Owen - */ -public final class WifiConfigManager extends AsyncTask<WifiParsedResult,Object,Object> { - - private static final String TAG = WifiConfigManager.class.getSimpleName(); - - private static final Pattern HEX_DIGITS = Pattern.compile("[0-9A-Fa-f]+"); - - private final WifiManager wifiManager; - - public WifiConfigManager(WifiManager wifiManager) { - this.wifiManager = wifiManager; - } - - @Override - protected Object doInBackground(WifiParsedResult... args) { - WifiParsedResult theWifiResult = args[0]; - // Start WiFi, otherwise nothing will work - if (!wifiManager.isWifiEnabled()) { - Log.i(TAG, "Enabling wi-fi..."); - if (wifiManager.setWifiEnabled(true)) { - Log.i(TAG, "Wi-fi enabled"); - } else { - Log.w(TAG, "Wi-fi could not be enabled!"); - return null; - } - // This happens very quickly, but need to wait for it to enable. A little busy wait? - int count = 0; - while (!wifiManager.isWifiEnabled()) { - if (count >= 10) { - Log.i(TAG, "Took too long to enable wi-fi, quitting"); - return null; - } - Log.i(TAG, "Still waiting for wi-fi to enable..."); - try { - Thread.sleep(1000L); - } catch (InterruptedException ie) { - // continue - } - count++; - } - } - String networkTypeString = theWifiResult.getNetworkEncryption(); - NetworkType networkType; - try { - networkType = NetworkType.forIntentValue(networkTypeString); - } catch (IllegalArgumentException ignored) { - Log.w(TAG, "Bad network type; see NetworkType values: " + networkTypeString); - return null; - } - if (networkType == NetworkType.NO_PASSWORD) { - changeNetworkUnEncrypted(wifiManager, theWifiResult); - } else { - String password = theWifiResult.getPassword(); - if (password != null && !password.isEmpty()) { - if (networkType == NetworkType.WEP) { - changeNetworkWEP(wifiManager, theWifiResult); - } else if (networkType == NetworkType.WPA) { - changeNetworkWPA(wifiManager, theWifiResult); - } - } - } - return null; - } - - /** - * Update the network: either create a new network or modify an existing network - * @param config the new network configuration - */ - private static void updateNetwork(WifiManager wifiManager, WifiConfiguration config) { - Integer foundNetworkID = findNetworkInExistingConfig(wifiManager, config.SSID); - if (foundNetworkID != null) { - Log.i(TAG, "Removing old configuration for network " + config.SSID); - wifiManager.removeNetwork(foundNetworkID); - wifiManager.saveConfiguration(); - } - int networkId = wifiManager.addNetwork(config); - if (networkId >= 0) { - // Try to disable the current network and start a new one. - if (wifiManager.enableNetwork(networkId, true)) { - Log.i(TAG, "Associating to network " + config.SSID); - wifiManager.saveConfiguration(); - } else { - Log.w(TAG, "Failed to enable network " + config.SSID); - } - } else { - Log.w(TAG, "Unable to add network " + config.SSID); - } - } - - private static WifiConfiguration changeNetworkCommon(WifiParsedResult wifiResult) { - WifiConfiguration config = new WifiConfiguration(); - config.allowedAuthAlgorithms.clear(); - config.allowedGroupCiphers.clear(); - config.allowedKeyManagement.clear(); - config.allowedPairwiseCiphers.clear(); - config.allowedProtocols.clear(); - // Android API insists that an ascii SSID must be quoted to be correctly handled. - config.SSID = quoteNonHex(wifiResult.getSsid()); - config.hiddenSSID = wifiResult.isHidden(); - return config; - } - - // Adding a WEP network - private static void changeNetworkWEP(WifiManager wifiManager, WifiParsedResult wifiResult) { - WifiConfiguration config = changeNetworkCommon(wifiResult); - config.wepKeys[0] = quoteNonHex(wifiResult.getPassword(), 10, 26, 58); - config.wepTxKeyIndex = 0; - config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); - config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); - config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); - config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); - config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); - config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); - updateNetwork(wifiManager, config); - } - - // Adding a WPA or WPA2 network - private static void changeNetworkWPA(WifiManager wifiManager, WifiParsedResult wifiResult) { - WifiConfiguration config = changeNetworkCommon(wifiResult); - // Hex passwords that are 64 bits long are not to be quoted. - config.preSharedKey = quoteNonHex(wifiResult.getPassword(), 64); - config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); - config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); // For WPA - config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); // For WPA2 - config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); - config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); - config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); - config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); - config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); - config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); - updateNetwork(wifiManager, config); - } - - // Adding an open, unsecured network - private static void changeNetworkUnEncrypted(WifiManager wifiManager, WifiParsedResult wifiResult) { - WifiConfiguration config = changeNetworkCommon(wifiResult); - config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); - updateNetwork(wifiManager, config); - } - - private static Integer findNetworkInExistingConfig(WifiManager wifiManager, String ssid) { - Iterable<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks(); - if (existingConfigs != null) { - for (WifiConfiguration existingConfig : existingConfigs) { - String existingSSID = existingConfig.SSID; - if (existingSSID != null && existingSSID.equals(ssid)) { - return existingConfig.networkId; - } - } - } - return null; - } - - private static String quoteNonHex(String value, int... allowedLengths) { - return isHexOfLength(value, allowedLengths) ? value : convertToQuotedString(value); - } - - /** - * Encloses the incoming string inside double quotes, if it isn't already quoted. - * @param s the input string - * @return a quoted string, of the form "input". If the input string is null, it returns null - * as well. - */ - private static String convertToQuotedString(String s) { - if (s == null || s.isEmpty()) { - return null; - } - // If already quoted, return as-is - if (s.charAt(0) == '"' && s.charAt(s.length() - 1) == '"') { - return s; - } - return '\"' + s + '\"'; - } - - /** - * @param value input to check - * @param allowedLengths allowed lengths, if any - * @return true if value is a non-null, non-empty string of hex digits, and if allowed lengths are given, has - * an allowed length - */ - private static boolean isHexOfLength(CharSequence value, int... allowedLengths) { - if (value == null || !HEX_DIGITS.matcher(value).matches()) { - return false; - } - if (allowedLengths.length == 0) { - return true; - } - for (int length : allowedLengths) { - if (value.length() == length) { - return true; - } - } - return false; - } - -} diff --git a/android/playground/app/src/main/res/drawable-hdpi/ic_action_refresh.png b/android/playground/app/src/main/res/drawable-hdpi/ic_action_refresh.png deleted file mode 100755 index dae27903e9ba3415808d48e6ac20afd6de64907b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!IY~r8RCwC#SUpa|FcglftT_N2pgn-u zTXxD`4p4T&PP;?*^Z@M+-D!7nfgFGyAnfHCJ&<KN$+P2_M)D^;S#libdwD<hdr=e+ z5D?%Br_*WJYw{rPrth&1h$Ju!Q4;A<2~se|@`^v7;rd%x^XXLqBz*%iMdD4^gB*b9 zn?hdTUZ-Ry3Lx<rN@B5vu*w(6g*4|!0U*y|SSTNNffrC<OI;jWk{7P>RI}s=BK%nX zlUx%QIv80pc1(T;vVlKX)Vx1|;n|hBVn^gfP_BsCW76<^*ogv|EgstVEbOtsZ1pcL zlxj9#id5*3d^awHe#@2VtpWK|BL5rURme>gU_=6$qQDWzPtV~B!U*IqVR%)hjSibG zF(9lNt2zE$$Ws;Inv@y!NrBNhD?o{X4`u2aT&VO^Bm7vu&Si}ifX%KvRAn3LHwRJA zK{?2bDkKL`Py3=(5PK%CyUdksvyg9$oLazhXCl!YoOz!tFw=B0`k{c-AdqorI&+xC zhq8*yp{t}GfxzBiUv8QKZHjtMT(>kJzo@7;8Z)4c1vZ4bl~k#r+oYOGO%y$Mlq-vk z1)4V963KHUugm)>^}ZE5j>X2Tf#vC}#uZm}Z5bCXG>2hMSei>CC&W*QLGQjMwp73b zImV6gwZ%mY6qrVBdZZ#)*VOKYD+>rW$RzTjz%Q|DH%2!}2ywEbrrE9(_#<CYlq8DJ x3(}=YfOb|fiL(H6ct3%?qJV&afcE$nU;rVV?-8aSl8yiX002ovPDHLkV1hWgAn^bI diff --git a/android/playground/app/src/main/res/drawable-hdpi/ic_action_scan.png b/android/playground/app/src/main/res/drawable-hdpi/ic_action_scan.png deleted file mode 100755 index cb0ede8e6176ab22e3e8e6cc9a614c11739e08b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUt@18D>Ar-gYMr`CgWFX)(C8t4I zQEG;2@&*^F<qHd^GHw#9Q2*R7*U4lclrP+F{nG3H)12pjf30Ey>TRfZ;8>{m&BeRK z-$KY-u-EqEm!!SIx!*E^YW}$F5%?=Dr)*`m>0bBoB~nght*z&eSU%)D^XOpQ-n53_ z=QcXd{V?kqkQWwwqjSaS59?o6D>5)C99ZkJ>BS7ihJE7K%j=dTmByVs-7($q|K@3G z>s0ePcb`c)AEtaj;cw@8pKme(3w~&`=qwRRt&TadSa?0(T9#dbEDjA{Sv2a_e0rI1 z+NFeVzf{gt+o&22LFspO)l8XfyMfMT*boxKm~-s4^G}{*PeFW7S3j3^P6<r_*Peex diff --git a/android/playground/app/src/main/res/drawable-mdpi/ic_action_refresh.png b/android/playground/app/src/main/res/drawable-mdpi/ic_action_refresh.png deleted file mode 100755 index 94ab6f4c5dd8f3a082b2a84d6e08f2564a589d94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508 zcmV<Y0R#StP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzo=HSORCwC#SJ82UFboY%ei?uazyd75 z0Ca#Z&<@Z60{>-z^uNgfEYJ?X0v;e4!2PF!d%e@SmQ!PVe6+gr*@umuEKASwcC)f< z|GWWrF_jO)uwTspfWO^ZxARn*Qddzc&{8(7&^q)l<2?OSBuUZ-8$gO4se3R$x#Vc0 zf!eXo&j9TD2<2QfcDex=pHGFcp8*2+=+0Nutyp`amRUUWKGy>W20re%Az(?_vju$q z5zvlG>PiOwMBqwTTjT6);!MTFVL-=r)DrmFaZI@g;K%^c1Ee%(;8zJ802*<zC=-@! zd|HEw&8UwiQV^!h#VU}J?^%Ghras94wcsW*(6*J7c0ypa3mULr?K*}OF3-lU2MU(X z3MuP-85NF9`6Q*C<M*14&vUQiqwsyAXNTdnL1tZWL1Kd2QWVsDFvzS9DM*xs>px6z zlwg&mXlX(#B5nCr5nu)5G*ZoW6*o6x#QO-Y29R_M_BPg=Ye0`&o~~q2>vvI_8SAE^ yG?c!76r+gfb>ugXi>NOna_8m$aT-&;1Q-A|?2p+^qB;uz0000<MNUMnLSTZ&JK)~{ diff --git a/android/playground/app/src/main/res/drawable-mdpi/ic_action_scan.png b/android/playground/app/src/main/res/drawable-mdpi/ic_action_scan.png deleted file mode 100755 index c577af037ca2dec4eb18ee38e4af3e4649e1fde4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJHcuDFkcwN$2@<S}6GR>`{Qv(y zo#|18!aSxU#uE!<`MwHfyh?NW+H@vC={Tc8@A8HUMOMBD4pZf6GVBd8`zLTIauyvC zDKcrQb!26qkbZ6jvqL9uc#||ov0I#C3eS<t8=qts8J^I2yzp^Dpn=AwhZ&w05;6u4 ou6}GV_h8%RX~yMtu!E5y{qtXqX%<o?Ko>E1y85}Sb4q9e0GLNX!vFvP diff --git a/android/playground/app/src/main/res/drawable-v21/ic_menu_camera.xml b/android/playground/app/src/main/res/drawable-v21/ic_menu_camera.xml deleted file mode 100755 index 344860ae47..0000000000 --- a/android/playground/app/src/main/res/drawable-v21/ic_menu_camera.xml +++ /dev/null @@ -1,30 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.0"> - <path - android:fillColor="#FF000000" - android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0"/> - <path - android:fillColor="#FF000000" - android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z"/> -</vector> diff --git a/android/playground/app/src/main/res/drawable-v21/ic_menu_gallery.xml b/android/playground/app/src/main/res/drawable-v21/ic_menu_gallery.xml deleted file mode 100755 index 788b59b360..0000000000 --- a/android/playground/app/src/main/res/drawable-v21/ic_menu_gallery.xml +++ /dev/null @@ -1,27 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.0"> - <path - android:fillColor="#FF000000" - android:pathData="M22,16V4c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zm-11,-4l2.03,2.71L16,11l4,5H8l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2H4V6H2z"/> -</vector> diff --git a/android/playground/app/src/main/res/drawable-v21/ic_menu_manage.xml b/android/playground/app/src/main/res/drawable-v21/ic_menu_manage.xml deleted file mode 100755 index 1bb2478612..0000000000 --- a/android/playground/app/src/main/res/drawable-v21/ic_menu_manage.xml +++ /dev/null @@ -1,27 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.0"> - <path - android:fillColor="#FF000000" - android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z"/> -</vector> \ No newline at end of file diff --git a/android/playground/app/src/main/res/drawable-v21/ic_menu_send.xml b/android/playground/app/src/main/res/drawable-v21/ic_menu_send.xml deleted file mode 100755 index 9094dfa911..0000000000 --- a/android/playground/app/src/main/res/drawable-v21/ic_menu_send.xml +++ /dev/null @@ -1,27 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.0"> - <path - android:fillColor="#FF000000" - android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z"/> -</vector> diff --git a/android/playground/app/src/main/res/drawable-v21/ic_menu_share.xml b/android/playground/app/src/main/res/drawable-v21/ic_menu_share.xml deleted file mode 100755 index c198eb0a1d..0000000000 --- a/android/playground/app/src/main/res/drawable-v21/ic_menu_share.xml +++ /dev/null @@ -1,27 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.0"> - <path - android:fillColor="#FF000000" - android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z"/> -</vector> diff --git a/android/playground/app/src/main/res/drawable-v21/ic_menu_slideshow.xml b/android/playground/app/src/main/res/drawable-v21/ic_menu_slideshow.xml deleted file mode 100755 index bc8c64c8e4..0000000000 --- a/android/playground/app/src/main/res/drawable-v21/ic_menu_slideshow.xml +++ /dev/null @@ -1,27 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.0"> - <path - android:fillColor="#FF000000" - android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6zm16,-4H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zm-8,12.5v-9l6,4.5 -6,4.5z"/> -</vector> diff --git a/android/playground/app/src/main/res/drawable-xhdpi/ic_action_refresh.png b/android/playground/app/src/main/res/drawable-xhdpi/ic_action_refresh.png deleted file mode 100755 index ab4ab9da697b8c68c0c7ba498dc3bb3dc3da9c2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmV-_1AzRAP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#AxT6*RCwC#TkmnJFbsEkd}V+zK;8fh z&<>CckPh%V0R3M2y&0fcAOnyAGC(sxGXNQY0rI3fagVyT<9`H*tvelU4-CJbC0VlE z2Nt+IL;@lKk$^}*Bp?znO}ShyPr=R{fM0=r1!(~QJcrAhkFk;)esl(xN6<f@bI=87 z+PS3xJ%OG<zd?_)+3X}32cP@s{w}(26a>J>A;2~0ia@Ib@6GAwB|VR1RG@nRSrhnA zj=0q28)rQNFIpg;WKR~v1AYN=j-#;v0FN{N*L7wDA|n&6W_SW<);~ICJPAoWfk)rm zX!tp!Acr$nQ_yS3T5ybvt_y?Lr-Kq82~4~o$Xy%EB=;P+6=O-RbWIk65kO|I0^b7P z0q{mUGXIbGqjv!ncr@=<#f+<nE#ab@=4OLrg7A@r!u-(GpB=!PET8k66F}y<R)8-p z$2A2%ST$J40+|E&wJms;c#&AVESIeHxV*hP1XI+lB$mhmXyZ}`*aktF>2FLTJs0&G z3HWij0IkoW=!})yA%q>FN6FuJQ{7lGB|zx=Q=NTZ1WXpZ5dob@{mcJ@AV87z)l(+G zxf*m`hdq|#Dd(a`ot>hD-G>x{__Wn=&)_>lCKhleR?j2!`>b~YsI=XVbRy@H31fHf z0*Xqo4uSwC--SMfLcmG{UbixxdV4&RBxu^%>C`PiwryVBJpr^cwUkt++SzI1=|e<y zgKWDz?U?P>rm@*+zKX<XsrHcye_B4bcj)TMw&Zd4E0ckIxWL&Gd}(QMC6n(S8;|LO zfO;h0tt{%+)u2`1fR?+rD@o60ko^F9d9HciyCLxQh|QX*8?dGAmb?!F8Ut5Bq7It* z{ff-}THF0)w1=cPc|rwnZKfvb_~ciXP(Jt;Lv)6$(@qX(?)c7ETeBZB2>Nh0OrE?o zV)}{!ZLjZ{Iri^6;~Aec(Gf4_1i3T2KLQgSXkIe?6CeD_(H@j+`Y@?J2#_9J?6lTZ zfvydZ$G$-KQJGap0-oTWT2<*Q2-XywDi)&L>PTCZ9wh$HP$VD{5DAC`ge?CA7yzOq VDq)Usy-@%F002ovPDHLkV1gKjk--1} diff --git a/android/playground/app/src/main/res/drawable-xhdpi/ic_action_scan.png b/android/playground/app/src/main/res/drawable-xhdpi/ic_action_scan.png deleted file mode 100755 index 6c333a9303845cc1eb98e97fb2972d79975ede25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV3hZCaSW-r^>&scUz34=tE!85 z3{ym*==M7cwBH?Udi=oDWTN#$lbLEqT7xD}o3(HHpSNE=XR3!hFJS_j!NBk#A@+LE zmCmY*9~|96s;}5~uZz#J`ub{N&)*MIGem4%PV=3W+xqsfefhQ6E6rbnj@Eo$+<x!^ zqeX9ESyP_n_h;`Hy*!|7u#$bd@Gc3)FSD<#ZG3dVE@TD!^X2^;Uu=jh@K_*u{Hrqq zivtMFWKS^Tp2fn{@%nh()tmm&p>rJ=&K~nWY%0p&WbUx}^Qx*Ap9^j)=9YQJ7&8{I zFfbVHtm$YED+%5j)Be-3g@L01j1-<U-TZI+?{tI9<G}xuel@t<Q#Q&ny05r$``iuX kK6+OKEz*4Wz`px8Ph4onQ6W#!5BEWQPgg&ebxsLQ06UA2*#H0l diff --git a/android/playground/app/src/main/res/drawable-xxhdpi/ic_action_refresh.png b/android/playground/app/src/main/res/drawable-xxhdpi/ic_action_refresh.png deleted file mode 100755 index 44ee117ee91541ed71f27685dde0b03b51b89f7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1239 zcmV;|1StE7P)<h;3K|Lk000e1NJLTq003YB003YJ1^@s6;+S_h0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$c}YY;RCwC#T|su*Fc1}a-g1EC09=6V zOZTCBa{xF1*#rA<fN+3hU)YE2;|urzZ~zXFYFhc#O~H~ajbxes-_wHzQd|GejAmp> z5dr`J0000000000003wMK0iOlU?Cj&OWC$yA{_Z2)WC*+^3#HR9|H6uA>~fK3{<1{ zx9TJMcVE5FWjmGLALzB$>t!`#{^HAzC-VQuuTB6-#z?*lWgC?UZweA&FWb8$^H76) z!mN&nQ463fJ(caDWZAAk*8D0--5QX89Reugr;2!Apm6o7yyK}t@QoB;(@6m&@zm+L zXX5LERe&ULj9)N@8dqSwza)^=FVx@~0|uQDK$1_LS#ozOCiFa$|7_vXxk@E}=lGX$ zb9tSisuhN+*`}~Zd988O0$7lrt4w7tNjO<#STx9wn~EW?eIKm=4av_`_K`WdhrYUp zLE8jKT1Gxu{F<TgncIvz<VBY%=+=6GvbvWVZqJf$)6AxWI)kkm=JbGtA^8;BA2~Yc zh<sMuFj;?UnCBn4tjjU^Y-w}C&~XYqQ$zA6O|u)#J&YY&em^D;m>b+Mkv?Z6e-TR| zcH_A714GMu<ao%zNd7RE5M&a1HcT<UD7dmS-j-`p-%Fl&;(QwBG!0b*{M6<7vO^OA zu!JBJ>tBO%J^{XIKHqUZ+Pi82)Wa2B=Cc9ad>)`Hx-zc06bN9JrtLsAQx;^H{e0&r zy5Iq3)}MiVUIBD7p2&PcdjM$mQwLna5j0<hi@Bh?%2B?f>8F}_ENY*|b4D(*pbw1z z_Z=a7T`}HKqA_b@2<l4sISTvrMZv~^E`aTcSi)p2U5op-Z5Cj{{m>$k5EUi_T?zSj zn$Hix1h^9DLeL2U@IqJZH;w{5aBE-d2#eWXcz~Y#k!}FCneBxDdguhOnrwss)z(i1 zm~Nrj9s=+oHTVuZfYJJO0_<#`_CbKlpoM0-IUwuvgph`ww|<&_elf^?tanc)9y;^2 zh#6E^R$o+ahWO`r8jf|QD)cN3zUpM5nU7tPZ^Hd_E>)g0ru_v=gUrX--eDhOfa}S+ z6C?SlFx%g-bal<x24PO}$)e{5U){T0WbEUth@)fjb0*858{Wgp<+XhXaA+&}4bCfC zx%R$9#DPZ!^6Q@5LdTr#U3bif0Jg-fT*lneHrlktuTk7*+1=wq02`NGmk-x-G_{b{ zOp9~Zao=|xK!w<|g?R7E0{0ECKN5eYlph*;?~HSGx3BYpJ{)-x5t510*3u$8l`8Jy zVAtZnrl!~_4`f|hACmw+@yZqRLkYk!9l<qTtvIrs(3NluYln#RA3n*CsSe<-)R&?5 zFee^6S($05Ol2w<*I}Nyr;V#Lx9wxVRGdG`;J-9arHv1Q?_gKTZnkaNwI5P|${br2 zP9tG|{^wErJ-)tmJ2rg@Ktw)$$u??DuBrXVx24>ESWzp8qF%rjSyd#J{w&Cwng{~| z2mtZ}3D5`m;YApM1poj50000000000fS~v#zyO={=$CR|bEp6S002ovPDHLkV1lVS BMRNcE diff --git a/android/playground/app/src/main/res/drawable-xxhdpi/ic_action_scan.png b/android/playground/app/src/main/res/drawable-xxhdpi/ic_action_scan.png deleted file mode 100755 index f50662975f8f9b7f80a742fac10f144a13af96cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U=sFpaSW-r^>&V77L%h$o2qY6 zhiB&QGBM4t)q9&Y;u87=n!-J~wEYEhn<pH5F!zjfMPuqF#!~k0XWx83$Zz)O|Fijb zBh!vwf6WLq6AliD&hcArebHe`XVJwkKE5u>-~Temy>orcUAKEx%wB${ik)8{e0N=% zp?s^0Z_(qKzplMM!^HEi`^D#``|DmUurrJDwx4!TzU!LRgyU?#GF~L#N%-(ut#x&# z#NjjX>{_>i81_fa-YfKFUOd~3pJ929|0}h9*KzKO$hA3KebFn#We11&tJ?QhpJd5I z@F-lK8Ev||>mBE#_n~_~WfhsGiJg6B>Tm7J)PLFa?B&3`i!Zi3n`h~(&|vXOiJ?b` zfiYnU0|&!m76%3iRR*RVdoOlw7k*{uFT|nHx2uG`_;qenuMo$9t6NuJ*=ig){hiFY zJKZ8zb)L-)Sii1v>AFg;Qcy^!G}uhD?V7jVrdD8a%v%32w)?W~mBO{Gb}Xrp>#miX zf7D^wz*8Wh?Y48)bf8Ulnj%_u@8Mtu>MW_V*Ekto9(8?D(Dg&F;-@^SsGOS>E90Gc zUxR(KffoZyLm-m^k~{BmHKfVvN-vG|J)Nd&mQ(d2=<u=$x~K0<dv9~#!Tz#ksWZiV zFWWIIUf6c&#MBE*3RkyA2h8b>-fOz>?X{!6Vh<~##X;7>!HkFOEA8wr_*(0o0Ev0J L`njxgN@xNA(Ps1f diff --git a/android/playground/app/src/main/res/drawable/side_nav_bar.xml b/android/playground/app/src/main/res/drawable/side_nav_bar.xml deleted file mode 100755 index 41946f937f..0000000000 --- a/android/playground/app/src/main/res/drawable/side_nav_bar.xml +++ /dev/null @@ -1,27 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="rectangle"> - <gradient - android:angle="135" - android:centerColor="#4CAF50" - android:endColor="#2E7D32" - android:startColor="#81C784" - android:type="linear"/> -</shape> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/activity_index.xml b/android/playground/app/src/main/res/layout/activity_index.xml deleted file mode 100755 index 6d2ee7f7ce..0000000000 --- a/android/playground/app/src/main/res/layout/activity_index.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<android.support.design.widget.CoordinatorLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true" - tools:context=".IndexActivity"> - - <android.support.design.widget.AppBarLayout - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:theme="@style/AppTheme.AppBarOverlay"> - - <android.support.v7.widget.Toolbar - android:id="@+id/toolbar" - android:title="@string/app_name" - android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" - android:background="?attr/colorPrimary" - app:popupTheme="@style/AppTheme.PopupOverlay"/> - - </android.support.design.widget.AppBarLayout> - - <include layout="@layout/content_wx_main"/> - -</android.support.design.widget.CoordinatorLayout> diff --git a/android/playground/app/src/main/res/layout/activity_slice_test.xml b/android/playground/app/src/main/res/layout/activity_slice_test.xml deleted file mode 100644 index dac9404938..0000000000 --- a/android/playground/app/src/main/res/layout/activity_slice_test.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context=".SliceTestActivity"> - - <Button - android:id="@+id/button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:onClick="addCellClick" - android:text="ADD CELL"/> - - <TextView - android:id="@+id/report_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignTop="@+id/button" - android:layout_alignBottom="@+id/button" - android:layout_alignParentRight="true" - android:layout_alignParentTop="true" - android:gravity="center_vertical" - tools:text="create: 12ms, avg: 10ms refresh: 12ms, avg: 10ms"/> - - <android.support.v7.widget.RecyclerView - android:id="@+id/recycler_view" - android:layout_width="match_parent" - android:layout_height="210dp" - android:layout_below="@+id/button"/> -</RelativeLayout> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/activity_splash.xml b/android/playground/app/src/main/res/layout/activity_splash.xml deleted file mode 100755 index d67473af94..0000000000 --- a/android/playground/app/src/main/res/layout/activity_splash.xml +++ /dev/null @@ -1,36 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:id="@+id/container" - android:background="#0099cc" - tools:context="com.alibaba.weex.SplashActivity"> - - <TextView android:id="@+id/fullscreen_content" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:keepScreenOn="true" - android:textColor="#33b5e5" - android:textStyle="bold" - android:textSize="50sp" - android:gravity="center" - android:text="@string/dummy_content"/> -</FrameLayout> diff --git a/android/playground/app/src/main/res/layout/activity_wxpage.xml b/android/playground/app/src/main/res/layout/activity_wxpage.xml deleted file mode 100755 index 892f405deb..0000000000 --- a/android/playground/app/src/main/res/layout/activity_wxpage.xml +++ /dev/null @@ -1,79 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<android.support.design.widget.CoordinatorLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true" - tools:context="com.alibaba.weex.WXPageActivity"> - - <android.support.design.widget.AppBarLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:theme="@style/AppTheme.AppBarOverlay"> - - <android.support.v7.widget.Toolbar - android:id="@+id/toolbar" - android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" - android:background="?attr/colorPrimary" - app:popupTheme="@style/AppTheme.PopupOverlay"/> - - </android.support.design.widget.AppBarLayout> - - <FrameLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - app:layout_behavior="@string/appbar_scrolling_view_behavior"> - <FrameLayout - android:id="@+id/container" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="#ffffff"> -<!-- - <WebView - android:id="@+id/webviewLayout" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - </WebView> --> - - - </FrameLayout> - - <!--<Button--> - <!--android:id="@+id/weex_refresh"--> - <!--android:layout_width="match_parent"--> - <!--android:layout_height="100dp" />--> - - <ProgressBar - android:id="@+id/progress" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:visibility="gone"/> - - </FrameLayout> - -</android.support.design.widget.CoordinatorLayout> - - - diff --git a/android/playground/app/src/main/res/layout/app_bar_main.xml b/android/playground/app/src/main/res/layout/app_bar_main.xml deleted file mode 100755 index fcefedf7b5..0000000000 --- a/android/playground/app/src/main/res/layout/app_bar_main.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<android.support.design.widget.CoordinatorLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true" - tools:context=".WXHomeActivity"> - - <android.support.design.widget.AppBarLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:theme="@style/AppTheme.AppBarOverlay"> - - <android.support.v7.widget.Toolbar - android:id="@+id/toolbar" - android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" - android:background="?attr/colorPrimary" - app:popupTheme="@style/AppTheme.PopupOverlay"/> - - </android.support.design.widget.AppBarLayout> - - <include layout="@layout/content_main"/> - - <!--<android.support.design.widget.FloatingActionButton--> - <!--android:id="@+id/fab"--> - <!--android:layout_width="wrap_content"--> - <!--android:layout_height="wrap_content"--> - <!--android:layout_gravity="bottom|end"--> - <!--android:layout_margin="@dimen/fab_margin"--> - <!--android:src="@android:drawable/ic_dialog_email"/>--> - -</android.support.design.widget.CoordinatorLayout> diff --git a/android/playground/app/src/main/res/layout/app_picker_list_item.xml b/android/playground/app/src/main/res/layout/app_picker_list_item.xml deleted file mode 100755 index 37e7abcbb5..0000000000 --- a/android/playground/app/src/main/res/layout/app_picker_list_item.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:orientation="horizontal" - android:layout_width="fill_parent" - android:layout_height="wrap_content"> - - <ImageView android:id="@+id/app_picker_list_item_icon" - android:layout_width="64dip" - android:layout_height="64dip" - android:scaleType="centerInside" - android:padding="@dimen/half_padding" - tools:ignore="ContentDescription"/> - - <TextView android:id="@+id/app_picker_list_item_label" - android:layout_width="wrap_content" - android:layout_height="fill_parent" - android:gravity="center_vertical" - android:textAppearance="?android:attr/textAppearanceLarge" - android:singleLine="true" - android:padding="@dimen/half_padding"/> - -</LinearLayout> diff --git a/android/playground/app/src/main/res/layout/bookmark_picker_list_item.xml b/android/playground/app/src/main/res/layout/bookmark_picker_list_item.xml deleted file mode 100755 index b8cb1acf48..0000000000 --- a/android/playground/app/src/main/res/layout/bookmark_picker_list_item.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:padding="@dimen/half_padding"> - - <TextView android:id="@+id/bookmark_title" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceLarge" - android:singleLine="true" - android:textIsSelectable="false"/> - - <TextView android:id="@+id/bookmark_url" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceSmall" - android:singleLine="false" - android:textIsSelectable="false"/> - -</LinearLayout> diff --git a/android/playground/app/src/main/res/layout/camera.xml b/android/playground/app/src/main/res/layout/camera.xml deleted file mode 100755 index a016c531a2..0000000000 --- a/android/playground/app/src/main/res/layout/camera.xml +++ /dev/null @@ -1,36 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" > - - <SurfaceView - android:id="@+id/surface_view" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_gravity="center" /> - - <com.taobao.ma.ui.ViewfinderTaobaoView - android:id="@+id/viewfinder_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerInParent="true" /> - -</RelativeLayout> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/capture.xml b/android/playground/app/src/main/res/layout/capture.xml deleted file mode 100755 index fa3c603e78..0000000000 --- a/android/playground/app/src/main/res/layout/capture.xml +++ /dev/null @@ -1,204 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<merge xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools"> - - <SurfaceView android:id="@+id/preview_view" - android:layout_width="fill_parent" - android:layout_height="fill_parent"/> - - <com.google.zxing.client.android.ViewfinderView - android:id="@+id/viewfinder_view" - android:layout_width="fill_parent" - android:layout_height="fill_parent"/> - - <LinearLayout android:id="@+id/result_view" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:background="@color/result_view" - android:visibility="gone" - android:baselineAligned="false"> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_weight="1" - android:gravity="center" - android:padding="@dimen/standard_padding"> - - <LinearLayout - android:orientation="vertical" - android:layout_width="wrap_content" - android:layout_height="fill_parent" - android:gravity="right|center_vertical"> - - <ImageView android:id="@+id/barcode_image_view" - android:layout_width="160dip" - android:layout_height="wrap_content" - android:maxWidth="160dip" - android:maxHeight="160dip" - android:layout_marginBottom="@dimen/half_padding" - android:adjustViewBounds="true" - android:scaleType="centerInside" - tools:ignore="ContentDescription"/> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - - <TextView android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/msg_default_format" - android:textColor="@color/result_minor_text" - android:textStyle="bold" - android:paddingRight="@dimen/half_padding"/> - - <TextView android:id="@+id/format_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/result_minor_text"/> - - </LinearLayout> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - - <TextView android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/msg_default_type" - android:textColor="@color/result_minor_text" - android:textStyle="bold" - android:paddingRight="@dimen/half_padding"/> - - <TextView android:id="@+id/type_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/result_minor_text"/> - - </LinearLayout> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - - <TextView android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/msg_default_time" - android:textColor="@color/result_minor_text" - android:textStyle="bold" - android:paddingRight="@dimen/half_padding"/> - - <TextView android:id="@+id/time_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/result_minor_text"/> - - </LinearLayout> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - - <TextView android:id="@+id/meta_text_view_label" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/msg_default_meta" - android:textColor="@color/result_minor_text" - android:textStyle="bold" - android:paddingRight="@dimen/half_padding"/> - - <TextView android:id="@+id/meta_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/result_minor_text"/> - - </LinearLayout> - - </LinearLayout> - - <ScrollView - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <TextView android:id="@+id/contents_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/result_text" - android:textColorLink="@color/result_text" - android:textSize="22sp" - android:paddingLeft="12dip" - android:autoLink="web" - android:textIsSelectable="true"/> - - <TextView android:id="@+id/contents_supplement_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/result_text" - android:textColorLink="@color/result_text" - android:paddingLeft="12dip" - android:autoLink="web" - android:textIsSelectable="true"/> - - </LinearLayout> - - </ScrollView> - - </LinearLayout> - - <LinearLayout android:id="@+id/result_button_view" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:gravity="center"> - - <Button style="@style/ResultButton" - android:visibility="gone"/> - - <Button style="@style/ResultButton" - android:visibility="gone"/> - - <Button style="@style/ResultButton" - android:visibility="gone"/> - - <Button style="@style/ResultButton" - android:visibility="gone"/> - - </LinearLayout> - - </LinearLayout> - - <TextView android:id="@+id/status_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="bottom|center_horizontal" - android:background="@color/transparent" - android:text="@string/msg_default_status" - android:textColor="@color/status_text"/> - -</merge> diff --git a/android/playground/app/src/main/res/layout/catalog_item.xml b/android/playground/app/src/main/res/layout/catalog_item.xml deleted file mode 100755 index 56278ec0ed..0000000000 --- a/android/playground/app/src/main/res/layout/catalog_item.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical" > - - <TextView - android:id="@+id/text" - android:layout_width="match_parent" - android:layout_height="60dp" - android:gravity="center_vertical" - android:textSize="24sp"/> - -</LinearLayout> diff --git a/android/playground/app/src/main/res/layout/common_update_notify_dialog.xml b/android/playground/app/src/main/res/layout/common_update_notify_dialog.xml deleted file mode 100644 index 8b2987bea6..0000000000 --- a/android/playground/app/src/main/res/layout/common_update_notify_dialog.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:padding="16dp"> - - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:text="@string/update_found_new_version" - android:textColor="#030303" - android:textSize="20sp" /> - - <TextView - android:id="@+id/common_update_dialog_msg" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:textColor="#030303" - android:textSize="16sp" /> - -</LinearLayout> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/content_main.xml b/android/playground/app/src/main/res/layout/content_main.xml deleted file mode 100755 index b92e971719..0000000000 --- a/android/playground/app/src/main/res/layout/content_main.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<FrameLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - app:layout_behavior="@string/appbar_scrolling_view_behavior" - tools:context="com.alibaba.weex.fr" - android:id="@+id/main_container" - tools:showIn="@layout/app_bar_main"> - - -</FrameLayout> diff --git a/android/playground/app/src/main/res/layout/content_wx_main.xml b/android/playground/app/src/main/res/layout/content_wx_main.xml deleted file mode 100755 index e5fffdbcd8..0000000000 --- a/android/playground/app/src/main/res/layout/content_wx_main.xml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - app:layout_behavior="@string/appbar_scrolling_view_behavior" - - android:layout_width="match_parent" android:layout_height="match_parent"> - <FrameLayout - android:id="@+id/index_container" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> - - </FrameLayout> - <ProgressBar android:id="@+id/index_progressBar" android:layout_width="wrap_content" - android:layout_height="wrap_content" android:layout_centerInParent="true" - android:visibility="gone"/> - <TextView android:id="@+id/index_tip" android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_below="@+id/index_progressBar" - android:layout_centerHorizontal="true" - android:layout_alignWithParentIfMissing="true" - android:layout_margin="10dp" - android:text="loading...." android:visibility="gone"/> -</RelativeLayout> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/encode.xml b/android/playground/app/src/main/res/layout/encode.xml deleted file mode 100755 index 2a9a0c8ae8..0000000000 --- a/android/playground/app/src/main/res/layout/encode.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:fillViewport="true" - android:background="@color/encode_view" - android:orientation="vertical" - android:gravity="center" - tools:ignore="Overdraw"> - - <ImageView android:id="@+id/image_view" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:scaleType="center" - tools:ignore="ContentDescription"/> - - <ScrollView android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:gravity="center"> - - <TextView android:id="@+id/contents_text_view" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:gravity="center" - android:textColor="@color/contents_text" - android:paddingBottom="@dimen/standard_padding" - android:paddingLeft="@dimen/standard_padding" - android:paddingRight="@dimen/standard_padding" - android:textIsSelectable="true"/> - - </ScrollView> - -</LinearLayout> diff --git a/android/playground/app/src/main/res/layout/hello_weex.xml b/android/playground/app/src/main/res/layout/hello_weex.xml deleted file mode 100644 index 2a6066412f..0000000000 --- a/android/playground/app/src/main/res/layout/hello_weex.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> - -<FrameLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent" -> - <FrameLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - <TextView - android:text="Hello World" - android:textSize="140px" - android:textColor="@android:color/black" - android:layout_width="wrap_content" - android:layout_height="wrap_content"/> - </FrameLayout> -</FrameLayout> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/help.xml b/android/playground/app/src/main/res/layout/help.xml deleted file mode 100755 index e02480a9ab..0000000000 --- a/android/playground/app/src/main/res/layout/help.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<WebView xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/help_contents" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:layout_weight="1"/> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/history_list_item.xml b/android/playground/app/src/main/res/layout/history_list_item.xml deleted file mode 100755 index cb2180adfb..0000000000 --- a/android/playground/app/src/main/res/layout/history_list_item.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:padding="@dimen/standard_padding"> - - <TextView android:id="@+id/history_title" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceLarge" - android:singleLine="true" - android:textIsSelectable="false"/> - - <TextView android:id="@+id/history_detail" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceSmall" - android:singleLine="false" - android:textIsSelectable="false"/> - -</LinearLayout> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/id_stub.xml b/android/playground/app/src/main/res/layout/id_stub.xml deleted file mode 100644 index fe829cfdfc..0000000000 --- a/android/playground/app/src/main/res/layout/id_stub.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent"> - <!-- Do not manual edit this file, it's gen by script--> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4999"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4998"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4997"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4996"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4995"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4994"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4993"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4992"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4991"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4990"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4989"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4988"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4987"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4986"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4985"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4984"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4983"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4982"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4981"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4980"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4979"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4978"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4977"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4976"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4975"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4974"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4973"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4972"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4971"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4970"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4969"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4968"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4967"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4966"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4965"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4964"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4963"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4962"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4961"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4960"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4959"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4958"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4957"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4956"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4955"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4954"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4953"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4952"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4951"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4950"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4949"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4948"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4947"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4946"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4945"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4944"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4943"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4942"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4941"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4940"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4939"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4938"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4937"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4936"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4935"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4934"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4933"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4932"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4931"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4930"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4929"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4928"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4927"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4926"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4925"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4924"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4923"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4922"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4921"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4920"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4919"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4918"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4917"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4916"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4915"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4914"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4913"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4912"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4911"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4910"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4909"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4908"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4907"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4906"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4905"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4904"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4903"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4902"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4901"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4900"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4899"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4898"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4897"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4896"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4895"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4894"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4893"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4892"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4891"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4890"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4889"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4888"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4887"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4886"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4885"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4884"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4883"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4882"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4881"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4880"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4879"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4878"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4877"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4876"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4875"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4874"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4873"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4872"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4871"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4870"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4869"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4868"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4867"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4866"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4865"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4864"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4863"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4862"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4861"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4860"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4859"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4858"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4857"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4856"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4855"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4854"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4853"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4852"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4851"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4850"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4849"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4848"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4847"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4846"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4845"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4844"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4843"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4842"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4841"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4840"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4839"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4838"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4837"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4836"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4835"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4834"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4833"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4832"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4831"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4830"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4829"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4828"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4827"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4826"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4825"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4824"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4823"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4822"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4821"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4820"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4819"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4818"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4817"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4816"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4815"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4814"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4813"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4812"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4811"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4810"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4809"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4808"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4807"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4806"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4805"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4804"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4803"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4802"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4801"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4800"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4799"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4798"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4797"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4796"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4795"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4794"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4793"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4792"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4791"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4790"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4789"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4788"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4787"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4786"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4785"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4784"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4783"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4782"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4781"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4780"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4779"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4778"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4777"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4776"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4775"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4774"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4773"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4772"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4771"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4770"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4769"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4768"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4767"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4766"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4765"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4764"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4763"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4762"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4761"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4760"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4759"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4758"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4757"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4756"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4755"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4754"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4753"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4752"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4751"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4750"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4749"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4748"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4747"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4746"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4745"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4744"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4743"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4742"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4741"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4740"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4739"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4738"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4737"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4736"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4735"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4734"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4733"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4732"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4731"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4730"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4729"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4728"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4727"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4726"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4725"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4724"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4723"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4722"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4721"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4720"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4719"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4718"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4717"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4716"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4715"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4714"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4713"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4712"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4711"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4710"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4709"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4708"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4707"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4706"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4705"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4704"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4703"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4702"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4701"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4700"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4699"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4698"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4697"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4696"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4695"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4694"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4693"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4692"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4691"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4690"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4689"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4688"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4687"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4686"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4685"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4684"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4683"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4682"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4681"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4680"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4679"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4678"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4677"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4676"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4675"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4674"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4673"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4672"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4671"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4670"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4669"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4668"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4667"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4666"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4665"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4664"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4663"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4662"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4661"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4660"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4659"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4658"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4657"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4656"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4655"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4654"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4653"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4652"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4651"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4650"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4649"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4648"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4647"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4646"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4645"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4644"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4643"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4642"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4641"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4640"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4639"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4638"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4637"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4636"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4635"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4634"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4633"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4632"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4631"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4630"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4629"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4628"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4627"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4626"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4625"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4624"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4623"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4622"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4621"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4620"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4619"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4618"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4617"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4616"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4615"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4614"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4613"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4612"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4611"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4610"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4609"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4608"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4607"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4606"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4605"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4604"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4603"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4602"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4601"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4600"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4599"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4598"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4597"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4596"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4595"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4594"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4593"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4592"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4591"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4590"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4589"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4588"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4587"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4586"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4585"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4584"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4583"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4582"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4581"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4580"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4579"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4578"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4577"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4576"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4575"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4574"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4573"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4572"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4571"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4570"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4569"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4568"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4567"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4566"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4565"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4564"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4563"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4562"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4561"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4560"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4559"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4558"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4557"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4556"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4555"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4554"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4553"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4552"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4551"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4550"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4549"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4548"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4547"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4546"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4545"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4544"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4543"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4542"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4541"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4540"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4539"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4538"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4537"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4536"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4535"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4534"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4533"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4532"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4531"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4530"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4529"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4528"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4527"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4526"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4525"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4524"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4523"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4522"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4521"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4520"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4519"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4518"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4517"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4516"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4515"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4514"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4513"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4512"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4511"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4510"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4509"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4508"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4507"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4506"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4505"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4504"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4503"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4502"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4501"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4500"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4499"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4498"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4497"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4496"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4495"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4494"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4493"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4492"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4491"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4490"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4489"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4488"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4487"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4486"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4485"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4484"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4483"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4482"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4481"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4480"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4479"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4478"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4477"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4476"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4475"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4474"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4473"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4472"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4471"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4470"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4469"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4468"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4467"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4466"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4465"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4464"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4463"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4462"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4461"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4460"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4459"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4458"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4457"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4456"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4455"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4454"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4453"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4452"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4451"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4450"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4449"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4448"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4447"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4446"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4445"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4444"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4443"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4442"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4441"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4440"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4439"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4438"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4437"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4436"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4435"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4434"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4433"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4432"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4431"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4430"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4429"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4428"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4427"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4426"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4425"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4424"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4423"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4422"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4421"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4420"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4419"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4418"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4417"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4416"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4415"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4414"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4413"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4412"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4411"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4410"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4409"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4408"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4407"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4406"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4405"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4404"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4403"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4402"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4401"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4400"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4399"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4398"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4397"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4396"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4395"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4394"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4393"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4392"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4391"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4390"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4389"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4388"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4387"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4386"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4385"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4384"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4383"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4382"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4381"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4380"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4379"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4378"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4377"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4376"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4375"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4374"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4373"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4372"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4371"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4370"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4369"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4368"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4367"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4366"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4365"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4364"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4363"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4362"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4361"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4360"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4359"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4358"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4357"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4356"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4355"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4354"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4353"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4352"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4351"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4350"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4349"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4348"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4347"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4346"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4345"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4344"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4343"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4342"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4341"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4340"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4339"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4338"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4337"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4336"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4335"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4334"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4333"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4332"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4331"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4330"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4329"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4328"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4327"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4326"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4325"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4324"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4323"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4322"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4321"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4320"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4319"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4318"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4317"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4316"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4315"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4314"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4313"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4312"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4311"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4310"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4309"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4308"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4307"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4306"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4305"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4304"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4303"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4302"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4301"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4300"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4299"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4298"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4297"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4296"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4295"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4294"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4293"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4292"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4291"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4290"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4289"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4288"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4287"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4286"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4285"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4284"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4283"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4282"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4281"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4280"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4279"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4278"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4277"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4276"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4275"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4274"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4273"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4272"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4271"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4270"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4269"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4268"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4267"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4266"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4265"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4264"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4263"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4262"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4261"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4260"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4259"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4258"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4257"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4256"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4255"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4254"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4253"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4252"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4251"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4250"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4249"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4248"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4247"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4246"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4245"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4244"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4243"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4242"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4241"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4240"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4239"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4238"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4237"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4236"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4235"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4234"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4233"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4232"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4231"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4230"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4229"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4228"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4227"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4226"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4225"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4224"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4223"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4222"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4221"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4220"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4219"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4218"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4217"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4216"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4215"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4214"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4213"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4212"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4211"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4210"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4209"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4208"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4207"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4206"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4205"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4204"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4203"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4202"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4201"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4200"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4199"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4198"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4197"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4196"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4195"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4194"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4193"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4192"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4191"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4190"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4189"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4188"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4187"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4186"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4185"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4184"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4183"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4182"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4181"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4180"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4179"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4178"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4177"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4176"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4175"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4174"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4173"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4172"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4171"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4170"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4169"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4168"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4167"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4166"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4165"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4164"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4163"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4162"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4161"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4160"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4159"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4158"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4157"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4156"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4155"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4154"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4153"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4152"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4151"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4150"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4149"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4148"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4147"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4146"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4145"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4144"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4143"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4142"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4141"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4140"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4139"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4138"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4137"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4136"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4135"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4134"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4133"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4132"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4131"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4130"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4129"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4128"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4127"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4126"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4125"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4124"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4123"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4122"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4121"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4120"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4119"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4118"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4117"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4116"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4115"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4114"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4113"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4112"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4111"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4110"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4109"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4108"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4107"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4106"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4105"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4104"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4103"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4102"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4101"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4100"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4099"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4098"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4097"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4096"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4095"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4094"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4093"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4092"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4091"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4090"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4089"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4088"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4087"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4086"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4085"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4084"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4083"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4082"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4081"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4080"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4079"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4078"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4077"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4076"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4075"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4074"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4073"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4072"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4071"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4070"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4069"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4068"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4067"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4066"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4065"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4064"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4063"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4062"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4061"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4060"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4059"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4058"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4057"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4056"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4055"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4054"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4053"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4052"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4051"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4050"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4049"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4048"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4047"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4046"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4045"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4044"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4043"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4042"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4041"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4040"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4039"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4038"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4037"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4036"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4035"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4034"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4033"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4032"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4031"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4030"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4029"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4028"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4027"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4026"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4025"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4024"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4023"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4022"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4021"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4020"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4019"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4018"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4017"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4016"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4015"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4014"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4013"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4012"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4011"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4010"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4009"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4008"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4007"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4006"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4005"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4004"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4003"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4002"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4001"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4000"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3999"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3998"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3997"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3996"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3995"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3994"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3993"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3992"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3991"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3990"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3989"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3988"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3987"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3986"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3985"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3984"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3983"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3982"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3981"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3980"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3979"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3978"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3977"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3976"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3975"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3974"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3973"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3972"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3971"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3970"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3969"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3968"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3967"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3966"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3965"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3964"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3963"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3962"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3961"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3960"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3959"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3958"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3957"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3956"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3955"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3954"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3953"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3952"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3951"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3950"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3949"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3948"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3947"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3946"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3945"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3944"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3943"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3942"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3941"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3940"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3939"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3938"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3937"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3936"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3935"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3934"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3933"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3932"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3931"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3930"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3929"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3928"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3927"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3926"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3925"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3924"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3923"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3922"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3921"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3920"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3919"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3918"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3917"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3916"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3915"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3914"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3913"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3912"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3911"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3910"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3909"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3908"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3907"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3906"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3905"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3904"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3903"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3902"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3901"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3900"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3899"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3898"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3897"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3896"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3895"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3894"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3893"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3892"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3891"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3890"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3889"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3888"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3887"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3886"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3885"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3884"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3883"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3882"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3881"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3880"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3879"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3878"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3877"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3876"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3875"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3874"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3873"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3872"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3871"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3870"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3869"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3868"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3867"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3866"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3865"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3864"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3863"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3862"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3861"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3860"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3859"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3858"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3857"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3856"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3855"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3854"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3853"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3852"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3851"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3850"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3849"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3848"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3847"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3846"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3845"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3844"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3843"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3842"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3841"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3840"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3839"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3838"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3837"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3836"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3835"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3834"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3833"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3832"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3831"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3830"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3829"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3828"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3827"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3826"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3825"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3824"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3823"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3822"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3821"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3820"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3819"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3818"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3817"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3816"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3815"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3814"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3813"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3812"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3811"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3810"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3809"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3808"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3807"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3806"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3805"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3804"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3803"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3802"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3801"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3800"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3799"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3798"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3797"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3796"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3795"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3794"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3793"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3792"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3791"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3790"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3789"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3788"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3787"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3786"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3785"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3784"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3783"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3782"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3781"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3780"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3779"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3778"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3777"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3776"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3775"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3774"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3773"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3772"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3771"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3770"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3769"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3768"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3767"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3766"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3765"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3764"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3763"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3762"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3761"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3760"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3759"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3758"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3757"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3756"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3755"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3754"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3753"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3752"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3751"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3750"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3749"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3748"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3747"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3746"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3745"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3744"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3743"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3742"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3741"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3740"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3739"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3738"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3737"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3736"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3735"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3734"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3733"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3732"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3731"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3730"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3729"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3728"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3727"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3726"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3725"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3724"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3723"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3722"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3721"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3720"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3719"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3718"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3717"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3716"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3715"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3714"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3713"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3712"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3711"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3710"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3709"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3708"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3707"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3706"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3705"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3704"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3703"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3702"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3701"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3700"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3699"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3698"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3697"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3696"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3695"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3694"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3693"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3692"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3691"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3690"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3689"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3688"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3687"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3686"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3685"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3684"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3683"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3682"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3681"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3680"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3679"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3678"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3677"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3676"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3675"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3674"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3673"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3672"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3671"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3670"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3669"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3668"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3667"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3666"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3665"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3664"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3663"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3662"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3661"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3660"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3659"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3658"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3657"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3656"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3655"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3654"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3653"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3652"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3651"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3650"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3649"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3648"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3647"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3646"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3645"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3644"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3643"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3642"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3641"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3640"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3639"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3638"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3637"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3636"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3635"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3634"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3633"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3632"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3631"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3630"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3629"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3628"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3627"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3626"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3625"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3624"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3623"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3622"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3621"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3620"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3619"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3618"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3617"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3616"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3615"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3614"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3613"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3612"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3611"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3610"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3609"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3608"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3607"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3606"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3605"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3604"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3603"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3602"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3601"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3600"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3599"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3598"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3597"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3596"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3595"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3594"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3593"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3592"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3591"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3590"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3589"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3588"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3587"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3586"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3585"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3584"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3583"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3582"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3581"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3580"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3579"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3578"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3577"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3576"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3575"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3574"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3573"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3572"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3571"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3570"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3569"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3568"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3567"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3566"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3565"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3564"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3563"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3562"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3561"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3560"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3559"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3558"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3557"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3556"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3555"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3554"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3553"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3552"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3551"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3550"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3549"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3548"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3547"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3546"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3545"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3544"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3543"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3542"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3541"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3540"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3539"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3538"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3537"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3536"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3535"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3534"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3533"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3532"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3531"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3530"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3529"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3528"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3527"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3526"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3525"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3524"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3523"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3522"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3521"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3520"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3519"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3518"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3517"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3516"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3515"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3514"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3513"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3512"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3511"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3510"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3509"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3508"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3507"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3506"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3505"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3504"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3503"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3502"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3501"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3500"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3499"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3498"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3497"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3496"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3495"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3494"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3493"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3492"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3491"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3490"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3489"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3488"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3487"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3486"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3485"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3484"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3483"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3482"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3481"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3480"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3479"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3478"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3477"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3476"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3475"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3474"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3473"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3472"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3471"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3470"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3469"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3468"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3467"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3466"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3465"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3464"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3463"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3462"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3461"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3460"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3459"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3458"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3457"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3456"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3455"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3454"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3453"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3452"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3451"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3450"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3449"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3448"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3447"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3446"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3445"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3444"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3443"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3442"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3441"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3440"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3439"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3438"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3437"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3436"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3435"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3434"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3433"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3432"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3431"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3430"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3429"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3428"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3427"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3426"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3425"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3424"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3423"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3422"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3421"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3420"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3419"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3418"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3417"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3416"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3415"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3414"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3413"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3412"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3411"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3410"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3409"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3408"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3407"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3406"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3405"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3404"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3403"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3402"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3401"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3400"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3399"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3398"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3397"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3396"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3395"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3394"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3393"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3392"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3391"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3390"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3389"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3388"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3387"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3386"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3385"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3384"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3383"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3382"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3381"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3380"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3379"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3378"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3377"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3376"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3375"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3374"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3373"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3372"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3371"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3370"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3369"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3368"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3367"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3366"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3365"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3364"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3363"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3362"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3361"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3360"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3359"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3358"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3357"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3356"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3355"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3354"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3353"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3352"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3351"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3350"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3349"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3348"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3347"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3346"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3345"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3344"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3343"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3342"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3341"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3340"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3339"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3338"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3337"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3336"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3335"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3334"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3333"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3332"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3331"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3330"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3329"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3328"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3327"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3326"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3325"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3324"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3323"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3322"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3321"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3320"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3319"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3318"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3317"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3316"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3315"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3314"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3313"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3312"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3311"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3310"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3309"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3308"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3307"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3306"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3305"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3304"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3303"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3302"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3301"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3300"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3299"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3298"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3297"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3296"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3295"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3294"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3293"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3292"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3291"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3290"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3289"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3288"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3287"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3286"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3285"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3284"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3283"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3282"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3281"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3280"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3279"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3278"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3277"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3276"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3275"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3274"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3273"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3272"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3271"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3270"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3269"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3268"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3267"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3266"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3265"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3264"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3263"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3262"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3261"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3260"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3259"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3258"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3257"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3256"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3255"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3254"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3253"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3252"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3251"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3250"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3249"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3248"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3247"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3246"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3245"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3244"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3243"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3242"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3241"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3240"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3239"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3238"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3237"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3236"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3235"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3234"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3233"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3232"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3231"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3230"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3229"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3228"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3227"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3226"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3225"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3224"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3223"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3222"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3221"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3220"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3219"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3218"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3217"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3216"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3215"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3214"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3213"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3212"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3211"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3210"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3209"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3208"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3207"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3206"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3205"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3204"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3203"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3202"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3201"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3200"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3199"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3198"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3197"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3196"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3195"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3194"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3193"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3192"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3191"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3190"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3189"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3188"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3187"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3186"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3185"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3184"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3183"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3182"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3181"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3180"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3179"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3178"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3177"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3176"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3175"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3174"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3173"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3172"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3171"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3170"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3169"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3168"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3167"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3166"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3165"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3164"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3163"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3162"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3161"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3160"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3159"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3158"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3157"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3156"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3155"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3154"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3153"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3152"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3151"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3150"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3149"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3148"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3147"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3146"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3145"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3144"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3143"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3142"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3141"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3140"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3139"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3138"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3137"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3136"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3135"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3134"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3133"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3132"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3131"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3130"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3129"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3128"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3127"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3126"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3125"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3124"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3123"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3122"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3121"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3120"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3119"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3118"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3117"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3116"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3115"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3114"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3113"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3112"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3111"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3110"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3109"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3108"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3107"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3106"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3105"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3104"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3103"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3102"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3101"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3100"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3099"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3098"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3097"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3096"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3095"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3094"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3093"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3092"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3091"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3090"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3089"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3088"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3087"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3086"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3085"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3084"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3083"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3082"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3081"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3080"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3079"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3078"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3077"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3076"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3075"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3074"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3073"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3072"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3071"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3070"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3069"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3068"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3067"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3066"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3065"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3064"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3063"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3062"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3061"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3060"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3059"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3058"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3057"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3056"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3055"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3054"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3053"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3052"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3051"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3050"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3049"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3048"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3047"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3046"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3045"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3044"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3043"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3042"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3041"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3040"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3039"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3038"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3037"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3036"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3035"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3034"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3033"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3032"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3031"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3030"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3029"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3028"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3027"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3026"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3025"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3024"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3023"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3022"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3021"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3020"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3019"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3018"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3017"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3016"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3015"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3014"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3013"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3012"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3011"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3010"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3009"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3008"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3007"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3006"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3005"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3004"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3003"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3002"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3001"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3000"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2999"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2998"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2997"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2996"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2995"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2994"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2993"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2992"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2991"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2990"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2989"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2988"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2987"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2986"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2985"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2984"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2983"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2982"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2981"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2980"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2979"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2978"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2977"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2976"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2975"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2974"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2973"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2972"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2971"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2970"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2969"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2968"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2967"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2966"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2965"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2964"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2963"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2962"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2961"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2960"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2959"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2958"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2957"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2956"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2955"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2954"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2953"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2952"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2951"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2950"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2949"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2948"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2947"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2946"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2945"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2944"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2943"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2942"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2941"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2940"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2939"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2938"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2937"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2936"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2935"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2934"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2933"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2932"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2931"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2930"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2929"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2928"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2927"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2926"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2925"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2924"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2923"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2922"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2921"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2920"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2919"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2918"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2917"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2916"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2915"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2914"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2913"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2912"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2911"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2910"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2909"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2908"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2907"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2906"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2905"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2904"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2903"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2902"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2901"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2900"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2899"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2898"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2897"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2896"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2895"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2894"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2893"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2892"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2891"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2890"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2889"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2888"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2887"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2886"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2885"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2884"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2883"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2882"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2881"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2880"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2879"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2878"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2877"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2876"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2875"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2874"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2873"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2872"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2871"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2870"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2869"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2868"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2867"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2866"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2865"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2864"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2863"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2862"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2861"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2860"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2859"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2858"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2857"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2856"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2855"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2854"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2853"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2852"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2851"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2850"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2849"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2848"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2847"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2846"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2845"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2844"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2843"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2842"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2841"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2840"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2839"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2838"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2837"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2836"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2835"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2834"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2833"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2832"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2831"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2830"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2829"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2828"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2827"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2826"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2825"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2824"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2823"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2822"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2821"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2820"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2819"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2818"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2817"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2816"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2815"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2814"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2813"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2812"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2811"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2810"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2809"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2808"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2807"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2806"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2805"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2804"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2803"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2802"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2801"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2800"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2799"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2798"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2797"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2796"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2795"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2794"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2793"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2792"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2791"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2790"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2789"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2788"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2787"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2786"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2785"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2784"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2783"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2782"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2781"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2780"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2779"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2778"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2777"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2776"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2775"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2774"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2773"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2772"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2771"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2770"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2769"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2768"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2767"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2766"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2765"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2764"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2763"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2762"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2761"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2760"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2759"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2758"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2757"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2756"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2755"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2754"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2753"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2752"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2751"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2750"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2749"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2748"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2747"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2746"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2745"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2744"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2743"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2742"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2741"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2740"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2739"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2738"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2737"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2736"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2735"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2734"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2733"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2732"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2731"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2730"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2729"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2728"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2727"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2726"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2725"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2724"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2723"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2722"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2721"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2720"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2719"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2718"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2717"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2716"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2715"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2714"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2713"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2712"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2711"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2710"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2709"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2708"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2707"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2706"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2705"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2704"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2703"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2702"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2701"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2700"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2699"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2698"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2697"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2696"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2695"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2694"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2693"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2692"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2691"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2690"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2689"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2688"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2687"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2686"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2685"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2684"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2683"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2682"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2681"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2680"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2679"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2678"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2677"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2676"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2675"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2674"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2673"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2672"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2671"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2670"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2669"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2668"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2667"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2666"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2665"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2664"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2663"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2662"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2661"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2660"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2659"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2658"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2657"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2656"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2655"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2654"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2653"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2652"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2651"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2650"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2649"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2648"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2647"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2646"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2645"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2644"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2643"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2642"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2641"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2640"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2639"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2638"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2637"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2636"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2635"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2634"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2633"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2632"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2631"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2630"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2629"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2628"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2627"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2626"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2625"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2624"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2623"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2622"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2621"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2620"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2619"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2618"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2617"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2616"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2615"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2614"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2613"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2612"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2611"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2610"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2609"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2608"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2607"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2606"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2605"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2604"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2603"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2602"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2601"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2600"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2599"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2598"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2597"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2596"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2595"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2594"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2593"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2592"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2591"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2590"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2589"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2588"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2587"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2586"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2585"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2584"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2583"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2582"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2581"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2580"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2579"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2578"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2577"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2576"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2575"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2574"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2573"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2572"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2571"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2570"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2569"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2568"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2567"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2566"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2565"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2564"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2563"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2562"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2561"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2560"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2559"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2558"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2557"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2556"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2555"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2554"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2553"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2552"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2551"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2550"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2549"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2548"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2547"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2546"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2545"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2544"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2543"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2542"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2541"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2540"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2539"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2538"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2537"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2536"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2535"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2534"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2533"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2532"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2531"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2530"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2529"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2528"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2527"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2526"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2525"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2524"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2523"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2522"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2521"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2520"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2519"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2518"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2517"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2516"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2515"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2514"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2513"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2512"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2511"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2510"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2509"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2508"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2507"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2506"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2505"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2504"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2503"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2502"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2501"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2500"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2499"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2498"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2497"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2496"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2495"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2494"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2493"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2492"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2491"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2490"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2489"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2488"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2487"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2486"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2485"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2484"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2483"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2482"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2481"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2480"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2479"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2478"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2477"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2476"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2475"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2474"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2473"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2472"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2471"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2470"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2469"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2468"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2467"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2466"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2465"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2464"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2463"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2462"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2461"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2460"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2459"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2458"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2457"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2456"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2455"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2454"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2453"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2452"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2451"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2450"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2449"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2448"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2447"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2446"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2445"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2444"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2443"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2442"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2441"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2440"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2439"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2438"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2437"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2436"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2435"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2434"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2433"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2432"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2431"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2430"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2429"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2428"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2427"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2426"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2425"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2424"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2423"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2422"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2421"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2420"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2419"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2418"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2417"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2416"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2415"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2414"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2413"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2412"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2411"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2410"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2409"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2408"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2407"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2406"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2405"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2404"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2403"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2402"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2401"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2400"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2399"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2398"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2397"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2396"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2395"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2394"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2393"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2392"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2391"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2390"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2389"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2388"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2387"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2386"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2385"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2384"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2383"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2382"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2381"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2380"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2379"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2378"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2377"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2376"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2375"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2374"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2373"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2372"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2371"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2370"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2369"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2368"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2367"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2366"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2365"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2364"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2363"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2362"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2361"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2360"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2359"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2358"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2357"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2356"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2355"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2354"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2353"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2352"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2351"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2350"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2349"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2348"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2347"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2346"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2345"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2344"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2343"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2342"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2341"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2340"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2339"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2338"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2337"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2336"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2335"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2334"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2333"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2332"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2331"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2330"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2329"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2328"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2327"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2326"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2325"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2324"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2323"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2322"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2321"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2320"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2319"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2318"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2317"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2316"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2315"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2314"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2313"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2312"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2311"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2310"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2309"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2308"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2307"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2306"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2305"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2304"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2303"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2302"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2301"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2300"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2299"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2298"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2297"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2296"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2295"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2294"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2293"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2292"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2291"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2290"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2289"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2288"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2287"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2286"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2285"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2284"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2283"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2282"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2281"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2280"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2279"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2278"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2277"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2276"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2275"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2274"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2273"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2272"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2271"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2270"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2269"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2268"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2267"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2266"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2265"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2264"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2263"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2262"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2261"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2260"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2259"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2258"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2257"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2256"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2255"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2254"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2253"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2252"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2251"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2250"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2249"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2248"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2247"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2246"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2245"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2244"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2243"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2242"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2241"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2240"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2239"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2238"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2237"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2236"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2235"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2234"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2233"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2232"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2231"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2230"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2229"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2228"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2227"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2226"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2225"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2224"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2223"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2222"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2221"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2220"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2219"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2218"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2217"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2216"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2215"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2214"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2213"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2212"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2211"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2210"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2209"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2208"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2207"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2206"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2205"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2204"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2203"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2202"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2201"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2200"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2199"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2198"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2197"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2196"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2195"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2194"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2193"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2192"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2191"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2190"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2189"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2188"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2187"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2186"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2185"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2184"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2183"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2182"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2181"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2180"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2179"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2178"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2177"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2176"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2175"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2174"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2173"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2172"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2171"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2170"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2169"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2168"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2167"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2166"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2165"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2164"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2163"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2162"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2161"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2160"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2159"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2158"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2157"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2156"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2155"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2154"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2153"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2152"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2151"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2150"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2149"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2148"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2147"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2146"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2145"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2144"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2143"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2142"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2141"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2140"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2139"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2138"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2137"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2136"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2135"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2134"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2133"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2132"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2131"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2130"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2129"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2128"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2127"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2126"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2125"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2124"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2123"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2122"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2121"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2120"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2119"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2118"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2117"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2116"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2115"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2114"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2113"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2112"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2111"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2110"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2109"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2108"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2107"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2106"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2105"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2104"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2103"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2102"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2101"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2100"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2099"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2098"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2097"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2096"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2095"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2094"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2093"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2092"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2091"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2090"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2089"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2088"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2087"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2086"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2085"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2084"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2083"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2082"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2081"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2080"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2079"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2078"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2077"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2076"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2075"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2074"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2073"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2072"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2071"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2070"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2069"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2068"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2067"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2066"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2065"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2064"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2063"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2062"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2061"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2060"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2059"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2058"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2057"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2056"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2055"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2054"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2053"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2052"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2051"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2050"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2049"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2048"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2047"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2046"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2045"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2044"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2043"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2042"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2041"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2040"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2039"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2038"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2037"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2036"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2035"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2034"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2033"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2032"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2031"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2030"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2029"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2028"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2027"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2026"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2025"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2024"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2023"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2022"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2021"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2020"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2019"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2018"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2017"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2016"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2015"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2014"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2013"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2012"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2011"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2010"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2009"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2008"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2007"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2006"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2005"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2004"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2003"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2002"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2001"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2000"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1999"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1998"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1997"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1996"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1995"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1994"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1993"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1992"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1991"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1990"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1989"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1988"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1987"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1986"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1985"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1984"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1983"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1982"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1981"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1980"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1979"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1978"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1977"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1976"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1975"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1974"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1973"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1972"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1971"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1970"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1969"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1968"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1967"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1966"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1965"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1964"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1963"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1962"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1961"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1960"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1959"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1958"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1957"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1956"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1955"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1954"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1953"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1952"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1951"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1950"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1949"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1948"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1947"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1946"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1945"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1944"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1943"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1942"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1941"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1940"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1939"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1938"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1937"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1936"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1935"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1934"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1933"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1932"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1931"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1930"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1929"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1928"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1927"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1926"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1925"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1924"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1923"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1922"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1921"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1920"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1919"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1918"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1917"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1916"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1915"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1914"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1913"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1912"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1911"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1910"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1909"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1908"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1907"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1906"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1905"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1904"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1903"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1902"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1901"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1900"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1899"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1898"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1897"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1896"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1895"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1894"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1893"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1892"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1891"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1890"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1889"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1888"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1887"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1886"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1885"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1884"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1883"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1882"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1881"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1880"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1879"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1878"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1877"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1876"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1875"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1874"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1873"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1872"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1871"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1870"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1869"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1868"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1867"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1866"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1865"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1864"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1863"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1862"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1861"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1860"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1859"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1858"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1857"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1856"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1855"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1854"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1853"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1852"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1851"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1850"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1849"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1848"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1847"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1846"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1845"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1844"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1843"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1842"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1841"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1840"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1839"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1838"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1837"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1836"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1835"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1834"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1833"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1832"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1831"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1830"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1829"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1828"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1827"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1826"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1825"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1824"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1823"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1822"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1821"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1820"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1819"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1818"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1817"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1816"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1815"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1814"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1813"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1812"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1811"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1810"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1809"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1808"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1807"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1806"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1805"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1804"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1803"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1802"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1801"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1800"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1799"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1798"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1797"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1796"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1795"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1794"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1793"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1792"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1791"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1790"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1789"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1788"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1787"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1786"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1785"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1784"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1783"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1782"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1781"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1780"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1779"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1778"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1777"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1776"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1775"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1774"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1773"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1772"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1771"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1770"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1769"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1768"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1767"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1766"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1765"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1764"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1763"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1762"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1761"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1760"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1759"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1758"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1757"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1756"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1755"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1754"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1753"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1752"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1751"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1750"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1749"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1748"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1747"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1746"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1745"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1744"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1743"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1742"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1741"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1740"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1739"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1738"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1737"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1736"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1735"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1734"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1733"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1732"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1731"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1730"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1729"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1728"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1727"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1726"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1725"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1724"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1723"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1722"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1721"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1720"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1719"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1718"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1717"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1716"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1715"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1714"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1713"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1712"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1711"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1710"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1709"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1708"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1707"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1706"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1705"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1704"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1703"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1702"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1701"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1700"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1699"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1698"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1697"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1696"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1695"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1694"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1693"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1692"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1691"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1690"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1689"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1688"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1687"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1686"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1685"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1684"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1683"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1682"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1681"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1680"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1679"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1678"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1677"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1676"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1675"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1674"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1673"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1672"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1671"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1670"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1669"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1668"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1667"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1666"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1665"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1664"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1663"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1662"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1661"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1660"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1659"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1658"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1657"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1656"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1655"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1654"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1653"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1652"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1651"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1650"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1649"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1648"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1647"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1646"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1645"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1644"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1643"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1642"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1641"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1640"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1639"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1638"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1637"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1636"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1635"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1634"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1633"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1632"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1631"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1630"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1629"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1628"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1627"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1626"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1625"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1624"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1623"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1622"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1621"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1620"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1619"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1618"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1617"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1616"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1615"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1614"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1613"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1612"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1611"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1610"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1609"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1608"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1607"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1606"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1605"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1604"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1603"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1602"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1601"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1600"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1599"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1598"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1597"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1596"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1595"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1594"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1593"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1592"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1591"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1590"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1589"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1588"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1587"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1586"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1585"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1584"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1583"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1582"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1581"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1580"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1579"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1578"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1577"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1576"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1575"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1574"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1573"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1572"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1571"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1570"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1569"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1568"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1567"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1566"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1565"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1564"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1563"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1562"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1561"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1560"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1559"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1558"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1557"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1556"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1555"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1554"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1553"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1552"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1551"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1550"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1549"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1548"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1547"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1546"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1545"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1544"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1543"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1542"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1541"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1540"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1539"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1538"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1537"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1536"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1535"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1534"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1533"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1532"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1531"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1530"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1529"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1528"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1527"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1526"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1525"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1524"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1523"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1522"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1521"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1520"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1519"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1518"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1517"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1516"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1515"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1514"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1513"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1512"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1511"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1510"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1509"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1508"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1507"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1506"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1505"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1504"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1503"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1502"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1501"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1500"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1499"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1498"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1497"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1496"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1495"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1494"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1493"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1492"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1491"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1490"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1489"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1488"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1487"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1486"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1485"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1484"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1483"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1482"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1481"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1480"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1479"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1478"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1477"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1476"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1475"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1474"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1473"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1472"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1471"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1470"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1469"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1468"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1467"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1466"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1465"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1464"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1463"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1462"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1461"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1460"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1459"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1458"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1457"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1456"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1455"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1454"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1453"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1452"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1451"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1450"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1449"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1448"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1447"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1446"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1445"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1444"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1443"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1442"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1441"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1440"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1439"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1438"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1437"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1436"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1435"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1434"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1433"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1432"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1431"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1430"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1429"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1428"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1427"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1426"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1425"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1424"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1423"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1422"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1421"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1420"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1419"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1418"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1417"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1416"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1415"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1414"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1413"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1412"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1411"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1410"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1409"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1408"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1407"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1406"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1405"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1404"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1403"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1402"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1401"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1400"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1399"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1398"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1397"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1396"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1395"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1394"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1393"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1392"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1391"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1390"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1389"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1388"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1387"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1386"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1385"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1384"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1383"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1382"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1381"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1380"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1379"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1378"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1377"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1376"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1375"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1374"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1373"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1372"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1371"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1370"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1369"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1368"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1367"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1366"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1365"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1364"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1363"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1362"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1361"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1360"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1359"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1358"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1357"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1356"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1355"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1354"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1353"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1352"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1351"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1350"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1349"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1348"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1347"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1346"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1345"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1344"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1343"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1342"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1341"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1340"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1339"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1338"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1337"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1336"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1335"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1334"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1333"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1332"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1331"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1330"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1329"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1328"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1327"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1326"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1325"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1324"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1323"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1322"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1321"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1320"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1319"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1318"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1317"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1316"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1315"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1314"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1313"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1312"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1311"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1310"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1309"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1308"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1307"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1306"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1305"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1304"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1303"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1302"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1301"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1300"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1299"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1298"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1297"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1296"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1295"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1294"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1293"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1292"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1291"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1290"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1289"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1288"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1287"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1286"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1285"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1284"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1283"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1282"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1281"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1280"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1279"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1278"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1277"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1276"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1275"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1274"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1273"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1272"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1271"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1270"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1269"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1268"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1267"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1266"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1265"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1264"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1263"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1262"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1261"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1260"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1259"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1258"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1257"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1256"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1255"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1254"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1253"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1252"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1251"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1250"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1249"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1248"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1247"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1246"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1245"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1244"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1243"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1242"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1241"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1240"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1239"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1238"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1237"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1236"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1235"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1234"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1233"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1232"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1231"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1230"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1229"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1228"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1227"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1226"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1225"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1224"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1223"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1222"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1221"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1220"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1219"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1218"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1217"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1216"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1215"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1214"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1213"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1212"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1211"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1210"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1209"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1208"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1207"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1206"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1205"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1204"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1203"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1202"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1201"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1200"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1199"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1198"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1197"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1196"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1195"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1194"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1193"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1192"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1191"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1190"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1189"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1188"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1187"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1186"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1185"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1184"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1183"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1182"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1181"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1180"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1179"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1178"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1177"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1176"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1175"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1174"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1173"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1172"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1171"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1170"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1169"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1168"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1167"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1166"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1165"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1164"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1163"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1162"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1161"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1160"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1159"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1158"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1157"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1156"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1155"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1154"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1153"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1152"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1151"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1150"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1149"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1148"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1147"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1146"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1145"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1144"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1143"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1142"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1141"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1140"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1139"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1138"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1137"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1136"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1135"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1134"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1133"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1132"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1131"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1130"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1129"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1128"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1127"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1126"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1125"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1124"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1123"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1122"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1121"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1120"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1119"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1118"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1117"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1116"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1115"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1114"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1113"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1112"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1111"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1110"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1109"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1108"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1107"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1106"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1105"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1104"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1103"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1102"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1101"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1100"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1099"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1098"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1097"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1096"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1095"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1094"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1093"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1092"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1091"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1090"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1089"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1088"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1087"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1086"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1085"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1084"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1083"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1082"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1081"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1080"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1079"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1078"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1077"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1076"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1075"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1074"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1073"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1072"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1071"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1070"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1069"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1068"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1067"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1066"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1065"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1064"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1063"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1062"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1061"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1060"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1059"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1058"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1057"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1056"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1055"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1054"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1053"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1052"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1051"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1050"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1049"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1048"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1047"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1046"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1045"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1044"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1043"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1042"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1041"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1040"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1039"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1038"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1037"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1036"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1035"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1034"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1033"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1032"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1031"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1030"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1029"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1028"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1027"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1026"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1025"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1024"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1023"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1022"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1021"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1020"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1019"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1018"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1017"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1016"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1015"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1014"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1013"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1012"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1011"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1010"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1009"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1008"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1007"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1006"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1005"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1004"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1003"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1002"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1001"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1000"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_999"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_998"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_997"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_996"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_995"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_994"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_993"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_992"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_991"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_990"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_989"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_988"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_987"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_986"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_985"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_984"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_983"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_982"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_981"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_980"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_979"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_978"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_977"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_976"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_975"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_974"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_973"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_972"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_971"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_970"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_969"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_968"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_967"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_966"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_965"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_964"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_963"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_962"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_961"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_960"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_959"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_958"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_957"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_956"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_955"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_954"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_953"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_952"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_951"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_950"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_949"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_948"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_947"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_946"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_945"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_944"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_943"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_942"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_941"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_940"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_939"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_938"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_937"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_936"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_935"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_934"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_933"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_932"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_931"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_930"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_929"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_928"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_927"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_926"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_925"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_924"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_923"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_922"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_921"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_920"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_919"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_918"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_917"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_916"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_915"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_914"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_913"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_912"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_911"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_910"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_909"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_908"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_907"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_906"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_905"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_904"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_903"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_902"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_901"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_900"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_899"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_898"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_897"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_896"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_895"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_894"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_893"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_892"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_891"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_890"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_889"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_888"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_887"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_886"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_885"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_884"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_883"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_882"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_881"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_880"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_879"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_878"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_877"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_876"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_875"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_874"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_873"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_872"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_871"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_870"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_869"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_868"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_867"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_866"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_865"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_864"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_863"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_862"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_861"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_860"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_859"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_858"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_857"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_856"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_855"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_854"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_853"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_852"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_851"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_850"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_849"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_848"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_847"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_846"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_845"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_844"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_843"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_842"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_841"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_840"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_839"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_838"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_837"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_836"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_835"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_834"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_833"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_832"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_831"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_830"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_829"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_828"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_827"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_826"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_825"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_824"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_823"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_822"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_821"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_820"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_819"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_818"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_817"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_816"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_815"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_814"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_813"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_812"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_811"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_810"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_809"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_808"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_807"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_806"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_805"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_804"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_803"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_802"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_801"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_800"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_799"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_798"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_797"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_796"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_795"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_794"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_793"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_792"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_791"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_790"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_789"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_788"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_787"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_786"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_785"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_784"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_783"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_782"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_781"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_780"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_779"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_778"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_777"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_776"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_775"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_774"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_773"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_772"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_771"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_770"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_769"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_768"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_767"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_766"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_765"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_764"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_763"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_762"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_761"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_760"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_759"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_758"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_757"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_756"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_755"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_754"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_753"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_752"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_751"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_750"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_749"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_748"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_747"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_746"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_745"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_744"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_743"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_742"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_741"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_740"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_739"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_738"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_737"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_736"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_735"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_734"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_733"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_732"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_731"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_730"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_729"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_728"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_727"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_726"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_725"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_724"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_723"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_722"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_721"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_720"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_719"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_718"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_717"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_716"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_715"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_714"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_713"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_712"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_711"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_710"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_709"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_708"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_707"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_706"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_705"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_704"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_703"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_702"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_701"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_700"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_699"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_698"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_697"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_696"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_695"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_694"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_693"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_692"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_691"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_690"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_689"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_688"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_687"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_686"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_685"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_684"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_683"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_682"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_681"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_680"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_679"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_678"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_677"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_676"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_675"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_674"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_673"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_672"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_671"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_670"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_669"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_668"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_667"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_666"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_665"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_664"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_663"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_662"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_661"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_660"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_659"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_658"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_657"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_656"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_655"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_654"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_653"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_652"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_651"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_650"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_649"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_648"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_647"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_646"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_645"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_644"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_643"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_642"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_641"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_640"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_639"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_638"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_637"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_636"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_635"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_634"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_633"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_632"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_631"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_630"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_629"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_628"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_627"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_626"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_625"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_624"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_623"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_622"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_621"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_620"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_619"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_618"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_617"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_616"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_615"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_614"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_613"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_612"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_611"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_610"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_609"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_608"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_607"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_606"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_605"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_604"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_603"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_602"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_601"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_600"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_599"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_598"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_597"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_596"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_595"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_594"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_593"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_592"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_591"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_590"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_589"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_588"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_587"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_586"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_585"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_584"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_583"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_582"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_581"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_580"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_579"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_578"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_577"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_576"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_575"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_574"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_573"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_572"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_571"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_570"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_569"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_568"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_567"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_566"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_565"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_564"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_563"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_562"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_561"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_560"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_559"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_558"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_557"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_556"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_555"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_554"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_553"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_552"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_551"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_550"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_549"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_548"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_547"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_546"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_545"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_544"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_543"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_542"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_541"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_540"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_539"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_538"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_537"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_536"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_535"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_534"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_533"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_532"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_531"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_530"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_529"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_528"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_527"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_526"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_525"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_524"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_523"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_522"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_521"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_520"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_519"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_518"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_517"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_516"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_515"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_514"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_513"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_512"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_511"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_510"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_509"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_508"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_507"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_506"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_505"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_504"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_503"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_502"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_501"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_500"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_499"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_498"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_497"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_496"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_495"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_494"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_493"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_492"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_491"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_490"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_489"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_488"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_487"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_486"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_485"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_484"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_483"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_482"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_481"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_480"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_479"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_478"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_477"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_476"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_475"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_474"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_473"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_472"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_471"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_470"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_469"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_468"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_467"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_466"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_465"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_464"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_463"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_462"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_461"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_460"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_459"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_458"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_457"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_456"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_455"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_454"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_453"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_452"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_451"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_450"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_449"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_448"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_447"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_446"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_445"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_444"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_443"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_442"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_441"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_440"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_439"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_438"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_437"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_436"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_435"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_434"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_433"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_432"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_431"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_430"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_429"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_428"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_427"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_426"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_425"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_424"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_423"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_422"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_421"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_420"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_419"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_418"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_417"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_416"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_415"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_414"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_413"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_412"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_411"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_410"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_409"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_408"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_407"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_406"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_405"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_404"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_403"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_402"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_401"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_400"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_399"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_398"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_397"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_396"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_395"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_394"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_393"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_392"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_391"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_390"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_389"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_388"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_387"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_386"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_385"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_384"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_383"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_382"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_381"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_380"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_379"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_378"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_377"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_376"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_375"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_374"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_373"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_372"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_371"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_370"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_369"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_368"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_367"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_366"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_365"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_364"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_363"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_362"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_361"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_360"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_359"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_358"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_357"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_356"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_355"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_354"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_353"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_352"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_351"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_350"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_349"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_348"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_347"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_346"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_345"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_344"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_343"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_342"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_341"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_340"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_339"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_338"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_337"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_336"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_335"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_334"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_333"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_332"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_331"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_330"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_329"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_328"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_327"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_326"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_325"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_324"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_323"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_322"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_321"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_320"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_319"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_318"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_317"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_316"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_315"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_314"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_313"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_312"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_311"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_310"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_309"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_308"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_307"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_306"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_305"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_304"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_303"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_302"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_301"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_300"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_299"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_298"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_297"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_296"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_295"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_294"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_293"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_292"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_291"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_290"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_289"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_288"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_287"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_286"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_285"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_284"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_283"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_282"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_281"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_280"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_279"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_278"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_277"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_276"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_275"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_274"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_273"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_272"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_271"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_270"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_269"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_268"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_267"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_266"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_265"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_264"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_263"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_262"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_261"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_260"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_259"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_258"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_257"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_256"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_255"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_254"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_253"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_252"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_251"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_250"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_249"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_248"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_247"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_246"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_245"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_244"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_243"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_242"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_241"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_240"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_239"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_238"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_237"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_236"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_235"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_234"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_233"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_232"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_231"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_230"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_229"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_228"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_227"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_226"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_225"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_224"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_223"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_222"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_221"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_220"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_219"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_218"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_217"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_216"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_215"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_214"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_213"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_212"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_211"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_210"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_209"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_208"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_207"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_206"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_205"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_204"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_203"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_202"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_201"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_200"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_199"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_198"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_197"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_196"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_195"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_194"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_193"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_192"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_191"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_190"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_189"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_188"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_187"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_186"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_185"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_184"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_183"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_182"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_181"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_180"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_179"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_178"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_177"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_176"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_175"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_174"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_173"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_172"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_171"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_170"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_169"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_168"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_167"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_166"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_165"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_164"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_163"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_162"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_161"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_160"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_159"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_158"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_157"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_156"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_155"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_154"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_153"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_152"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_151"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_150"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_149"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_148"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_147"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_146"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_145"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_144"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_143"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_142"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_141"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_140"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_139"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_138"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_137"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_136"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_135"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_134"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_133"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_132"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_131"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_130"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_129"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_128"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_127"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_126"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_125"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_124"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_123"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_122"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_121"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_120"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_119"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_118"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_117"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_116"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_115"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_114"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_113"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_112"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_111"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_110"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_109"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_108"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_107"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_106"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_105"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_104"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_103"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_102"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_101"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_100"/> - <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_99"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_98"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_97"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_96"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_95"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_94"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_93"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_92"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_91"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_90"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_89"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_88"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_87"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_86"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_85"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_84"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_83"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_82"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_81"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_80"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_79"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_78"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_77"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_76"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_75"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_74"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_73"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_72"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_71"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_70"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_69"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_68"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_67"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_66"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_65"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_64"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_63"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_62"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_61"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_60"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_59"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_58"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_57"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_56"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_55"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_54"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_53"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_52"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_51"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_50"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_49"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_48"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_47"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_46"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_45"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_44"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_43"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_42"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_41"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_40"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_39"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_38"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_37"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_36"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_35"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_34"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_33"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_32"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_31"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_30"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_29"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_28"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_27"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_26"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_25"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_24"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_23"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_22"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_21"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_20"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_19"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_18"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_17"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_16"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_15"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_14"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_13"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_12"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_11"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_10"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_9"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_8"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_7"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_6"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_5"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_4"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_3"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_2"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_1"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/weex_id_0"/> -</LinearLayout> \ No newline at end of file diff --git a/android/playground/app/src/main/res/layout/search_book_contents.xml b/android/playground/app/src/main/res/layout/search_book_contents.xml deleted file mode 100755 index 3ecedcc6fd..0000000000 --- a/android/playground/app/src/main/res/layout/search_book_contents.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent"> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_weight="0"> - - <EditText android:id="@+id/query_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="left|center_vertical" - android:layout_weight="1" - android:singleLine="true" - android:selectAllOnFocus="true" - android:inputType="text" - tools:ignore="NestedWeights"/> - - <Button android:id="@+id/query_button" - style="@android:style/Widget.Holo.Button.Borderless.Small" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="0" - android:text="@string/button_search_book_contents"/> - - </LinearLayout> - - - <ListView android:id="@+id/result_list_view" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_weight="1"/> - -</LinearLayout> diff --git a/android/playground/app/src/main/res/layout/search_book_contents_header.xml b/android/playground/app/src/main/res/layout/search_book_contents_header.xml deleted file mode 100755 index 14266a8665..0000000000 --- a/android/playground/app/src/main/res/layout/search_book_contents_header.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<TextView xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/standard_padding" - android:paddingBottom="@dimen/half_padding" - android:enabled="false" - android:singleLine="true" - android:textIsSelectable="false"/> diff --git a/android/playground/app/src/main/res/layout/search_book_contents_list_item.xml b/android/playground/app/src/main/res/layout/search_book_contents_list_item.xml deleted file mode 100755 index 889298b251..0000000000 --- a/android/playground/app/src/main/res/layout/search_book_contents_list_item.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<com.google.zxing.client.android.book.SearchBookContentsListItem - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:padding="@dimen/standard_padding"> - - <TextView android:id="@+id/page_number_view" - android:layout_width="75dip" - android:layout_height="wrap_content" - android:layout_gravity="left|top" - android:layout_marginRight="@dimen/standard_padding" - android:singleLine="false" - android:textStyle="bold" - android:textIsSelectable="false"/> - - <TextView android:id="@+id/snippet_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="left|top" - android:singleLine="false" - android:textIsSelectable="false"/> - -</com.google.zxing.client.android.book.SearchBookContentsListItem> diff --git a/android/playground/app/src/main/res/layout/share.xml b/android/playground/app/src/main/res/layout/share.xml deleted file mode 100755 index 1aa156adda..0000000000 --- a/android/playground/app/src/main/res/layout/share.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> - -<!-- ScrollView wrapper is to accommodate small screens. --> -<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:gravity="center"> - - <!-- Must wrap the rest in one layout --> - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="center" - android:orientation="vertical" - android:padding="@dimen/standard_padding"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="center" - android:text="@string/msg_share_explanation" - android:paddingBottom="@dimen/standard_padding" - android:textIsSelectable="false"/> - -<!-- <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:scaleType="center" - android:src="@drawable/share_via_barcode" - android:paddingBottom="@dimen/standard_padding" - tools:ignore="ContentDescription"/> --> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:paddingBottom="@dimen/standard_padding"> - - <Button android:id="@+id/share_app_button" - style="@style/ShareButton" - android:layout_weight="1" - android:text="@string/button_share_app"/> - - <Button android:id="@+id/share_bookmark_button" - style="@style/ShareButton" - android:layout_weight="1" - android:text="@string/button_share_bookmark"/> - - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:paddingBottom="@dimen/standard_padding"> - - <Button android:id="@+id/share_contact_button" - style="@style/ShareButton" - android:layout_weight="1" - android:text="@string/button_share_contact"/> - - <Button android:id="@+id/share_clipboard_button" - style="@style/ShareButton" - android:layout_weight="1" - android:text="@string/button_share_clipboard"/> - - </LinearLayout> - - <EditText android:id="@+id/share_text_view" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:hint="@string/msg_share_text" - android:singleLine="true" - android:selectAllOnFocus="true"/> - - </LinearLayout> - -</ScrollView> \ No newline at end of file diff --git a/android/playground/app/src/main/res/menu/capture.xml b/android/playground/app/src/main/res/menu/capture.xml deleted file mode 100755 index 277032fd65..0000000000 --- a/android/playground/app/src/main/res/menu/capture.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2012 ZXing authors - - Licensed 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. - --> -<menu xmlns:android="http://schemas.android.com/apk/res/android"> -<!-- <item android:id="@+id/menu_share" - android:title="@string/menu_share" - android:icon="@android:drawable/ic_menu_share" - android:orderInCategory="1" - android:showAsAction="withText|ifRoom"/> --> - <item android:id="@+id/menu_history" - android:title="@string/menu_history" - android:icon="@android:drawable/ic_menu_recent_history" - android:orderInCategory="2" - android:showAsAction="withText|ifRoom"/> -<!-- <item android:id="@+id/menu_settings" - android:title="@string/menu_settings" - android:icon="@android:drawable/ic_menu_preferences" - android:orderInCategory="3" - android:showAsAction="withText"/> - <item android:id="@+id/menu_help" - android:title="@string/menu_help" - android:icon="@android:drawable/ic_menu_help" - android:orderInCategory="4" - android:showAsAction="withText"/> --> -</menu> \ No newline at end of file diff --git a/android/playground/app/src/main/res/menu/encode.xml b/android/playground/app/src/main/res/menu/encode.xml deleted file mode 100755 index eb0175b05a..0000000000 --- a/android/playground/app/src/main/res/menu/encode.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2012 ZXing authors - - Licensed 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. - --> -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/menu_share" - android:title="@string/menu_share" - android:icon="@android:drawable/ic_menu_share" - android:orderInCategory="1" - android:showAsAction="withText|ifRoom"/> - <item android:id="@+id/menu_encode" - android:title="@string/menu_encode_vcard" - android:icon="@android:drawable/ic_menu_sort_alphabetically" - android:orderInCategory="2" - android:showAsAction="withText|ifRoom"/> -</menu> \ No newline at end of file diff --git a/android/playground/app/src/main/res/menu/history.xml b/android/playground/app/src/main/res/menu/history.xml deleted file mode 100755 index 273802b775..0000000000 --- a/android/playground/app/src/main/res/menu/history.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2012 ZXing authors - - Licensed 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. - --> -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/menu_history_send" - android:title="@string/history_send" - android:icon="@android:drawable/ic_menu_share" - android:orderInCategory="1" - android:showAsAction="withText|ifRoom"/> - <item android:id="@+id/menu_history_clear_text" - android:title="@string/history_clear_text" - android:icon="@android:drawable/ic_menu_delete" - android:orderInCategory="2" - android:showAsAction="withText|ifRoom"/> -</menu> \ No newline at end of file diff --git a/android/playground/app/src/main/res/menu/main.xml b/android/playground/app/src/main/res/menu/main.xml deleted file mode 100755 index 4e0533b572..0000000000 --- a/android/playground/app/src/main/res/menu/main.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<menu xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <item - android:id="@+id/action_scan" - android:title="扫码" - android:icon="@drawable/ic_action_scan" - app:showAsAction="ifRoom"/> - <item - android:title="refresh" - android:icon="@drawable/ic_action_refresh" - app:showAsAction="ifRoom" - android:id="@+id/action_refresh"/> -</menu> diff --git a/android/playground/app/src/main/res/menu/main_scan.xml b/android/playground/app/src/main/res/menu/main_scan.xml deleted file mode 100755 index b4be73e609..0000000000 --- a/android/playground/app/src/main/res/menu/main_scan.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<menu xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <item - android:id="@+id/action_scan" - android:title="扫码" - android:icon="@drawable/ic_action_scan" - app:showAsAction="ifRoom"/> -</menu> diff --git a/android/playground/app/src/main/res/menu/refresh.xml b/android/playground/app/src/main/res/menu/refresh.xml deleted file mode 100755 index 8e3805c213..0000000000 --- a/android/playground/app/src/main/res/menu/refresh.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<menu xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <item - android:title="refresh" - android:icon="@drawable/ic_action_refresh" - app:showAsAction="ifRoom" - android:id="@+id/action_refresh"/> -</menu> diff --git a/android/playground/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/playground/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100755 index 0e70a404c022a30f37d65d074b65fde1dbaa833e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1755 zcmV<11|<23P)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!000J}Nkl<Zc-rlp zZA@EL7{>u2@#V`t5Z~fgKg|#mKJmegfpcSyh)T>dqsSH$jd4yh9pW@3ni-TC)R+wt zacXc1PTgDQcxfx+rMwhq0U5B-$ZNX-Egh87-oxX0xb3(tZD}v}wx^^g`RDR-dwQQ= z&-2{poco+6B*a_1#aq0^TWmJ~NTf>MVoH<>PSO_s;FBclfd0IX>Qkz(sLH5L#hA+6 z*N!&q+cYH43+XYHO0}}G0w_XA%*$<y%4V~rih?BcPuh_hJLEXdwUvZ6Q9w=9#3Wyv zLjjbGM~B0)-vdX=PtdeTpv_3&><t3n_7OO)A#kL5P4Bl6_)JUS%m9HuM+w}p5OBC8 zA4M*^-46Zz{rN(h!vU1Iu&_`n1t1qkpvO$0Tu<QTMglu75O^v~?NtzXw}n8>O#)`S zB#>NArxOMT2fs#J#Q;jOTCJzCGqHeXmIzc05_q95d?3M;eVM>9I?6gsJbW?NhBncL zfU3||F@TcIX7d>_fNtA)*LnJ~v|xONBe76Lpk-PVs8v9Ez5WNZRV<*2Z~$SP_>H<i zj)FJf*{cNJYb9`^oxn2+d0`!+?_-!31?a43Kqix^GE_jL^L&6kPKW+Q10RU-Q=MEO z@I?=SU6<qqgu)SvG0Mq>4oIid{U|#iyd(WIL}2`m_h|ZMn82PZ@`Lf!>uLhS7DfQ! z$QiSF|Ls2;f02;}Bh+sC!8D9V84yRjgCqW4H%8;lmFU9p2;KVJ2m>zWf%84RrSH7R z1{~p??vGLa`l1F1-~79Nw!rv~B#e_$0fcZ)GYrS0=dTg4IHCXuhcD}JJi>G%qJX;1 zk;!kQbhVq-2mzX*(~0~#`HVTBq<6##0?J7OhyDreH80ZZsTiQInc!0o%&eQH2z)~) z$+>^KM^SHt0DaUhADk?j5l_)f+-NjHQBe^b{qSShRXZE-{5^CU^B2wDmx3&b%scoc z6r2XxT`~h|H_7V?uc-O=sjaPryu7?sWtS=f!qLx!J_q}f#vzSSMnKCPKZBMN&|W&p zwJZ}D85x0sf&wTgJPcXYW9!b#yu>eggfoj@aNf<Z<pG5L9f^Q?q=mo`jUmIcOHkD2 z@Ous>refBD9CEoBhoeWy#vSQ3<))Wmr3ch&W@jqlCo_&dpp#lQ;NaRcM;HTy!8u34 z#^iHgR+>e7NdakZvoU(!Xp-#FkF<a)2iO2~!N4e>qb<>ggEt7_vMw`#oG#9V%LUN} zg!3tmFbL?*GUsB!y*}xX^zpNFfZ9zQ#{!^p!;AuIn&JoxfLe`=0;(Hl15p2L98geA zEHDb_`ZODWO!jz?4lJ4j%`PztXp!FLv;CB^?7tcZv<k@OCsD-AdU`Rk%OA`F!l{OE zksjB9C*1+_KttpJ;X*#MfPNlYyU<?+1p)XlZX?4EDhcE_g!bI(^Pa#pjKfxDUCiYg zoZ~OD&}XT$ek{1r&t2n-E^+;MBS6LNe4kk5>hJ#=Bg24jl6bI@z`t|eZ)8~t{B#uq zyUzVcrqdL9ri}GPyZw~V)Q>X^2#<jhwYQu78;o_(!Y2vARwQ4l=N~C~&c}I|ud89* zG}C|r>HMwr1|L>=8;mOJ4Gid%ZhdX_2R^QLq9aBDVT=*xN$7IEu86|Ifk0`2dUE~w zRtN9ao^!C?nu|q1s3OgpAt$>7*Af+L{I3-H)b8BXh;_|1nO#u~1&}8QV^!;PkV&P% z<~`b0D>)j1_l-f@Q%Qn*H)0YHj*hpk^W`TSor}R+2<V;WjbAh7hJ+b>OaemPnh)$M zLM=K891;{j;I@TOw>V(2x^Xc^0fi%sEm`jTsVa;j1gxT;W(ZJ)T!2uxWno8{fMmGM zi{GnZHk&Ku1cY&`v^zS0JlmoA`ufC=AfwS(jvMOa0))b{xq-Rpj3C@lr_pFCMFVPW zZGF|#8700YHuSnj&+3*;o6QE*)zxpJtzBJRDdBGFy@%=%gTc^^LlHYfP+LK03)-aB zYIW4c$I#ZWzi6PQrUn6R%gxQ*sn_du7K;UzmzUAqVp`}{R;v{{J3I9`IXPKqV@XL# za)OwanVESnJv>VFWO;dcu|lD!R;$(L8yg#IRVvl*LMfF>ub+K?5A_^5`g9*_@!HV_ zv;}QK+cGjT?%T|lFC?a?r{7PH4^ur(wVmpT7}s{UEf1xor9FT)Zu&beD5MlRnzqqn xD(&>aSQgsgwk0J&hL*TR6mRhsZ}Aor?SGvkh|P{zZ$1D3002ovPDHLkV1ks}PQ?HK diff --git a/android/playground/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/playground/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100755 index 0da5e44e3d27072018666dc59eba5e4b47b90e15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1221 zcmV;$1UmbPP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm000DxNkl<Zc-rlm z-*4Mg6vqcGh%t$m@qz?MOadVWe?V0+5VQ!PZAcS^JkS>kECL}hfp}r43@VlJfW)MA zL(^VL)`y{vZgit6)moCRWp!3q*Jdnj1&h{hZ4xI9Sr;chKAbbhN}9xp8^?AZX6dWz z*uJ^n&-MLreD8)0caL>^AYvV<-eJ{MWBgv$I;u$He)1or^Ub8kNsl=sE_-t+Z)MF> z`XH%GQIwki5Oq>n4_)l3B7}BRmgU2g5h>%kQ9K?$Le}ol1<*Q6B9VBQ0G2otr4pq; zX+<R^8O9d@j{Xhs`8X(UA1H61RrSsYD4$&b<@?K^41@q~BxOVYnJru5$|PT5uh;uX zzSly4dQJm@z>}FwCYA+&a<xKt(Z2-PE&#rA8u0m(#`MA|K(`mL?;pTh>GCzt9<l)O zzP`R^^1YS>@cDdC5r9|;Kv)EP|99i2^|WIE@c1lXTCNPx)6=unD1h!8h@}9(y9D@^ zAMo_QfPaMn_xa6(w4MdLB9;f}?(Tlp6u^xn;P5=)a!UQp=eq{Yo7eQ>FMwTBfT@fH z0NmcS_PRppHxsopUZ_t;0h5viZ{W^wmQp*QRpvGAIj_EnngX!-cSo!@uj$ZK4FPzR z`1rhi=C$E=E)KN;_+h$wBiqPGJB?Hw6RN3F&+t6L^GQz-@K{hiZ|Vo!E3ki)0GA^A z1sf5Wz)&cJZnqm>KQL5uzk}dnw~L3+`TqcS(~O>wOaNqL^ApzBRP!@4Gw5=;aQptB zSKZ_JBqQt3#2j`^Moj>C7i!a%4^k66d^v?L_2;g;hKz+0)QzhL_{e8nC;j7Q<tWtD zD0FREhHVy^=MhZ?ivf<!0$5f19L0jw0H2J3VukrP294FeDF7~D=YTb}zfUm!B~~>6 zhs{<spA&O709=V#2QU@20bnv>9l(6j27qbNI)GTp27v2H>i`mx4FDXUym}@V3UGvI zCZMw&fHQx1PMrt#PpE(P)=+hEP~o-6Z5se6BOVEWvi(;;F<W4%?_iGE#}`W*<uGI- z4EW}6tFO<-Z2|~H0eIy>`!hZ-G&mSi@0AL<-y2b9T;D=<VT5Ub!f)avg}%*sD{$?3 zGpgrmF#s=EY4^YVGk5)`S%&~vUka)T?%<J?+;whdP5r9@=JJ{fuQ2S+zNL<f4gy?U zQce7LwYadOft>l*&J+i1;T5&1?Xo49(*fXuxduypN%4Z0D?3v0@=Ga0ysGzs7jQai zEr6&8ph4&rIGJ4l*n2_$8E#GiaqR$x7I#NSN1rbD28_r<lin9XZ8kRY0X!bhbL9Z; zY#Q|T_CA_Urz30K;K)~+rtxzNYtN^*!9m_o6vb#~XXh67I6ORDUv7)(fnYFroFF(K zGQCrWR<<Nb==b|ikhhIS_Q>iQ8ymL@f^ae%4vVo^Y?<ieoZ2a^%t$06j*X3-YG`QS z=2K^Mr*b3diRR|!m)qLfcC@y(IwCH+i4OKsvGxlgT3TA}r_)WOhaA=>_EOcxJ9idp jd-pjh-41*ASSQE-Qx~3~U3<#I00000NkvXXu0mjfat1y8 diff --git a/android/playground/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/playground/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100755 index 5d95120f38a59035ddd3481ca84629a807064a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2451 zcmV;E32gR>P)<h;3K|Lk000e1NJLTq003YB003YJ1^@s6;+S_h000SENkl<Zc-rk< zd2AF_94?obsL^;tZ6#2n5Q&P3M>GmWtzy(*v4AJoL`Bnx3WR9HL<o`^R5TQ=@P|bq zVj!aSSmdg-(n5i<APCzQda*6ErO@3iZTEP6{=Uu(-L|{iopyHT*!d-2rb&0^&HKLh ze((CdH*s;MnP!@4rkQ4%X{MQ`ALE=4CyX%Bjp5NGzB^H~2&%vfB{0(O?@@%?2)7dw zV-&ZG9E=LYk>U!A*Xsz&2xWvOf`ia1USkPTo|{B2z{z#~Tq$1i={k{MBk-=SF3uP; zAp(35Y%Z7UZbfT?q^85+xSkRy7m0WKd_FH-eI}Ss<iZVZNPvo>qN1A=s|nIWyk75e zlzd9eLy2{nrM@4)iKnx(lUG$$eW{25QuoSYv5cmNTcI%Ij%LQZKE|8c882#J+)~T< zPvwlSv@*W*5aD1CG7dBT^-;#RoMwDS9pi_a8F#p&D}uyLLqo%{^z`(r{W%;`>9^Tz ziS*#}Vj?V}nIKd<7~gz~@nuAE%67(|$Yp%;pYky+pYhjrGyd(rf+#H=5f^~LOEfk% zwrt$EapI6`fq3(<;^N}FDFIic1n4H+$@m5;-Dw4kC*=%|@PY6+3Hf0$<J(CLr#o^2 zG&eW5ty{P5L2##p0K<3g+<8wV1nBfKexQ-@_lqM#cqlxXM=t9K<26p904OOyQ&W>G zD=X_EaHoU-BXV<dCn+fa{CZ(M<8uq5PkbODKHkrGWvikBw5?vf`eAUVIRVf(zP(3% z;sXisCDn-5PJ;^Iq>Qbgp32l*!N<Q&rT^1X#(%A3d_TD%D+#m0s=g4<S{To(5o)Pn z1SmPj_{+N(f47M7->92-+R;0M$66R)R1&$yS1zXfDRgt|+jK4f8n;cALcje;bN^Cx zk!nTeG3^i^s5YR6dVD$*po4lizgG#aC6F+Cs1csAU7N)B#Yg)XKi{q+0Z`J>y$e)w zTyCNJrw8Kwfgal#m(F`Z$iSO_>yLa1FHns=c|oTF9BN{G=1%>RFX8!Z!l+$00>Iyw zQZMMKeEpLzVGg;Y=60P3U^Mb2pxf;BX<Puz^B9qQ3Hdb|765({{?e%AcTacIIHB>9 z1_i(X>($-HCSSrgM>Qq@8r|iGR3;`zgaXe>&ZELqARy3)9cv5?Z5k2)LwB`^Pa-nD zKgsw7x3C<!smjNbWwt>e8Do{4YGIBFgG!%Ru<-Y(R>ps+=v~7xouUZ=PC0}Up_Twy zCx!QDZEfYNR;}U-7cS%<WbX+3{&xx)-*+y&nNTbyVSO5cVSMBEsw@CrdO?Z0rT?@z zRgj&X%~MiRx-lblCQsUMX5jgr{fuAo$RA*$r-!u!Og5@204CSeoYhPs63&P{lFZD^ z%L1g#n8A~NtQc^z4JCT8Q!I$YSYNK90GRolqk-kc-^G4;b#*mQPfzEwXV2#ImS@uc zyg~1IqhN3)zi;iwI)`ckAj&`sUBYK*+);Q=XfQiEJ9$a%MLu(vFJwO+AuviT$YYjQ z6#+UmQu;5iW|13wh2AHvP-quI{r2bb$b_XtRe<8N`W!$ZFu>z8fB=h1^eMpJvyltT zikbj+mv+~4Lt#Pj;G!NhCjjC%^+rCzV*YE1Y;0&$1VB&Yog)1S@X3DU!2kkW><}iZ z^d`XH^^uQ`j*0*UcKwn6;*S2SSh^Kp-GBNM0Mq2r*dGuT0p8oIKLK*94I%&rFtc<R zVq&{!5CJgnp-2Dk@fk#b!{_xU!25fnvPmyG0_4}}Pk@aT1`=RvjSgdYY7Hd7rb=@F zW(pt^6%GRl@T(3d;VO+JK%Nd8VY&OgG%dhiXLKe&4&&!88AyOSmnnd%0$@flCCCQ5 zR2p%9VKoJar~p`uc{M;J1Wq-<u1JJzs~Msg2!;{>*NgzA{JY~lFY|hVwgjkh8ccvc zs(WV;=koYRn60!9&Q-_`Nz4hawi&7$O5jzFo`?us|7qy`GP`8<l$MmzXthB&CP2=8 ztBwj=N2le-&`1~pxc$}yJ}K>g<_?Y-3pZp1k#%hzVY%=bi@XR2o49ZHhXGdTEJm6O z@_N193F3^l=e7xC2YR7-h2ib9I_oz`S}5c2CdBhg!s7%i90(HZx4%^xP=K-~0l{7< z+cvQO-fi!F52B326(FzAE=7b%2CH>wlMLm8q}ZTPFN9O5LJ|1+q5jXn?#gf)RcwlA z^Yq`JhV4Rue*e}U0}2pM+<aP)?kEOwfle{>g&A*(-vrw_6zDvPln95UsN#ac!TKO> z2**eUy9fKUhO)wiU5kOvrKonqpa2Nq?R)O${Jo)rW81yLxFVDQCoT+pI7nYt_E%jD z3ILa~cwcWKj-DU*KGcF>4eGPo26iV%7t4@O`;8AiI~ZeafIpei0Bd<!c;|GYhJ08& z^ad4kQ`0Ox?T#Tr6Xgnk_rigFa78sT=45J}J>>O@a4wZc47$n~;GqzN>NXqF1xfgq z+|GB$<Yx+-q5BGehJ7&Sm13aw)sYw#z$b2Jm3tptM&Hr#jzKo2m?mFxATsAhYuW`3 z6&RfPPqr1<2mdS_DKON1!7(R*v=jfb0QD^D>B~L5TTub>^YiZ;stZyAS;uuFK--!% zYaUTdfX$mXPo#&ps4W265FDzZbph(@>n~(vWZbWW0QmgIh{=;D-_+63aa{U@i5f0Q z0_KmJ+chhI4;<NSw(?1nCMAf4cWB>{S-W;EK2mn=i4!NjN6DuIJV?j<XiuMkqu1L7 zZk$dhw^%Ie!I{WioDu?Dotm2ZKpmOK<LMTG67`DiD5fEHO2EDc+*qwvdvbCz8sKY| zE?s&>oB}p%)~s3hB2dEO#fx8}nqbF?R8ZYC!Qgfr4hJtQE32PBfBtLWYWno)*MPe? zg>2;b@#Al#>m5_4PEFprb?Yyr^r@PfnpV5reu>Z~USkQ}d9JOkb%2X4TefVPGG)rs z;D`(#a#Qr1l2CH=gb5SkkpSV|`1tro$t|U(rKP<*ckbMmViCwYI3O+_11I1{<Y=^# zrC&1ih^|abOuU&ak^a7ua2H`>i~}6p2~NNbI1;&vh(T2}%2y>MB-}7=+_+oDjvagJ zm@#AGV-d(ZH~<&mMC4{zToeq6j1c|Ys2Imck&CDhZ<=YQnP!@4rkQ38`yZ%|*iid# RVc7rx002ovPDHLkV1f&vm3#mI diff --git a/android/playground/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/playground/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100755 index 6901b4ed7cd15b0e6761b805a2416000862844d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3939 zcmV-p51jCcP)<h;3K|Lk000e1NJLTq0058x0058(1^@s6=SJeV000jvNkl<Zc-rlq zdvp}_6~_r728BL2D9Xbl9MIO|v+_p|t!S!6TU6u`UZyCqN_-$To*t=El?DV0N29?a zw2eKrJ}4FyaT60_9%K_j2uTPr<U!sqNCF9DvzyKCk6(XxXC~QAHoG&sv$Hd^_nz}T ztDZPJJNGm9cYm+@8#4wC4Gj$q4Gj$q4Gj$q4Gj$q4Gj$q4Gj$q4Na0!O2e4OGKHgp zD)2#=mY^92H;u25>U=Yn_f42uZ*bhOe;?0uJ<}|vnW&&>7Vm@co_wVSc*2DnV_M5( zV5(&@F%2+TQ9;oF?}J+2Cu;?G1fQu1o_m>2QzyH8`7%l+a<bDln=MKe5D7P6x7%Z! zps^7`Kwy_qsu1CQVgnzsPuktx{diCz5<(%+>;%sM+#E{Pf@Y1H&1PCxSNA|rav~v< zFDfdEV9-<|JlcZ@K3iK`YvSYMuXOgQlF=v3VzE5w)NG++G$dv=){N2O;^Gb9O9%#v zjw!H@aF+X|@@=Z-0J1Y#?S%H*SU%8CXk#y-hDJiatRwWJDnkEVIZW)o?W^Jb2Gnqg z(DVJ={}0!(YwY*KOK-JWX+=dv7W3t}{rmTaE7^R7B_}8UfZa$v4-nD9L%YBn{#`Sn zpVt!lN&%ru(g~e^(0?sTBlP70?z(XOE{i50BG5alsi|p>jg7qqe5yz@CPbftf`S{_ z4fMfH@R`2q9+GK*(400xca#vi-bm=ZU&{lGH^KKjmrLmOVnU7WgkG|$5+Fz4zNx9n zoRpMw2l!NxD3q0z1^Lf7qtSQ^gh90d<bbA?(1apF7p5u)&1kxZ=>Y?wf5_+VOD!<5 z^uqyAOG}IG{rBJhIrwz%-n|h@0Tf{{7;b}}ml^<qJfyUf(5)v3edOEV0^?1qG6>zq zB2!TZp*DN)0cvh;w(Z=xa~}9q5rFtFiDcpK&R_%7%iiW()<kW{BlK5?)D6yXMX~#R zk==K88}|YP6QG2IgkOSBH*em2g<=4G_St7Y3l>1o>oGJC`q+2cf@ZXQX-y{A`|Gs^ z2OtK{-5~*x0M75TxZGmC&IG?Jw_TZt6l{RTD-BRt7oqX_`h&)u;#t#He@StG#_JNG zPBWp2Ckb6(82O+by_-C4kndnUp&8Ab;*8pd=>BiG-yNu4TSx$OqJzs1gonD4<vgzy zGDunoJ#Qh@Vsjk<?&&A=lNv%FP18ptf@XR(>$O!}K!7B7%V7`>dREXaf47X#Q|Afo z8*o2m0B`Ak&k!1YSf5SWuURyDuT0)(q+5WRdkKAs<vPzCVbP?T&@S`n^Gq;~QryX! ztenuujeeKOHPLd6AL$MtfCQq<^SOk6)4=t(JpDa@^(Ko_52l0$Jc1x9Z!Ypb8tDok zfagdXp&wOqxs9j4g}1NZENiaPLkpbYTFatQWw-CE0CWQoJOEfqQPu7JZ!fa9?(g4+ zHaN~&%sLAN=X`@mHvmCX)hA-$4A$Q~osH0pSW3b=8R^ZK19@z+U`fP-286{^cYpsG zX^|)-0D|ZQi?k3PadT=?AksZR19oowC)n$Gw4{ep2|X$@C(<=QFv1M*+=Ea^){-=F zBiFhG2%4>TP9g~Y2$s3PMuCt62;kXu3IUKqZ=dwsl<5wj0fa~P5$j{;LIfay=j#S^ zy4+fEc=Ra`T>+Gb<2(TqY?9P9K(O*o?K>&7tYzthwwrVc5UlTkWgF<|zzT*$bO#Vj zQSA9%!vlrvzSlDNca;;myMnz4`Rum@XloHHZ-w!lr?R<c23wg5S%O^HLFl(l+ywJ0 z$GE?7_dFpA_4Mlupu^4D9Vom%h0u@dTql98HapEcYp072%R93CRtdLK0iv~-hz`qQ z{&b9k&iPvZtJM)e9cDs*qv3^MpVm3`AO{9$W@aW$NJyaDwr!)k(~i-oLw3Kx+0CL# ztI78XXjrMaHf!jb>vFi>uI2%<vmf!=aqYshJd>Mh5q{5s0|)4mB}?ey#fu$^j*g}e zeUR<*^&uy0>Xm0yAG+{cPH@+Sm76Ul9RLLFww4ppS4)OQcugh~jf;yLgh$ZBaU1E~ zUk*sV_OnMu<|_WLeI_)qjJrO})@vFdSW)<b#`kO`lnnvY)6+v^V`E1EwD8Fn>D^!S zOO8Bp!{b~-;6)=B`85p?Z2r@FmpCqOD3@SPpgVT#7#V>!e<<mi&mHkT`RT7tcXKbV z(EMr+Ab3DAIw*z^#d<f#x|})$9UXM*)~$5)>eVzRCWgMT^If{&;3d)5TgY;g@(aoo zRDe<Gvwa!`2&zx$WngY4?1;GN+7oMUZ>P0w=V*MPP0}jD?^=|r$N@WE%mW$(=wiR? z7G*tXVH%-(s#)}4O+y3gHSKF8bVZi5YiufX?OF$`K9K4Gf<Y{tQW&|LqRkW>cr*o& zl_hPDXCg4emENR|8i}e02u4J;R(>wff?k)!h5(5I2<BxF8dpJGM730DRW(5EeOzf0 zgl0(VbG;XiK!9}Eb(cf;9THaq00H8)!HCc}3nn)0b_7TiKrm>9yGmUL4Xb)obl8mA z0s5*Qp>ftrc`7@tNbLZ@0VfE~kWv~EAkhFpF9Ua4xb9aMvm_M(;srzW2+ok8rlIN% z+*30^hno-@H8)?X2k0H#<L)x{bEXFY5)BZHbHHhR2oI-+Q`Ir@tQmly%6u%&z7HLo zlCRQ3ht&#Dw*{eb*4On2kR*U$%`Jj6Bseez0g?dFe`*jKL9m%Gn5zyo2~ZMNk{=YD zWo9P`kR*T-%Mlzw+e_35kE#JmC`E7teNc`7Ne1Z8g$RxysM~`8Nd#yU0yHQkHw_{{ zI#gjN0wlc&JC5KWKz;zU9gis(RB;yqBpIN0up2)pHO|7T9-#LSpusAxwHFZ}$pC$P z2H`<~`~V0lup&SRkk0_Y;_;Ok;vVu7nS`#+K!6Y+CxD=w%abBbSB^Wvm7&c$ivS@& z&P!UE)_d8~{9C9Ccz$U8kd}*%dlCZV<D&X~XFPB5{j}Qk$2_6aC9q}Z5g?xcD(diD zOndkyyB(!C5{&>2E37cu7MD|Q-pZUdd2^5XG8c7#CfAoLYY31}+j{Jd!#<wQaer== zyQ-vcsK^5{oLC5e9&8}=!z%gUS)9h*9~6s_T5aT$Y6M6UKmZR2{yDkA^<lzZ`S!li zPiv0xGY^6Yk;WIUZ0wb<E+d?NES!L|`8cizQVgK{v##fXWi)&KL4Wge3IvKbS)B@3 zM$2$+7nJ97?nzbmNIT=~?J@*NGC($)&2fWf+faoLSR>?ZcP8XU{?y*-A6E7B)dCsL z#W*tZzV}GjG=OWO{Qw9AQ2{E{i`m+8fhFFLr1^HVb)B2>mh@)-0df~L;pCfGkrnA- zi#Gz~2SCPl@dt^(0OT9Tr6<h*io2~don~%dmap(Un#T1e-Q6o3D=8+SUYgEDVg$&C z97sq!rR<B!Y?0>Vw@OC8K7996IlcpwbjtIQlK-gi4w0iSVmAWha|DtqM>8g}vRQPx z_cOMjE|0GOWwm-g#0@qMdb`fCa|n>+aUfrR6ujADwgthPo!RRBdQj+Lu@8CG!c;=L zEZ(o*aEUwb%hR>KtV4hli$G$VF(?@)wrTuVrEk42vBxmMw2i09;4MW6kfH!V)3D0J z8X;)n>Ltu_!%>e?k6ZYpMq1STycP>gsRkg3EQua=cI>T?-YmW<@xYgoPU+wA*JAhA zT43<~{C5P%M^#>MKjI7JaxeODIBnx4@yYpu6yHknLYIF-p8Na$svZGSB#Cy`ACHbq zoZ;j{U!&STPY1pv3yk@|NcHgUJ#-8ZAO#~32)fbEZ}ZdH{te2(V*eE)=Eq(s@bA7M z`5q1t<Uv?y+=qcge*}r=3%NtlC#zK+D5DOEn|+rPBKXX0M}QQKK#qlGt=zJV=X2#b z-58SHzj&E0NtLN6xB!t5Mc*t&fD{J^mS;eZ?6{1hxo0kNCnmdt2b^6a<91{K*3ig} z6Frowu6ePL00;zIf8;(}9hx$C^H}iTdIONFly<WGD}&H4Y7rpCa-e`dJf>~M?g0wa zclPuXdZ1oCMK=*3KLz79(Zfc(?>!XQ?^M%>Gy)`pPIkHGLxBbeljtDiK!Fq_xiC06 z*xg2elmlqrzI}Hwcx+k*NPtM#*chq+B_t%wR}3KbCF9`Bl9Q9~VDR*59UvjWU7s78 z0M*sinKy3S_zUpqx^?R!0uIpf<;%n2%N8wKG|g(YHt_%vEdvB<F%kN#F?0X|hk@@( zOH144&6_s|d>R!MHExUoHkN(imF#nJPft%4+yn#1F85?=Fw{E`Ish@h*)0|e&Cbp) zWWKzb_vu(g09vzV%>)4G=+UDa`G{i=p*L3#&6fk9rluy!QjzW8OV+YXR0^Q5IdkSj zvd>8~X3V&eC1DLbL^gDeX5g{0^n>Q)<g`wmI`wAo<;<Bg$AfPb0f;GL?%cUov(M{y z?b`KBV`HPxblJ4rgoO$`kUSR`7t_~Ye?1<2$on!vNq`{PnmB#>^cn2)CKd+YtgNi0 zX0zE58bOexL8gxizW9XM;g|mYetP1>37VLgxD$LgZQ8W!!I!*G6#-}r-&R7%n>=O8 zl-ca_mMvSh#2byqR@N<~CX)$3qG;+dNSN#E>uE+tM%$)Mn_dQ=@xGhP`*Q3U1ucvZ zc|h)UlP6F9Df_&Q-O#+Gq@?#!Qc_Ct^YhP@mzP^=YHI9NRaG{W@~W<`wpUbCSXgK0 zoWWoyVNoZE`3S~*ZsUD+9q+>kC8LjX6oO>>$4t}tWbD?6h=@Cx?wUP&_I=BiEn5*2 z6Z06$@KHg~s#U8VTe@`V${TLD;XdY*x!@b{5$~(%yze5Fjy}#&D4Y*}a3j+qBO~Wr zd+oKiPM9#^cJ}YL^Dv=;Ebs;R1bhQN0$=ey8_)YNY)p{M8KNIDUBd*4^(=OyKbbgj z;?0vLO}Z5oJb@3GFKz;#@V>c*_f^p084eLl#9hVT93*B__%?PbuW2YnB|P`*cwc}| ze#HCe3bnxF43Pj*1mCV+$=~b*UK3G@N_g&9@xF-UeG~5FFV&fFV`F)Rqf{ZmAF2h% x8&Ig=3Jnbn4Gj$q4Gj$q4Gj$q4GqmN`#+@RnLn##13&-(002ovPDHLkV1mNPO0@t0 diff --git a/android/playground/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/playground/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100755 index ac38da248557817d0814fd2942f38f58c2f4bfcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5608 zcma)==Tj3*w1+nY2pyCzC`D03=>Y^pLKTp%h;)$NRgg{+sS2T}G(oC#1w?uikY1%n zS_0C$^cLXey??-+`(bxy&Yan^vwQaJv%hz`+7D@|u22C0Xw}t}^@(HCe~p5i*y~TZ zzyM$_QCC)Y;xn<4O6g;;@Tnt(K~j%}Y(yr|$^P4L-i(;5{pWshRb3`$XInwR{7}iL zjI119W+!{zIsRbotem%sklWAn+IeEtC~SB*Y+y7-Jh2NOLe{6|i@ERt?)^2d)Hk&@ zYkIn*4+;3CWBJz5DgVv0i=SI(m4~MjSOyAGk~awM|JR^=(JURqaD|tN56&c3o@FDf z%+|aoM<00;%(h)GRu$!4$862w@w{;LWueXiUizuO&0Hrih5LvbT^s3KOny52kCuaU zt76SM$=UVyrcG>wZMtwi11Ts^Y--IJr(j%nLu>pUL+;@2N3n)ka=z-`i}skdeZPBo zJ}>f)4jGi67pHfzZmO1!yOgZZ1)1Oe?Z5f^`n7)%KDu-YXK!5;SM+|%dwY7iTz(p{ zydfw^@3W$%T3taH`7OQOrbwmI(9HaGw0muJ700d9WgSEz2t}01U1Eu}jqvXd7G|UZ zB)FlWU)0pps2fTQIpbp%=c4+aR*uExFbiI$xBORES6BbW$Hz<mGEuUn;Dt|~r1UL@ zPuqFN?kY92G3s7v9UdC8`_QqoyBqFAhaMSuLSp%L+U-JIpG%zuHkY`8!J6CE7p87M z7Q}GX@!RYae<NSHC|Zpjaf?TWzn6cwb2&$$rlzK@)A|P%o_Ibm<DK6!drzq9JPguw zm&UI&a@)lU=bD2l>3qLuN<JsLg3-~jA)KF4F`*0^HEjt}9c(D0^VAYn5oCGVwgyDK zE=uo?H3g`xtMk><(<}Y==k<I=b#=8`U&XnRkrAHBz4~d|FDer-q5Rbp*M5{H(9TNj zA;feu)#F)a7nDh%f;)8Ep44(Jf?bDM7jD8<CEfChbB2lbj(p%rx#M*0Ydl|x>-Y~9 zS;qlfgMYZ*nlNsLzBQ#Hj04bF6|QQx%NJS_jI55vyD;*}`Ngxap*Se!x8`%g(nB`< ztFY~Q)pl8zS#b{KIdoy6z*>K*Y~BYfF7R-AHW|V#D*7JR`<?NYHbEDMZ%*w`Q+Y6r zT#hqN>czMVTL-)oIlE3dAx1zX3!r^85w(Bs&8Z}^ZFwyp)iId!>QDmCtOZm^eP!V3 z!KGrdAI;Ge$9<U2{{C|*g~C*a(d)o#TiSv_@Jy&C2gPk}k$ZU4FPc5e`zR7!qlvj% zyM98Nk(KqU)NwfXVVARe<Jo~)5ky2ELw0T!19aDX>fdeSx#;Oz=(Bwvvg0iTqii{~ z10mmE&b4=RIwzALkmA^@(y!)`au7styQioR!HjNh@HEN_>3yb%{$8i3vHw{HV%ZW# zD}S@3t*y;0j~VdV0#!afK9w~Hn#GEsBM=ISX8XODrVL%W5V9m_em#IZYeb&ubUKTH z_W<!mXp-#$?}2HIr5yIZ+~?Au$GwjM2ng6o8N3VN%RSZk=cWzUR0?K(e^7CHQjpsG zLl(F<?2paOS1j}-#tcz`OG4l>BO}+qWe|r&j{iE^ad9+eAUBlsfa_$dl4)TkIg_C? ze(Y!pLCA}S1mM6teRRr)xtNbUXN^I|@fR%?%XS@w=U}!j1^<c(eIUSkK`W;klkkpw z-n3(;j|~FIvWfto;83B%mhcCbvNTPr02B7P?NMGqG4)f&`>xNwI@lB5*(Bj}q`QVR zjx4iPK-0rPPh9%XIF>+Diz%1Ehzp*??Z(vjq0IBA%9LsKk1!XaG24zXD?c5_LD{@) zT+=2gNG8e1irOZ7Sc23Owi8V=?Kx5@b2sx=zccsp7`Z+L&&bysH_5?Cx&jeIx5rG7 z4bth@QR2|1Y|BhSE9$&L@d|a*)Xz1ZK_#I+8-lX+GV35f$S>wKuQL8R+Df$}=vQr- zi7y=2XbsWmRj(hj)5!UtxBDzKXeoj2B_M-VtT}n~t0~W9SxNuE8_U{q)I37XyWp}; zr{xZSUjgne`@J#+-x!76i8Q;n8BHo>F1KGd%f~^%lxG(&dDZJ~dVgKkh8)tH26NdH z_Dex2mm#3awP%#dTS(toxq~(Rw{rKF#k4F-MF0p_Z%|ua7BWq}7CN#)Y2HUmM+%zK zQ`5cLz2mLv2P~aOU$*y2f{aZh>Z_*+=j|9tufzj{B@7hi6YIzEZIQGwW!evocRB!~ zd2d-U$s)x%h_wAMb+<%@4E)PXhK_C=zZSsc?vH1Fspw`AgrMoOrr$+cBBv1<d+VZL z`QZ~E$(yw8Lm!bTeDO9Apz!D7;!ZiCcI1r{V2DkwWk*p#&8H*A?DG%F0kWSsFNAT$ ztaRn)#tI2&sFVsos}z4<A)_+`AVRWo@F48=9~^_EUwgPY0G-{9BdAY|YUvF?!U<S{ z)QzSLDN_|#oP#Po@OeMVlX@&cXcrqaR(1Yv+C%s<l-*irYV>z0oSB7v+5N7i18_)z z8u&y?=CAl`)Xzuml^9IusfQoyMB@HwZGX~yEPXY5YbGz84fRDg`R!4b>cpgyt^Mb9 z<H18!YsuP`59j#!TiMV(9MW4;-Ws9=eNi}GE%+ebj!<9hZgzcp{2)KOr7K<2u!NK< zK8j`@O>K6e(V<^(RGdd16<tdL4%>txU($cqVa`2mocP&ZQe3=P=e@P)j4fW6taP1w zcg#l^yz#ITqeIrdoZ&ALX{mR-KS~xTd?ov|_x{y<sT*J<%I%)x)ELS)EpD?qMP5oO zv7@#1AG^3+Kn@u-%fF-|^}k!BtU(sJYVrGu23z6!dA*TCD#&82Y1~c0S0o@aYw_Hp z{rl4Z{8;0cFTuh_KjyFO*1`SHhXYoNJrw){WghDlDW2&#&1+1uq1rawD(8*Cz~ixh z%ux5&K58^>yMC_hLIMIi4#=V2PvXZT60o41i6?S({oghfa?4VOB((NU)^tcf+H})V z3uQZ*<q3~tZpWE;S8wkg6<B$LeL&gmnOoreLP)F&t{#6QO?zW<myHStlt^J`60vd! z=CS1BGgBugr=zJF54l57w)D>t)lIc5k*>|oxmy>xX`egJGqK{V29~8)+yuTwi=8X9 zRgg8gNOIuoeZ|uyoS$+5mb)=?gX!MKXT}~MbEtn+yh!9=zLV?ENka()!{=7@)nlk1 zCwT5%rP%sY8r;#|zT>;QxUCY&vi*9?WuE$DGD-4kw(*5mlxdO{bDehrI|DFY&kSWr zx+qLo6fwu&5qx=%v%a+SeQ%TVnik>g6-T2ydi+O`eYrIf8*Nd$-ui<02*`8s(VQ+W zcC>=hl?gIlji_$r?wym{qUIEq?hIyhe`N7vtrhvIDP&nNT<{eBl#l7TZoNq4c9l*f zi%B-@kq0~KMicX^iLiid?G&jN4!0|Dc1UFOl!d`yK;1_O&;s8tIB5!U^D&zIC2$fz z1v12c_IOxoNW?$+!nGSN2jEMQ&`p8L^OZDV7z_lH0y9sTbzvU-Bl6Y7cNn@@B9Q5D zw=j1}jBTrOt%qPm3*vjC!$e1oj2^W5yevEK<*Ed_QiRhvkz8ZHuWAB901)F85r!bn zNsm*<8nX@37wJvFL3+68=+MOTv&wTTO0eN<^ri-7plt8<==Ib|I3L(}+RmEMog&~T zse~^=JtKMXgPqK6bg2JTV2b=*NQQ>HNS=(8c%?Bw=MoFk(XnRI<D%vgTpyPg7+7%7 zxqe}&a@tP<`XGpX9xLtFo~6{lfezhj%=Va8?)^wrz7QAy;KBfS6!Hi>ShE3$$3#Pt zkb0Pcl5nkV2n4u75TnuQztPg811l^bLmDL4T53v^&+yOLaex6%5Css-4eJY8lt82t za613zml8T_ef}MSw!86H1ezT|hyCC99z%_?5Rbx_M>#ke0EYo)%RoANpjd1lt!~>6 z0YD@>!A6aB00N>Qh_cI#YQYLhMe!Xi#GNH;;$&(f17YOc?BoVt2$V#;Zx;+OA@V)? zJr=A&Ks(U_94?`K3q<&V$Um8;-Dfb0nrJB!a5rR@6Mz9;@Cbr%V5SG<b?n*>%x=My zMRXLvn7G6$B@||o8v>%06+u%5@SI>vM?E=aeN?5^|Dg9Mm_MHy?3uGHglaA<;(at~ zr(A~<MWn%iG!Pc}My-7Kw&Gb%W4b>5M{5?f4zTx`y8rNuI`#TcTDMn~sIt^t+4uB( zi&Q6akSr9Hl#?OWy0mn1ewL?eRBN$d$@gp$e0DwDaGOc|A!o6%+svNC>Ho%)rpcCL zP87-+MfjxV;Upu6VuJ~*L9LUng5}F#f>~w&aU^UzG)Ad|Y9xY%wM7U{ZBRhFMq8FY z$~7zaU)>9C)vtG&wU-R#FNzA&e_UI^U}<%+H%Fv;bsgWwMXoaMOjroMIWtDiG&-ND zgN(ku7hb1^@`)8<=P!bm5=5rq|6n^y48<@8v_xVKR$V;w!L*-#)0ACJ^0lG0Io*I~ z2O!#clhS0yO66#QvmoRI!9`I73;C7gS>PEzS?-)7GJl<t=RvEvW_sVK<6i_;2B7Ku zfL|I;s*SK03;(^<0~->;NK14|%Rrbd0!J}IZ6V(i^xS9Eo{Vm^0k^>bNygApI6YX= z?Hg6#GD{A8Vx@qsCd?$4b`Y+aFQFn7VF;I6`?7>eb?<=VU0GK940x6h$WXw4YcYJB z-b2+`es!T){BPOwfl0T0g3LINz>2n9zn-wTB>b^z;=9w2i)R8_R~`Wn1w{;h{<@nZ z+ahyz^h?N;F8Y$A?XhXzA(lrZ?-n^1m{=UN+dr?p`m`YY-;%eXH!+u?2n`lT9rY9x z7gfcFQb>Q2rcSKW%At1(?^%@r5C7VEf5Dq{(FR;&srES^$e;!;bQdK%*^N~da1qAh z+dCUV(~VC_u>^RTXJw02r+3_Kolu9#dthMVlV$kzWiCx46Uzdf$hInMfvETc@!LM& ze%k!$Rr9!;XL_?ntJs$1=$Y@E5EAA-uK_TYK5}b#{&Y=O_);(2q3GA>M3|86trhd` zW<K9!9Mz?A`Y`p=Fs6;|abc}Yfz&&~j+Fg>InJWzXuH!Twu9hi>%%~Hyzw0w$SAvp zR=$-HN5iz@vdtHXYM^x;q$3Bk)7=*7ewn`u1LRpZdf1?VSQKn}7o>kyou{YmUsQZ> zg2HBMXfB9OMSXlf8~Sg>gC+(LOZWM(kEwjolF~8-Z0M)5T86H9>%b1a<qA<|y)n0c z%|;tS1fcf4h0QlpxlJ9MlRYHR3=s;CJysd^bkU}7Pc&tK2o2afCfMVe>TVP%{JEiO zau1oZa0_hXs!aI<ajnU3I-sxZ0K?cC*vxXGz*PzjH<iKP?!OY##K?Q<N(1=QQrTcB z=+p7R3pWE}Whn8=bBD;GozX`Ti8UwmkAm&*e=wq{Pdpx^{w7R!?onl2&y|(QXh#$h zZpS{_UOMd`9sV;DKp`1E=%ctYKCcT9PU}1M+-h>qzcK@dP332uevm=2lFpSB@;^%D z0w>6KV!&ZbKR@j(t7dDRL4rKo8G^R*1BSvg=H@vCvYsU>r<?IEZ4|G^6+gl#9AuaP z8wHqv&KZ|Z8(cfVehJ?F*$+NFNs7-*vwX)v>iOea8wsF+f)!KPoIA?_YUW0gBR1^g z15Shcxi~$QiPh374ddfnIRET@Ai@N+ecPTCVVz59O#5v_yd3mh4U&s<WHhF|fF&Cs zS1LEz+g8FsGD2lWqgt|8C(2(Kj*$a$Z<fwk3TLqFIT>zW?{0LB224H9D(nG34)Jyr zr!$MM4q!R>O%G`3KtXMb$7o$O2^+ir8=9R^J%ca@V(rEJfmVAtZx&axkN`_gz^Mvr zs^C84^8GIn?wVA(+-N8WhSB4Md)*=6!)hPq;wCL1RlwXgFgA8FE3@m1>2fYDEyX&L zqeH1#qZv@qmp!#vYLIe+RA7Gp&C_;NDp5cnL$}8sA0J1Fii%!nfZkMD@9d}G?Ps{- zkO&FFLDA6A5CW<z$yZAwF}JYIoyc5y)AI9P7s=i7@^bNC)>ZGZo7HpCv-5IVfSc(x zKJYN=CeXY&{BXof^tPfgtD3tt3EKn;tgfvc{|r3++eK6gvfyM*<&MMc11XU)F{p04 zvX?ci)j`6SsB{hU6$FKZ{-aMbjcX}lw%yMJAqd}RBYjeM&D#S$nUi0?e%&p4dZ)p+ zZqNkDKQo5Mjf}Lav>5Z&@6*qhQZn8&6^1foGJ`ORsQS~*x?2(Qjit6d32duB9A^G* z)IOou;oHwFwf6Fov}o|#r=BnB`gjYkY5q|z?>11y5TSJ{N(y&GyS-b*c=@tdL>ijB z(U5{<k2F?)_wmVNUEQWCx9Qr%`zkoznD^LnQnWKCLR{fXM-11+>+K~xwbldftor)T zCU+CkiZR#TUZWF1q-hGD2E9VcMqTeB$a<~c(<FZNr#*+Y;83{nfpPX2U=z>@jb@#L zkj!v}ZsN-9e|Ln2hECat?Pn`1S3Y8TwFTIp6u;Odb9Zo<VP|JI%^pgpq@PwY{~#w} ze(*=Phz5O{t)K|!@Qhrh++;!_y_W|v4_n*X1X)uRZeP-J)bsb3z4hx|KuBpYjgBwU z-u_leLBXuAuP<R(M_$mR=G6k#4xO*s!I0pODx!wtvr6W6`J|4+t$J4Wi)vJD<Td5x zbc?|K(fB&A4Vk-^`I_qLjx2~j5s{IpDk>^;ow2W|=>H5452wt{&E4_docdJnG+HQ6 zQ9_{h4XanW#w*;FHe|DguVc+%uH|s}nV`DS5>DUf@wfGzvY5g@9YuU(M8wJL-pa5& zk$T(jn%5t(cP3pfO}dXT=hlgp>bySByhGy~e*cF53i-H6vddYC5o2s!!JrUD$R?Yl z%b#rGsZZTeW|&$Ff&|$J@A(8PoAdmx{)8%DFW?tU!IL3ugee?m6vdUQhMy!1c(+1v z5?<?n{8iiz8%&7u!l|M>nx<guBP@h<lZP14CT2>=-!4FS_o35OG>$<xQRS-_+*?); z*SV*a>E0DG+=8QIH^wJ4{1Y7KsOmCjzvXXVoz{!z2;$lKyrCu?&T;Fp7QN3`&12Wt z%>CEn)Qq<7n2!x&`Um|C4WIBP?jo9--Kt$SF$sAU?X`}aHWW3eC2JdDQ(=GWko9<e zIgUmt(oH$Vxcl)Enwz+=9(r1Ko#HK2()zo6bHSgReOt64YEs<Xozsj~_5l_dXpG?h eC5S4|Y+vv<3^O8!Xo#!~fVzsda<QUi(Ek8k>wbCw diff --git a/android/playground/app/src/main/res/raw/beep.ogg b/android/playground/app/src/main/res/raw/beep.ogg deleted file mode 100755 index 14199476a89093b575f6ef388febe417b5cd003b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6401 zcmb7Id010N*Pk205(EqoRuRJ@5(Fd=lu+y&Srj551j3F&fGPqigt!*HtO5!mghdDx zEUN{@B`R7mD2oe3APu0XY_eFa;)-vz@=b#6(|&(^@B7_n?%Z?F%$#%2ne&@DbGK~Y z?gKF3>or1gvXGE8-;~dYKC*Xr0xOy=VIa<pk_P~DTM+5<DzZf~@~=xWQquBoHIsEq zT^Ig-os?OWV+WfzZ25*5zT21MM`Tf0#9(VHD_b&|ye^bz$_i&kMG|-KA_he7*<raQ zVf!jJF*cgzC;bGHL=PgnD96On$qxYv0HB8M+U;m>9uojO0F{mFiVoemG5_>Xa{VU4 zp-c%i(YUGiU}g)XUf!tFJ#-)P*hEUC1^`%qk`zi4Mjd~>F|V&PrRuF~)+M3Rv#hu} z>FWz01<e{1Ja+tb{j|P<a-b}LKB6fYq!Add2I+rRq?!^|HmSCRb&pi1$L=O~5mQy{ zXQ~Ul9C4&-FS=PnHJ3rR7zkp&ydnRD{c6KUVjA8N3i-2=+ChZh0-2FgrbP0hyhXE! z0F_woc9L-ayk1YAUe9a22dXQ*)mHXdTZkC8J~r!_zAj>4rav<@bYGl!Z=AR&ZqQFk z_{9ZYjvM}Gk(y3KK&25i--wiNNXnnE%g3f=G-5!c#3hxc*%NlT&s=j?M(2NbplEwm zY5l3vnT85QX%~RNE|P0>fA;kL-0cVQrFCgtbZPB>TWCA(m;oB}Wmml3V%d~nEHCx& z9RTN)#xU+mFyF+cbg>;aB|3K{y5Hsc-sOiZ`EwHBw8M+0Ztmja&{g2@K;8C%h|;6( z;Z5-n{TIcDkSvWCXox}icSSo<1)IEZsasGeR=Y~UNoi3N?2uXYj9A)R`nHFvQaV}L zKqwQnW%-t^YH27bV+*O%yjY>m1dlBw-8<D$d8)UREp$^Vty!cFsFle#HS|NC&NNS@ zQzsnui|#L#Z+I90#|HM6PSv*%AeF@}Tg7kjU6dyk$`&?k<q6xUV{k;)qq3M5Tqvae z9m#vygOl)}-meu-8a^~QZ{b7Qo#iRSq+B@`!JyWlKtJ(>N<k(04yjr{CwC*gA=Qha zv#KUBMQS+_fHeHyqu3xro0Vx$$4gK&tFO+_HoIqfvD^B-xuj~mEwrC)zKwTMB46sK zo7;;0B69ds73{NA*O(gqK+x(M7~rIuMMS|#B}V3LkkgUkBcmh%qM|ZI@$VBiXZ%2Q zdEej4gV%a6m>1(&8q7@py>WrXoZ&0!p+lUJ!K9JFoNZbeQGrGOD2t{;OMnDUQaEy1 z$H`s1R8L3T;sk$1&Zc-m*Gav*Cyh5>F!ty-?|DPn@|M!4?gGQbM<cXPgCo+6@>v@y zvW*fkqr`io9$t<LzLFGpIca46Z)K44cjQ3W7*ca5T>puj+;O{HBe#6xz<d)aavDxm zJa0JtzmQY8BfG97yDl?(Iy2Wat0+3F^i0d?*n4MZul>jJ7jhtAU~yp>yZi$=0<xYH z1kVL?kGG39uJ41ZL!yh;-zNY7L7viP$x>qM&9D$NY{d)<rtf;@f4amHXhFvoN>^HC z`;WSZ?v}LYAKG!;QR(1p2|M>-&vC;$@h|W;nFp2>8etFQoN~^LhfZ?=c(`_Ir|LO% z8%*=6JsHn<KlXd?<gvN-^yM{#n0x#meOa6NYlT$!dYo~Of9a7oonNcF1TF@9;N6T@ zR1Q=H&IrIO7}Vr3TuD>B1Qk*ZFG6Tg%VpoAPV!Rw-5Pl8ek$oCL-Lv+bbHS86;es% zX>eP^=)v1O4MGJA;xRy_>$QWM$l1G};{DFOkF&lnG1N`u?xXI)6gzt}J^cA`eZEn_ z{S?tJ@YUAam+5UA_t2L){J~vR<S{6Y^Ja2_FUN)Nj~kv}FS-O@<DMjj2Jee|I3E=} zn6pVL${&j2c=(Isd^mBT>MnyCO#dPmabc8y5ocRr)RRHyK8}l+8|ux83N8#C*&7u& z?=kqE!z@aNtz%a>q1wAf)>S}7+hD7I)I+UZPu3nDo=@K{{i;5uZJ%$bh{=I^hX*90 z{P|Ik^RO^(#6R@m2V3vN&^~5VU?MZnFY4iZXy6BqH!~@?FiO%oA2*_v@o*q%EHN}x zBH1tSL(=eI;p6~k?4!HrGBl7Q;v|iH;A}s|3H|6Y_&$kQloY{_+V(Mhq~TNN>*Ht6 z%%1s8@uu1RTg^+ZzkS@ghRYfL824oR<JJ?eCq8$cj2XT~p1sU|+<Mmh=3AS?Q2_^Q zqlar}f4}zpTI-tGYvjkR=Lk&kATxMvhPW_&Li6y%P|}#)#=jJW4<(K4KODZlV(@a# z*oUNhv9lXjeE-9n?rS-}ed<j3WIw$xS2(AHg8?Op4XY|8g6;)Fkf{#B@ChnpSp$X= zTn}ng9O<eNc<brv$Zj`WO|>T7&4Q)mI90;!rjn|-MUEtkbhV%*HSL=8=qA2j%ub5| zJUyn0tL;Rxs2$kp-Xzu~%Neje=~Fzoy1|A4>*@ML6~?bbxSj7jUrmUZ<Z+ek&6cNe z>1O0YE=#GQ-H(yYul9|IIX|fxA*|wRZZ<m)8{){5+7aDUiE`ee@&WiQelS3xD5_}# z6h$I+bW`1+DEk>xIKthcLzAA>1Vxb=I-n?vjsPb&iy|(|g48j@>Tc;M3YM?p=h2VD z&ka6Ky)v*<xu!i}QTcKH2W^RR?agMka73K#hexbND!(XZ=lLnkhzI=1ff(V9x`CY@ z=O-Vry4O!>NA|SHFLi_lYC4g~mj`ynk*D;&Dklv<Q5FM_V1rb-SQpwcFa&)y2t_q? zl*S0#x=JFpSPbYzbg%Cyis@;YFAdIvP*;Lk9=60w4#E~Eg>9N?hjyBrK_{=Em)Ksy zW|(#IQuF8?C2TzX9xv64PCo@HHxf6WPH#$Q(CH0)2wO!7Y-4-50eY2^MTcev(6)H< z`){4SZKEEZH-4b*B7&&gE8+A}nBvP8iyRoh5{@rZ%;7vymn24mF!JZ6eK-&f9->4E zXZS;sh{7D?M8S1FoFnB7#6<*1I1ew!g;IAtfr!w`2rqeb?d7M|HA-D`?lM52t_M)X z*ns6@)jQ0arC%inK)8~loI$#hBg_i9j;^GY0E7t;Koq1|d+oSG2Sk`@65E4fn&4*1 zYJe4_GU(FR|ErSjs{ijw1I+l3fzgGq+rKKTa*0Sz&uGMgTQDh)fH7+S+_?G|t4ZxN z2E(nUa3gt|$jxWao0vj3*P5DvpkwC~JmD<xHG_}CU<}%6(WxEr0!C?23>i|UH8t81 zjpTtKC$|Q^cEoYp!5{|g0<CG8&u1JXcZS5gY$+aKHS(umcCwzY8PQ}r{g^!`=`7^K z?AxoUBOvB1RetOc0v;=?06cE3usJ``&rUZ)>Lz1=(lW`NJhlo1urr+u#YppESJGEr zTHaS)6_;VX$Xm(vf)JJTgFO1(#jz5nEl>Q)Bh^UcNm@xYFzGg3%vQLt^(&?J7sdFq zUp0gNbp#xSGmwszR8?sbDH2MeS4x@H5CGUS3b({CY<Z+_U|Nnz$bKLVe3&W|g+Z~T zjS@#^+#$9TGZaZ3JiZbsRj<~al*TO-k~1<3G=rCD$iQqCFG-y+$rw|sJOs!q;23}w zo?PXWrhxxZAh>$<5<KlVMrOD=o6BY4#58a6a$s(0^-PAA(Yf(ahiszGXo}@ad%Pn) z1>Zgn6kP>vxOEP%Ggdtw#g?CD$V(4waKT&(K$jd|wNG!;(Jpz{%sUEhZZLxaU<e50 zfgl{?>`dwE8+(nY8Cp9s)TB+43X5IL`Xz@%ELM8z!zLOoHcL)@5`Ho7WsxSucEM=D zVu1p0i-pzjNi;KO*e4z=)2=LQ4Cd%_E}UH^xZ>1-aAZ``o1CS$^BWnDbCm0Avxm2! zwqT)UU9;v~*}Cp9gi^8F1ywqI50(F^Y@5am`iT*>c?QKJmqxZ$|Mo@jO-{glwM!1= znO$a+ycMiWlgONXTEPD2id|kbyW3giUvfPnV<;CaC5Cr8t^mr*G)G$s<^YH_2eG{i ze6-@~a)7HM0wG%^01ZZ0AsC=u30!enBfaN}I7lKwJmV*mZC|ea4Wh+!tSFH|4Mxi^ zdCM06gr+XA59DNs*6%aIC>*O#1)7Aa>W+Fl=6-A)_eTxiyN9wi3Ql>@Xs$G`%%j=h zY}rizS=+;j-&{NJs3-2)jZ4SNi;J&xtd4(G^6FFTtEGF%&*q9>$Sj;?m)zn`@dp|; z$nU~#e4f9rPC29Oe5Q?{ViM?Z*V9^P{5yH%M4_K<%hqY0k8YTwBS<LFcuq9OC>=Ld zy6bS!vB`R&>3YyWDR7cSZ>fMa_g0)h^(;Ysj>v|3<l9Ize5=g2O|6fU(PpAu!sf$E z4KI=|D2dF!-13Oke(Ku?fJ(2xCB-vL77)#w(=GvUQJDgF+O>wrG5DgsAUD&FRU3_n z6<}hKJ=<<!O~E5d9zYULnAzN@)@O{~Cn1%D$c$@Yb~kihQBt_43Gi56WEu55vj_ux zLB`$asY+D>ZA5L98;{qlbxF1XK~v6XrUHhbpyD{!;jLJu#y!n#l%<Oe6f6}yofY@o z7(D|7OBH1Gf<H8C;fPMhRH<<?*zmob`JKd$1G0)r89&|hRkl0&uYn!zWj|_gu_>R8 z0;%#T$$JzF`#6f>w2zyfr8tlKs7DAwBGVkL5gFqH_Q#O(PF&<dk1ETpmtc=W4_Bz- z#w!qZxN^yw$zZa~6ackKuS~x*J{{74r%rc$#@w=#JI;!up)<f96kCMV3i~u)2jt)n z5%drkLx7znDr-z5eh(3bVn6b+lr$9V5A8;lp_@@tq#P(91n?Gs>SU~IrNtch?BD?i zvbc>QKf6Ye11?`LB6?j925Ft`h~RxV(vkm3whe@B!<5dCW~)U7@j%7~Z|;wR^@1Sl z+|@23%+lu@@!8Sdir9{hDzoRN*{Mb}QWh7J?8G$9E;}=BXAZoao#S~$M1lYZ_80*a z3{5`le%_E~8T0;d-L)*c_-DUO?5Y5HCVjC9TDfjpPbqvmIp_R?otlwJ)7Hbdgn-AG z)4qF6^1bkp%_l<p6fw!FCPM}E9B0<ieOf22_g!44yW%EQ_xDeqz6%p}efP^Vty>F9 z<>~v7FF&_Fu0(r@LvAar?jAEg@6a>;;E#JM4F|=Zdw@!F-cIEZ1UfBEuCy7h8J1`u zq6xRl2?YU5=7^EN(;Y{<4I}IXPi8H+0{k(?z=Vd(aQEQemPPo+&&`nD9XSC;313`) zQO;Oa)+Bf@GBh1B0AW;zne@)xAqY4_xP%#8lIHGz#hkFNKhqHTLqAM)Hk*A)6WK6) z#7;KHnUGp}bqk8A^2Y3+^v<rdPS5peW@J}Z)TjD9Zp2(o7zZ62v3o2v|443-`yHW` zK5KiOe-Ce!ay}2UQgfQwhPPtzjcjxDb-M6F!S$~;V@+;{7~lSa>Z^zMe=^juCW8LA z+2zTIYWPX_gh&tK)E^hYr99Ostv73M#Bt!IXyf?i3IbTG!M8VBW7P<FOV<MhDI<4h zgBsf|!Btj%l(v&-+bi*sxj;>2$=v&8K$Er~qVPK~B-pluw&n9GL|I({%}S8Lj_Qss z4_j7=lSG#qAclk(s%~|g8CeR|D2<mWzCc+epU0QCH2`pb%4%hR?_;&hFua~|1JO?5 za^Yzua21DlZCZWn7T;91l>KW8UMJ}8QShX018upX7WWoCnZZ?+S5zeAQ8$phEa}OU z7zN>41}ajw@LFRnt9Y7mw_1FascFCJg3rwP`?aheMk1VmPHD>_izc9L>Z$Vu*J=Lr z_G-_lnM3WjGKpJ*Y$L2v!k5;yv3S8=Ka$!#H$FGMzQbnpb0>?a^V{;1_%S6_HA<Fi zZ)fkSM2}EQ!BWiU93wEf4@jV>4F4m9=mpIM=V|Q{`h}Ntyn1@k=ef|V3_1;T>kfgJ zuSO7TucpE+MF8rN@3it@h{cA0=H%;T=qykhoyI1HVQ_N=R2tZYoP~dy+))g%P!3bM zp=^a)!u7+v{TW|oBLTrh_HbKRbI^E4U|_T9$Il%IcY~<^S|X_}?@=@YlG@{ELR`Gp z?w}@jR8r1jykxw-J-wRFjfv0B_r|64es&aW5JwZPo{PbyR4Uq;Dic<ED$AyfZcIBJ zHj#b0LV46~ohm{<Krp?xk<it$XSr;pC+$(j56cp-YJvV=e&^mkpb>AJIoU3pu2-XZ zzgQY>l@hrw9^2{}!EFvO%y#<_&MnjCTI~JOswz_;>#Vng{CVXF03sbU+u+-;2=pSh zTh<b^pB0uy|70iqDXW4P)W|qU!m81u*Iu%4VFzBA?10Z4B{WiIw+2w(jv?YPm`d|0 zR7D_5(*y{Lry+Uz0Hxpoa!F1fT~h~8pN~Yb_0yK87Dd&kE#!Mw0<=&ZHsgL%6ZCc| z%DZ&%c{Q4Cz422-H3C|Is9rg1R~&;^Y}b#@a(ag6_+ado5#%QYBz#7Zmz}>CFU4tj z<w>IBSa<R`A=ayMDAUXCZ50s8;RP;0a0E3a2!DQtJgGYRWkW>yKDE?|p1MOSAm8}n zi@NUwD7S%ZZF=7BoMHwTKT-b6_3V=dDC_!3Z>DyDL;3R5a~9{j1jbtanc90rZga6& z<;d)nT7h78J_lCYZN}dlouf3yzH|R@eX9zQ_-=0K`G~4v<Mjut0r+KFY$A|j$Q=5{ z0|h&1lqCV^4OKJnU|~W<l0e|at^&{R_rbrmG|cxp#bAwWrIsXpC|Lz)SNGpM3Ty_V zLPdXUe05{~-Mg~{ZS$x*Lr;qpyzsV+TdK|{6JlGHH^k`bzB~No0yiyVHD{zJe8chY zD+wF!r(~{ad-V2&saRY<UU*t~k<pHf8Zj#0%VpVl9W)`6)#ixH_T<ftWsgQeFglRH z7zQLTjyz2#KcHV;+W#-cn&)TQ(CKqWC;15)Hb>Htn(>I@6T1}Ez1vj`obs2sV{PvE zvod0@x1n!sGTiAu-C5>z47|G-2;>ZncbLfn{5J_H`$;5~r_AIZmRg}t^Z=!H<P9kJ znCi3o({%gV?^O-J0$!#1v&?~9`xQ4=p1r9U;BmXDnzfm-(xLW;IWU~4jn{9~n210S zwmqE)X1^(-ZL2^Z)MMR`?%WO9O;Uy1uWHLuPIr+74$d>_C@RW1*8KgKy87vce*xdu z)8}$V=hffY_=m_0%Pc`(*d*nfsI+q5{9ISPHj7$Hp(d=od8EgLsv;^rcr^X^zKP=9 z;`*S`5beano5(2XXwQw;m+R+OJ?N*77W<Lq^{p6jDuA}k?Tz;r((s`NR;`49SAzMi Q!3(l<w0I|Y!;u01144^n5dZ)H diff --git a/android/playground/app/src/main/res/values-v21/styles.xml b/android/playground/app/src/main/res/values-v21/styles.xml deleted file mode 100755 index 9bd9d5933e..0000000000 --- a/android/playground/app/src/main/res/values-v21/styles.xml +++ /dev/null @@ -1,31 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<resources> - - <style name="AppTheme.NoActionBar"> - <item name="windowActionBar">false</item> - <item name="windowNoTitle">true</item> - <item name="android:windowDrawsSystemBarBackgrounds">true</item> - <item name="android:statusBarColor">@android:color/transparent</item> - </style> - - <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> - <item name="elevation">0dp</item> - </style> -</resources> diff --git a/android/playground/app/src/main/res/values-w820dp/dimens.xml b/android/playground/app/src/main/res/values-w820dp/dimens.xml deleted file mode 100755 index ec087276de..0000000000 --- a/android/playground/app/src/main/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,24 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<resources> - <!-- Example customization of dimensions originally defined in res/values/dimens.xml - (such as screen margins) for screens with more than 820dp of available width. This - would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> - <dimen name="activity_horizontal_margin">64dp</dimen> -</resources> diff --git a/android/playground/app/src/main/res/values-zh-rCN/strings.xml b/android/playground/app/src/main/res/values-zh-rCN/strings.xml deleted file mode 100755 index e912d803ab..0000000000 --- a/android/playground/app/src/main/res/values-zh-rCN/strings.xml +++ /dev/null @@ -1,154 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2014 ZXing authors - - Licensed 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. - --> -<resources> - <string name="app_name">WEEX</string> - <string name="app_picker_name">应用</string> - <string name="bookmark_picker_name">书签</string> - <string name="button_add_calendar">添加至日程表</string> - <string name="button_add_contact">添加联系人</string> - <string name="button_book_search">打开图书搜索</string> - <string name="button_cancel">取消</string> - <string name="button_custom_product_search">自定义搜索</string> - <string name="button_dial">拨打电话</string> - <string name="button_email">发送 E-mail</string> - <string name="button_get_directions">获取地址</string> - <string name="button_mms">发送彩信</string> - <string name="button_ok">确定</string> - <string name="button_open_browser">打开浏览器</string> - <string name="button_product_search">打开商品搜索</string> - <string name="button_search_book_contents">搜索图书内容</string> - <string name="button_share_app">分享应用</string> - <string name="button_share_bookmark">分享书签</string> - <string name="button_share_by_email">通过 E-mail 分享</string> - <string name="button_share_by_sms">通过短信分享</string> - <string name="button_share_clipboard">分享剪切板</string> - <string name="button_share_contact">分享联系人</string> - <string name="button_show_map">显示地图</string> - <string name="button_sms">发送短信</string> - <string name="button_web_search">网页搜索</string> - <string name="button_wifi">连接到网络</string> - <string name="contents_contact">联系人信息</string> - <string name="contents_email">E-mail 地址</string> - <string name="contents_location">经纬度</string> - <string name="contents_phone">电话号码</string> - <string name="contents_sms">短信号码</string> - <string name="contents_text">纯文本</string> - <string name="history_clear_one_history_text">删除</string> - <string name="history_clear_text">删除历史记录</string> - <string name="history_email_title">条码扫描器的历史</string> - <string name="history_empty">空</string> - <string name="history_empty_detail">没有历史记录</string> - <string name="history_send">发送历史记录</string> - <string name="history_title">历史记录</string> - <string name="menu_encode_mecard">使用MECARD</string> - <string name="menu_encode_vcard">使用vCard</string> - <string name="menu_help">帮助</string> - <string name="menu_history">历史记录</string> - <string name="menu_settings">设置</string> - <string name="menu_share">创建二维码</string> - <string name="msg_bulk_mode_scanned">批量扫描模式:条码已扫描并保存</string> - <string name="msg_camera_framework_bug">很遗憾,Android 相机出现问题。你可能需要重启设备。</string> - <string name="msg_default_format">格式</string> - <string name="msg_default_meta">元数据</string> - <string name="msg_default_mms_subject">Hi</string> - <string name="msg_default_status">请将条码置于取景框内扫描。</string> - <string name="msg_default_time">时间</string> - <string name="msg_default_type">类型</string> - <string name="msg_encode_contents_failed">无法生成条码。</string> - <string name="msg_error">错误</string> - <string name="msg_google_books">Google</string> - <string name="msg_google_product">Google</string> - <string name="msg_intent_failed">抱歉,无法打开应用。条码内容可能无效。</string> - <string name="msg_invalid_value">值无效</string> - <string name="msg_redirect">重定向</string> - <string name="msg_sbc_book_not_searchable">抱歉,无法找到此图书。</string> - <string name="msg_sbc_failed">抱歉,搜索时遇到错误。</string> - <string name="msg_sbc_no_page_returned">无页面返回</string> - <string name="msg_sbc_page">页面</string> - <string name="msg_sbc_results">结果</string> - <string name="msg_sbc_searching_book">搜索图书…</string> - <string name="msg_sbc_snippet_unavailable">摘录不可用</string> - <string name="msg_share_explanation">您可以通过在自己的手机上显示条码,并使用其它手机扫描此条码的方式进行分享</string> - <string name="msg_share_text">或键入一些文字</string> - <string name="msg_sure">确定吗?</string> - <string name="msg_unmount_usb">抱歉,无法访问 SD 卡。</string> - <string name="preferences_actions_title">扫描成功</string> - <string name="preferences_auto_focus_title">自动对焦</string> - <string name="preferences_auto_open_web_title">自动打开网页</string> - <string name="preferences_bulk_mode_summary">连续扫描并保存多个条码</string> - <string name="preferences_bulk_mode_title">批量扫描模式</string> - <string name="preferences_copy_to_clipboard_title">复制到剪贴板</string> - <string name="preferences_custom_product_search_summary" formatted="false">替换:%s=内容,%f=格式,%t=类型</string> - <string name="preferences_custom_product_search_title">自定义搜索网址</string> - <string name="preferences_decode_1D_industrial_title">一维码:工业</string> - <string name="preferences_decode_1D_product_title">一维码:商品</string> - <string name="preferences_decode_Aztec_title">Aztec</string> - <string name="preferences_decode_Data_Matrix_title">Data Matrix</string> - <string name="preferences_decode_PDF417_title">PDF417 (测试)</string> - <string name="preferences_decode_QR_title">二维码</string> - <string name="preferences_device_bug_workarounds_title">设备适配</string> - <string name="preferences_disable_barcode_scene_mode_title">不进行条形码场景匹配</string> - <string name="preferences_disable_continuous_focus_summary">使用标准对焦模式</string> - <string name="preferences_disable_continuous_focus_title">不持续对焦</string> - <string name="preferences_disable_exposure_title">不曝光</string> - <string name="preferences_disable_metering_title">不使用距离测量</string> - <string name="preferences_front_light_auto">自动</string> - <string name="preferences_front_light_off">关</string> - <string name="preferences_front_light_on">开</string> - <string name="preferences_front_light_summary">设置闪光灯模式</string> - <string name="preferences_front_light_title">闪光灯</string> - <string name="preferences_general_title">扫描设置</string> - <string name="preferences_history_summary">自动将条码存入历史记录</string> - <string name="preferences_history_title">存入历史记录</string> - <string name="preferences_invert_scan_summary">扫描黑色背景上的白色条码。仅适用于部分设备。</string> - <string name="preferences_invert_scan_title">反色</string> - <string name="preferences_name">选项</string> - <string name="preferences_orientation_title">不自动旋转</string> - <string name="preferences_play_beep_title">播放提示音</string> - <string name="preferences_remember_duplicates_summary">在历史记录中保存重复的记录</string> - <string name="preferences_remember_duplicates_title">保存重复记录</string> - <string name="preferences_result_title">搜索设置</string> - <string name="preferences_scanning_title">条码类型</string> - <string name="preferences_search_country">搜索引擎国别</string> - <string name="preferences_supplemental_summary">尝试检索关于条码内容的更多信息</string> - <string name="preferences_supplemental_title">检索更多信息</string> - <string name="preferences_vibrate_title">振动</string> - <string name="result_address_book">找到联系人信息</string> - <string name="result_calendar">找到日程</string> - <string name="result_email_address">找到电子邮件地址</string> - <string name="result_geo">找到地理坐标</string> - <string name="result_isbn">找到图书</string> - <string name="result_product">找到商品</string> - <string name="result_sms">找到短信号码</string> - <string name="result_tel">找到电话号码</string> - <string name="result_text">找到纯文本</string> - <string name="result_uri">找到 URL </string> - <string name="result_wifi">找到 Wi-Fi 配置</string> - <string name="sbc_name">Google 图书搜索</string> - <string name="wifi_changing_network">连接到 Wi-Fi \u2026</string> - - <string name="cpu_not_support_tip">对不起,您当前的设备是X86架构.\n我们只支持ARM架构的设备!</string> - <string name="update_found_new_version">发现新版本</string> - <string name="update_downloading">正在下载更新</string> - <string name="update_progress">进度:</string> - <string name="update_now">立即更新</string> - <string name="update_remind_later">稍后提醒</string> - <string name="update_version">版本号:</string> - <string name="update_date">更新日期:</string> - <string name="update_desc">更新内容:</string> - -</resources> diff --git a/android/playground/app/src/main/res/values/attrs.xml b/android/playground/app/src/main/res/values/attrs.xml deleted file mode 100755 index 6a3624e3ef..0000000000 --- a/android/playground/app/src/main/res/values/attrs.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<resources> - <declare-styleable name="CircleImageView"> - <attr name="border_width" format="dimension"/> - <attr name="border_color" format="color"/> - <attr name="border_overlay" format="boolean"/> - </declare-styleable> - - <!-- Declare custom theme attributes that allow changing which styles are - used for button bars depending on the API level. - ?android:attr/buttonBarStyle is new as of API 11 so this is - necessary to support previous API levels. --> - <declare-styleable name="ButtonBarContainerTheme"> - <attr name="metaButtonBarStyle" format="reference"/> - <attr name="metaButtonBarButtonStyle" format="reference"/> - </declare-styleable> -</resources> \ No newline at end of file diff --git a/android/playground/app/src/main/res/values/colors.xml b/android/playground/app/src/main/res/values/colors.xml deleted file mode 100755 index c115dc1bd4..0000000000 --- a/android/playground/app/src/main/res/values/colors.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -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. ---> -<resources> - <color name="colorPrimary">#00B4FF</color> - <color name="colorPrimaryDark">#00B4FF</color> - <color name="colorAccent">#FF4081</color> - - <color name="black_overlay">#66000000</color> -</resources> diff --git a/android/playground/app/src/main/res/values/dimens.xml b/android/playground/app/src/main/res/values/dimens.xml deleted file mode 100755 index 84d904afc0..0000000000 --- a/android/playground/app/src/main/res/values/dimens.xml +++ /dev/null @@ -1,28 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<resources> - <!-- Default screen margins, per the Android Design guidelines. --> - <dimen name="nav_header_vertical_spacing">16dp</dimen> - <dimen name="nav_header_height">160dp</dimen> - <!-- Default screen margins, per the Android Design guidelines. --> - <dimen name="activity_horizontal_margin">16dp</dimen> - <dimen name="activity_vertical_margin">16dp</dimen> - <dimen name="fab_margin">16dp</dimen> - <dimen name="text_margin">16dp</dimen> -</resources> diff --git a/android/playground/app/src/main/res/values/drawables.xml b/android/playground/app/src/main/res/values/drawables.xml deleted file mode 100755 index bab12273ef..0000000000 --- a/android/playground/app/src/main/res/values/drawables.xml +++ /dev/null @@ -1,26 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<resources xmlns:android="http://schemas.android.com/apk/res/android"> - <item name="ic_menu_camera" type="drawable">@android:drawable/ic_menu_camera</item> - <item name="ic_menu_gallery" type="drawable">@android:drawable/ic_menu_gallery</item> - <item name="ic_menu_slideshow" type="drawable">@android:drawable/ic_menu_slideshow</item> - <item name="ic_menu_manage" type="drawable">@android:drawable/ic_menu_manage</item> - <item name="ic_menu_share" type="drawable">@android:drawable/ic_menu_share</item> - <item name="ic_menu_send" type="drawable">@android:drawable/ic_menu_send</item> -</resources> diff --git a/android/playground/app/src/main/res/values/scan_code_arrays.xml b/android/playground/app/src/main/res/values/scan_code_arrays.xml deleted file mode 100755 index 1b34bba8f4..0000000000 --- a/android/playground/app/src/main/res/values/scan_code_arrays.xml +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<resources xmlns:tools="http://schemas.android.com/tools"> - <string-array name="country_codes" tools:ignore="MissingTranslation"> - <item>-</item> - <item>AR</item> - <item>AU</item> - <item>BR</item> - <item>BG</item> - <item>CA</item> - <item>CH</item> - <item>CN</item> - <item>CZ</item> - <item>DE</item> - <item>DK</item> - <item>ES</item> - <item>FI</item> - <item>FR</item> - <item>GB</item> - <item>GR</item> - <item>HU</item> - <item>ID</item> - <item>IT</item> - <item>JP</item> - <item>KR</item> - <item>NL</item> - <item>PL</item> - <item>PT</item> - <item>RO</item> - <item>RU</item> - <item>SE</item> - <item>SK</item> - <item>SI</item> - <item>TR</item> - <item>TW</item> - <item>US</item> - </string-array> - <string-array name="preferences_front_light_values" tools:ignore="MissingTranslation"> - <item>ON</item> - <item>AUTO</item> - <item>OFF</item> - </string-array> - <string-array name="preferences_front_light_options"> - <item>@string/preferences_front_light_on</item> - <item>@string/preferences_front_light_auto</item> - <item>@string/preferences_front_light_off</item> - </string-array> -</resources> diff --git a/android/playground/app/src/main/res/values/scan_code_colors.xml b/android/playground/app/src/main/res/values/scan_code_colors.xml deleted file mode 100755 index 07b0f96da9..0000000000 --- a/android/playground/app/src/main/res/values/scan_code_colors.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<resources> - <color name="contents_text">#ff000000</color> - <color name="encode_view">#ffffffff</color> - <color name="possible_result_points">#c0ffbd21</color> <!-- Android standard ICS color --> - <color name="result_minor_text">#ffc0c0c0</color> - <color name="result_points">#c099cc00</color> <!-- Android standard ICS color --> - <color name="result_text">#ffffffff</color> - <color name="result_view">#b0000000</color> - <color name="status_text">#ffffffff</color> - <color name="transparent">#00000000</color> - <color name="viewfinder_laser">#ffcc0000</color> <!-- Android standard ICS color --> - <color name="viewfinder_mask">#60000000</color> -</resources> diff --git a/android/playground/app/src/main/res/values/scan_code_dimens.xml b/android/playground/app/src/main/res/values/scan_code_dimens.xml deleted file mode 100755 index 3ac3025ab8..0000000000 --- a/android/playground/app/src/main/res/values/scan_code_dimens.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<resources> - <dimen name="standard_padding">8dip</dimen> - <dimen name="half_padding">4dip</dimen> -</resources> \ No newline at end of file diff --git a/android/playground/app/src/main/res/values/scan_code_ids.xml b/android/playground/app/src/main/res/values/scan_code_ids.xml deleted file mode 100755 index 4c0ccb42c6..0000000000 --- a/android/playground/app/src/main/res/values/scan_code_ids.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<resources> - <item type="id" name="decode"/> - <item type="id" name="decode_failed"/> - <item type="id" name="decode_succeeded"/> - <item type="id" name="launch_product_query"/> - <item type="id" name="quit"/> - <item type="id" name="restart_preview"/> - <item type="id" name="return_scan_result"/> -</resources> diff --git a/android/playground/app/src/main/res/values/scan_code_strings.xml b/android/playground/app/src/main/res/values/scan_code_strings.xml deleted file mode 100755 index 993cc83a4f..0000000000 --- a/android/playground/app/src/main/res/values/scan_code_strings.xml +++ /dev/null @@ -1,140 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2014 ZXing authors - - Licensed 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. - --> -<resources> - <string name="app_picker_name">Applications</string> - <string name="bookmark_picker_name">Bookmarks</string> - <string name="button_add_calendar">Add to calendar</string> - <string name="button_add_contact">Add contact</string> - <string name="button_book_search">Book Search</string> - <string name="button_cancel">Cancel</string> - <string name="button_custom_product_search">Custom search</string> - <string name="button_dial">Dial number</string> - <string name="button_email">Send email</string> - <string name="button_get_directions">Get directions</string> - <string name="button_mms">Send MMS</string> - <string name="button_ok">OK</string> - <string name="button_open_browser">Open browser</string> - <string name="button_product_search">Product search</string> - <string name="button_search_book_contents">Search contents</string> - <string name="button_share_app">Application</string> - <string name="button_share_bookmark">Bookmark</string> - <string name="button_share_by_email">Share via email</string> - <string name="button_share_by_sms">Share via SMS</string> - <string name="button_share_clipboard">Clipboard</string> - <string name="button_share_contact">Contact</string> - <string name="button_show_map">Show map</string> - <string name="button_sms">Send SMS</string> - <string name="button_web_search">Web search</string> - <string name="button_wifi">Connect to Network</string> - <string name="contents_contact">Contact info</string> - <string name="contents_email">Email address</string> - <string name="contents_location">Geographic coordinates</string> - <string name="contents_phone">Phone number</string> - <string name="contents_sms">SMS address</string> - <string name="contents_text">Plain text</string> - <string name="history_clear_text">Clear history</string> - <string name="history_clear_one_history_text">Clear</string> - <string name="history_email_title">Barcode Scanner history</string> - <string name="history_empty">Empty</string> - <string name="history_empty_detail">No barcode scans have been recorded</string> - <string name="history_send">Send history</string> - <string name="history_title">History</string> - <string name="menu_encode_mecard">Use MECARD</string> - <string name="menu_encode_vcard">Use vCard</string> - <string name="menu_help">Help</string> - <string name="menu_history">History</string> - <string name="menu_settings">Settings</string> - <string name="menu_share">Share</string> - <string name="msg_bulk_mode_scanned">Bulk mode: barcode scanned and saved</string> - <string name="msg_camera_framework_bug">Sorry, the Android camera encountered a problem. You may need to restart the device.</string> - <string name="msg_default_format">Format</string> - <string name="msg_default_meta">Metadata</string> - <string name="msg_default_mms_subject">Hi</string> - <string name="msg_default_status">请将二维码置于框内</string> - <string name="msg_default_time">Time</string> - <string name="msg_default_type">Type</string> - <string name="msg_encode_contents_failed">Could not encode a barcode from the data provided.</string> - <string name="msg_error">Error</string> - <string name="msg_google_books">Google</string> - <string name="msg_google_product">Google</string> - <string name="msg_intent_failed">Sorry, the requested application could not be launched. The barcode contents may be invalid.</string> - <string name="msg_invalid_value">Invalid value</string> - <string name="msg_redirect">Redirect</string> - <string name="msg_sbc_book_not_searchable">Sorry, this book is not searchable.</string> - <string name="msg_sbc_failed">Sorry, the search encountered a problem.</string> - <string name="msg_sbc_no_page_returned">No page returned</string> - <string name="msg_sbc_page">Page</string> - <string name="msg_sbc_results">Results</string> - <string name="msg_sbc_searching_book">Searching book\u2026</string> - <string name="msg_sbc_snippet_unavailable">Snippet not available</string> - <string name="msg_share_explanation">You can share data by displaying a barcode on your screen and scanning it with another phone.</string> - <string name="msg_share_text">Or type some text and press Enter</string> - <string name="msg_sure">Are you sure?</string> - <string name="msg_unmount_usb">Sorry, the SD card is not accessible.</string> - <string name="preferences_actions_title">When a barcode is found\u2026</string> - <string name="preferences_auto_focus_title">Use auto focus</string> - <string name="preferences_auto_open_web_title">Open web pages automatically</string> - <string name="preferences_bulk_mode_summary">Scan and save many barcodes continuously</string> - <string name="preferences_bulk_mode_title">Bulk scan mode</string> - <string name="preferences_copy_to_clipboard_title">Copy to clipboard</string> - <string name="preferences_custom_product_search_summary" formatted="false">Substitutions: %s = contents, %f = format, %t = type</string> - <string name="preferences_custom_product_search_title">Custom search URL</string> - <string name="preferences_decode_1D_industrial_title">1D Industrial</string> - <string name="preferences_decode_1D_product_title">1D Product</string> - <string name="preferences_decode_Aztec_title">Aztec</string> - <string name="preferences_decode_Data_Matrix_title">Data Matrix</string> - <string name="preferences_decode_PDF417_title">PDF417 (β)</string> - <string name="preferences_decode_QR_title">QR Codes</string> - <string name="preferences_device_bug_workarounds_title">Device Bug Workarounds</string> - <string name="preferences_disable_barcode_scene_mode_title">No barcode scene mode</string> - <string name="preferences_disable_continuous_focus_summary">Use only standard focus mode</string> - <string name="preferences_disable_continuous_focus_title">No continuous focus</string> - <string name="preferences_disable_exposure_title">No exposure</string> - <string name="preferences_disable_metering_title">No metering</string> - <string name="preferences_front_light_summary">Improves scanning in low light on some phones, but may cause glare. Does not work on all phones.</string> - <string name="preferences_front_light_title">Use front light</string> - <string name="preferences_front_light_auto">Automatic</string> - <string name="preferences_front_light_off">Off</string> - <string name="preferences_front_light_on">On</string> - <string name="preferences_general_title">General settings</string> - <string name="preferences_invert_scan_title">Invert scan</string> - <string name="preferences_invert_scan_summary">Scan for white barcodes on black background. Not available on some devices.</string> - <string name="preferences_name">Settings</string> - <string name="preferences_orientation_title">No automatic rotation</string> - <string name="preferences_play_beep_title">Beep</string> - <string name="preferences_remember_duplicates_summary">Store multiple scans of the same barcode in History</string> - <string name="preferences_remember_duplicates_title">Remember duplicates</string> - <string name="preferences_result_title">Result settings</string> - <string name="preferences_scanning_title">When scanning for barcodes, decode\u2026</string> - <string name="preferences_search_country">Search country</string> - <string name="preferences_supplemental_summary">Try to retrieve more information about the barcode contents</string> - <string name="preferences_supplemental_title">Retrieve more info</string> - <string name="preferences_vibrate_title">Vibrate</string> - <string name="result_address_book">Found contact info</string> - <string name="result_calendar">Found calendar event</string> - <string name="result_email_address">Found email address</string> - <string name="result_geo">Found geographic coordinates</string> - <string name="result_isbn">Found book</string> - <string name="result_product">Found product</string> - <string name="result_sms">Found SMS address</string> - <string name="result_tel">Found phone number</string> - <string name="result_text">Found plain text</string> - <string name="result_uri">Found URL</string> - <string name="result_wifi">Found WLAN Configuration</string> - <string name="sbc_name">Google Book Search</string> - <string name="wifi_changing_network">Requesting connection to network\u2026</string> -</resources> diff --git a/android/playground/app/src/main/res/values/scan_code_styles.xml b/android/playground/app/src/main/res/values/scan_code_styles.xml deleted file mode 100755 index 9d89329a4e..0000000000 --- a/android/playground/app/src/main/res/values/scan_code_styles.xml +++ /dev/null @@ -1,48 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<resources> - - <!-- - Base application theme, dependent on API level. This theme is replaced - by AppBaseTheme from res/values-vXX/styles.xml on newer devices. - --> - <!--<style name="AppBaseTheme" parent="android:Theme.Light">--> - <!--<!–--> - <!--Theme customizations available in newer API levels can go in--> - <!--res/values-vXX/styles.xml, while customizations related to--> - <!--backward-compatibility can go here.--> - <!--–>--> - <!--</style>--> - - <!--<!– Application theme. –>--> - <!--<style name="AppTheme" parent="AppBaseTheme">--> - <!--<!– All customizations that are NOT specific to a particular API-level can go here. –>--> - <!--</style>--> - - <style name="ResultButton" parent="@android:style/Widget.Holo.Button.Borderless.Small"> - <item name="android:layout_width">0dip</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:layout_weight">1</item> - </style> - <style name="ShareButton" parent="@android:style/Widget.Holo.Button.Borderless.Small"> - <item name="android:layout_width">wrap_content</item> - <item name="android:layout_height">wrap_content</item> - </style> - -</resources> diff --git a/android/playground/app/src/main/res/values/strings.xml b/android/playground/app/src/main/res/values/strings.xml deleted file mode 100755 index f3160cbae2..0000000000 --- a/android/playground/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,51 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<resources> - <string name="app_name">WEEX</string> - - <string name="navigation_drawer_open">Open navigation drawer</string> - <string name="navigation_drawer_close">Close navigation drawer</string> - - <string name="action_settings">Settings</string> - <string name="hello_blank_fragment">Hello blank fragment</string> - <string name="title_activity_main2">Main2Activity</string> - <string name="title_activity_wx_main">WXMainActivity</string> - - <string name="title_activity_splash">SplashActivity</string> - <string name="dummy_button">Dummy Button</string> - <string name="dummy_content">WEEX\nPLAYGROUND</string> - - <string name="cpu_not_support_tip">Sorry, your current device is x86 architecture.\n We only - support arm architecture devices! - </string> - - <string name="index_tip">Network Error!\n1.Make sure you use the command "npm run serve" - launched local service\n2.Make sure you modify "your_current_ip" to your local IP in - "WXMainActivity" - </string> - <string name="title_activity_dynamic">DynamicActivity</string> - <string name="update_found_new_version">New version is available</string> - <string name="update_downloading">Downloading updates</string> - <string name="update_progress">Progress: </string> - <string name="update_now">Update Now</string> - <string name="update_remind_later">Remind Later</string> - <string name="update_version">Version: </string> - <string name="update_date">Date: </string> - <string name="update_desc">Updates: </string> -</resources> diff --git a/android/playground/app/src/main/res/values/styles.xml b/android/playground/app/src/main/res/values/styles.xml deleted file mode 100755 index 52fd8ac943..0000000000 --- a/android/playground/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,52 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<resources> - - <!-- Base application theme. --> - <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> - <!-- Customize your theme here. --> - <item name="colorPrimary">@color/colorPrimary</item> - <item name="colorPrimaryDark">@color/colorPrimaryDark</item> - <item name="colorAccent">@color/colorAccent</item> - </style> - - <style name="AppTheme.NoActionBar"> - <item name="windowActionBar">false</item> - <item name="windowNoTitle">true</item> - </style> - - <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> - <item name="elevation">0dp</item> - </style> - - <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/> - - <style name="FullscreenTheme" parent="AppTheme"> - <item name="windowActionBar">false</item> - <item name="windowNoTitle">true</item> - <item name="android:windowActionBarOverlay">true</item> - <item name="android:windowBackground">@null</item> - <item name="android:windowFullscreen">true</item> - </style> - - <style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar"> - <item name="android:background">@color/black_overlay</item> - </style> - -</resources> diff --git a/android/playground/app/src/main/res/values/themes.xml b/android/playground/app/src/main/res/values/themes.xml deleted file mode 100755 index 4b8e2be8e8..0000000000 --- a/android/playground/app/src/main/res/values/themes.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright (C) 2012 ZXing authors - - Licensed 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. - --> -<resources> - <style name="CaptureTheme" parent="android:Theme.Holo"> - <item name="android:windowFullscreen">true</item> - <item name="android:windowContentOverlay">@null</item> - <item name="android:windowActionBarOverlay">true</item> - <item name="android:windowActionModeOverlay">true</item> - </style> -</resources> diff --git a/android/playground/app/src/main/res/xml/filepaths.xml b/android/playground/app/src/main/res/xml/filepaths.xml deleted file mode 100644 index 8b373df8ac..0000000000 --- a/android/playground/app/src/main/res/xml/filepaths.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<paths> - <cache-path - name="local_apk_cache" - path="."/> -</paths> \ No newline at end of file diff --git a/android/playground/app/src/main/res/xml/preferences.xml b/android/playground/app/src/main/res/xml/preferences.xml deleted file mode 100755 index ce4c74e808..0000000000 --- a/android/playground/app/src/main/res/xml/preferences.xml +++ /dev/null @@ -1,133 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> - <PreferenceCategory android:title="@string/preferences_scanning_title"> - <CheckBoxPreference - android:key="preferences_decode_1D_product" - android:defaultValue="true" - android:title="@string/preferences_decode_1D_product_title"/> - <CheckBoxPreference - android:key="preferences_decode_1D_industrial" - android:defaultValue="true" - android:title="@string/preferences_decode_1D_industrial_title"/> - <CheckBoxPreference - android:key="preferences_decode_QR" - android:defaultValue="true" - android:title="@string/preferences_decode_QR_title"/> - <CheckBoxPreference - android:key="preferences_decode_Data_Matrix" - android:defaultValue="true" - android:title="@string/preferences_decode_Data_Matrix_title"/> - <CheckBoxPreference - android:key="preferences_decode_Aztec" - android:defaultValue="false" - android:title="@string/preferences_decode_Aztec_title"/> - <CheckBoxPreference - android:key="preferences_decode_PDF417" - android:defaultValue="false" - android:title="@string/preferences_decode_PDF417_title"/> - </PreferenceCategory> - <PreferenceCategory android:title="@string/preferences_actions_title"> - <CheckBoxPreference - android:key="preferences_play_beep" - android:defaultValue="true" - android:title="@string/preferences_play_beep_title"/> - <CheckBoxPreference - android:key="preferences_vibrate" - android:defaultValue="false" - android:title="@string/preferences_vibrate_title"/> - <CheckBoxPreference - android:key="preferences_copy_to_clipboard" - android:defaultValue="true" - android:title="@string/preferences_copy_to_clipboard_title"/> - <CheckBoxPreference - android:key="preferences_auto_open_web" - android:defaultValue="false" - android:title="@string/preferences_auto_open_web_title"/> - <CheckBoxPreference - android:key="preferences_remember_duplicates" - android:defaultValue="false" - android:title="@string/preferences_remember_duplicates_title" - android:summary="@string/preferences_remember_duplicates_summary"/> - <CheckBoxPreference - android:key="preferences_history" - android:defaultValue="true"/> - <CheckBoxPreference - android:key="preferences_supplemental" - android:defaultValue="true" - android:title="@string/preferences_supplemental_title" - android:summary="@string/preferences_supplemental_summary"/> - </PreferenceCategory> - <PreferenceCategory android:title="@string/preferences_general_title"> - <ListPreference - android:entries="@array/preferences_front_light_options" - android:entryValues="@array/preferences_front_light_values" - android:key="preferences_front_light_mode" - android:defaultValue="OFF" - android:title="@string/preferences_front_light_title" - android:summary="@string/preferences_front_light_summary"/> - <CheckBoxPreference - android:key="preferences_auto_focus" - android:defaultValue="true" - android:title="@string/preferences_auto_focus_title"/> - <CheckBoxPreference - android:key="preferences_invert_scan" - android:defaultValue="false" - android:title="@string/preferences_invert_scan_title" - android:summary="@string/preferences_invert_scan_summary"/> - <CheckBoxPreference - android:key="preferences_bulk_mode" - android:defaultValue="false" - android:title="@string/preferences_bulk_mode_title" - android:summary="@string/preferences_bulk_mode_summary"/> - <CheckBoxPreference - android:key="preferences_orientation" - android:defaultValue="true" - android:title="@string/preferences_orientation_title"/> - </PreferenceCategory> - <PreferenceCategory android:title="@string/preferences_result_title"> - <EditTextPreference - android:key="preferences_custom_product_search" - android:title="@string/preferences_custom_product_search_title" - android:summary="@string/preferences_custom_product_search_summary"/> - <ListPreference - android:key="preferences_search_country" - android:defaultValue="-" - android:entries="@array/country_codes" - android:entryValues="@array/country_codes" - android:title="@string/preferences_search_country"/> - </PreferenceCategory> - <PreferenceCategory android:title="@string/preferences_device_bug_workarounds_title"> - <CheckBoxPreference - android:key="preferences_disable_continuous_focus" - android:defaultValue="true" - android:title="@string/preferences_disable_continuous_focus_title" - android:summary="@string/preferences_disable_continuous_focus_summary"/> - <CheckBoxPreference - android:key="preferences_disable_exposure" - android:defaultValue="true" - android:title="@string/preferences_disable_exposure_title"/> - <CheckBoxPreference - android:key="preferences_disable_metering" - android:defaultValue="true" - android:title="@string/preferences_disable_metering_title"/> - <CheckBoxPreference - android:key="preferences_disable_barcode_scene_mode" - android:defaultValue="true" - android:title="@string/preferences_disable_barcode_scene_mode_title"/> - </PreferenceCategory> -</PreferenceScreen> diff --git a/android/playground/app/src/main/res/xml/scan_code_preferences.xml b/android/playground/app/src/main/res/xml/scan_code_preferences.xml deleted file mode 100755 index 2af4481262..0000000000 --- a/android/playground/app/src/main/res/xml/scan_code_preferences.xml +++ /dev/null @@ -1,130 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2008 ZXing authors - - Licensed 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. - --> -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> - <PreferenceCategory android:title="@string/preferences_scanning_title"> - <CheckBoxPreference - android:key="preferences_decode_1D_product" - android:defaultValue="true" - android:title="@string/preferences_decode_1D_product_title"/> - <CheckBoxPreference - android:key="preferences_decode_1D_industrial" - android:defaultValue="true" - android:title="@string/preferences_decode_1D_industrial_title"/> - <CheckBoxPreference - android:key="preferences_decode_QR" - android:defaultValue="true" - android:title="@string/preferences_decode_QR_title"/> - <CheckBoxPreference - android:key="preferences_decode_Data_Matrix" - android:defaultValue="true" - android:title="@string/preferences_decode_Data_Matrix_title"/> - <CheckBoxPreference - android:key="preferences_decode_Aztec" - android:defaultValue="false" - android:title="@string/preferences_decode_Aztec_title"/> - <CheckBoxPreference - android:key="preferences_decode_PDF417" - android:defaultValue="false" - android:title="@string/preferences_decode_PDF417_title"/> - </PreferenceCategory> - <PreferenceCategory android:title="@string/preferences_actions_title"> - <CheckBoxPreference - android:key="preferences_play_beep" - android:defaultValue="true" - android:title="@string/preferences_play_beep_title"/> - <CheckBoxPreference - android:key="preferences_vibrate" - android:defaultValue="false" - android:title="@string/preferences_vibrate_title"/> - <CheckBoxPreference - android:key="preferences_copy_to_clipboard" - android:defaultValue="true" - android:title="@string/preferences_copy_to_clipboard_title"/> - <CheckBoxPreference - android:key="preferences_auto_open_web" - android:defaultValue="false" - android:title="@string/preferences_auto_open_web_title"/> - <CheckBoxPreference - android:key="preferences_remember_duplicates" - android:defaultValue="false" - android:title="@string/preferences_remember_duplicates_title" - android:summary="@string/preferences_remember_duplicates_summary"/> - <CheckBoxPreference - android:key="preferences_supplemental" - android:defaultValue="true" - android:title="@string/preferences_supplemental_title" - android:summary="@string/preferences_supplemental_summary"/> - </PreferenceCategory> - <PreferenceCategory android:title="@string/preferences_general_title"> - <ListPreference - android:entries="@array/preferences_front_light_options" - android:entryValues="@array/preferences_front_light_values" - android:key="preferences_front_light_mode" - android:defaultValue="OFF" - android:title="@string/preferences_front_light_title" - android:summary="@string/preferences_front_light_summary"/> - <CheckBoxPreference - android:key="preferences_auto_focus" - android:defaultValue="true" - android:title="@string/preferences_auto_focus_title"/> - <CheckBoxPreference - android:key="preferences_invert_scan" - android:defaultValue="false" - android:title="@string/preferences_invert_scan_title" - android:summary="@string/preferences_invert_scan_summary"/> - <CheckBoxPreference - android:key="preferences_bulk_mode" - android:defaultValue="false" - android:title="@string/preferences_bulk_mode_title" - android:summary="@string/preferences_bulk_mode_summary"/> - <CheckBoxPreference - android:key="preferences_orientation" - android:defaultValue="true" - android:title="@string/preferences_orientation_title"/> - </PreferenceCategory> - <PreferenceCategory android:title="@string/preferences_result_title"> - <EditTextPreference - android:key="preferences_custom_product_search" - android:title="@string/preferences_custom_product_search_title" - android:summary="@string/preferences_custom_product_search_summary"/> - <ListPreference - android:key="preferences_search_country" - android:defaultValue="-" - android:entries="@array/country_codes" - android:entryValues="@array/country_codes" - android:title="@string/preferences_search_country"/> - </PreferenceCategory> - <PreferenceCategory android:title="@string/preferences_device_bug_workarounds_title"> - <CheckBoxPreference - android:key="preferences_disable_continuous_focus" - android:defaultValue="true" - android:title="@string/preferences_disable_continuous_focus_title" - android:summary="@string/preferences_disable_continuous_focus_summary"/> - <CheckBoxPreference - android:key="preferences_disable_exposure" - android:defaultValue="true" - android:title="@string/preferences_disable_exposure_title"/> - <CheckBoxPreference - android:key="preferences_disable_metering" - android:defaultValue="true" - android:title="@string/preferences_disable_metering_title"/> - <CheckBoxPreference - android:key="preferences_disable_barcode_scene_mode" - android:defaultValue="true" - android:title="@string/preferences_disable_barcode_scene_mode_title"/> - </PreferenceCategory> -</PreferenceScreen> diff --git a/android/playground/app/tools/weex.jks b/android/playground/app/tools/weex.jks deleted file mode 100644 index 7e045062d717946198a7861465ba5bdf014dd1be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2174 zcmb`Ic{tRK7RTo|GnTP8h?g)*h{0H2`_dvUXc!Yi3CWtup53S+WJ$(uTtY;aA(K&w z$&!gFTb8lC-pDdEvXt$5y7xZM+yD2E^T+3}^PKNF&*$td?=6EsAn-u}zX}@S?jCvo z7+r>kD+t5^LgAr1C;?6$WljJJD1i?F00#()htA)9{Ql%hlliRh`D@)ibn_!65|{oa z3zITGgbpF~Q{z|8@+56}k<a|a$lLOKZ!*&hg7a1P&k(PABXS`|yv4`QD@XHJNBd^- zjK-2$pGrD<h&QqOhs};iEPf1^gtvSo+;?eJM6aT`Ph@PS)Ef5G7Kd)du8o?vNt9L! zCU6n3t9#iL@rY&mUTJ#Aw*W+d1{$^OLC_&JlH-XDF|BEf0^rEhIj4f<t=>jP6m++a zdO5nl!)9o_MPr)w5Nh%;?#gk(dlo%M%7<KYBZDnmwC~dP#AN!jfZ<P4{rQcg83%iB zy$&zxqj7r;;+A{tCsalkzH_&u*^d4U(cqqO>+v$vPEN(bMT?_xoZnl|>1<qZkVt6h zbfrw{$m$#SNoe{XS==A<d5XeC3AFZdWi|Po6=<H8l)i1TGQM?vO_y3v+pd^3coyR) zDu*K^jE4->)Km~pe4C<TZ;KO(7_VUpa6><FK1z=)>m&(Z8730AE5nuVz0x-V$fi$p z@vd%q)z>YXCCx^G<lvIUYVa0OdhcvW;C2lSH&^?Csp4^|YGzJ!M~%fN$vL<%YF7_) z?^a_o4{Z#dBTvmf__N8?RPD^09HaHXPbE9pVP$c)bTf^&!cg*&P4d@59AdpI!!pRl zRPz}+&qP3OgSX{WgUH9-U{RSji}v@sbeuw@9Hn0DqT1W0MTtBPH|ajsF+sl8s#p99 zU7Prs@)vf=W-!$sKat^1gB$|+v^jSHSMqJ?(476nI_&A(=?@HJF(ph*xd(>RCk+*% zy`VoFl@%`HHkzA>K*vKrFCndOhiynEOnsDVRZe3EXf*q?d#UyQZV9<wpR6`q)v;$@ zhZ=-cO%<DRJ~&Fll*yF;h!#l0?a!5rpz|t8qp|M8mhu@QEe`}?=4N2c?usvKp6`Q+ ztM+$j;(A{$TD708oOjacO5QOq|FLPVsBakhQ0>;0{#V)yGbS?GLQ)e_Q$3R8Dz1!6 zDT0ON;qdNrrxr0~0g0ZJQibC|<Cs1xK3fyZ!%&G4s^QO^tEc{$0@UOB>1`f~Z@@=h zc0<#}2N)1?i}J2PSib43pl#UHvW4r-N$ZQaF4bO2<o8({8=C=#%E_@BGobP2HF?SA zizRgiW4o$-Zi6i4$&e_0hl|9l$bo)qTit69H6~h*)Pp9aRUJpqKF#v@47MyZTreW~ zuywGk0i>q7of#vyC?eN@`a(aU%zv;meLTRD@4nlJ?ll!RGTq83>gl5i|Ab2x@A{X@ zjmzknp8GFPW(zS1=yY$&H|Kfg>ko9#U4F0Yi^iAU%?%@uKP1Ac!5P${x(EZpv@s=s z5g{Mxpo6JX^%VFLH0{hXT@YF$jypZMr&v*%xi%rk0z^p3v7aO%3IviPj2T?>#8*Ba zovP34e5`NtraO<Yb$?p}OU<fI%KI+t9Tp`NFX4|VdvuwkW6fUgyS;N(ZIlYdG`v(= zuU)*3q9!UYMwIjICztl|-~^YdjAShJ5FFUXTkHzIsSRHyS6EdHYYXK)-upwDw+m4* z<ilFZotYuxvKfv8&y5PQI@Q)%I}xKwWMAMlobjEstr~d8u$qZ>v_Yh!By@gEh{}Ge zIlT~4@d7(8w0C$>+MtSAmN#P}afba9m>cxHx#`wy_sfbL_Nv+_JrD?@hr&a&QFyRa z5d;i?!BElUbuSb@CrpW8LD=L60Nw*(UQp*p@p3}!pxna0Z2CXs`W<<GN8aBN@*hM= zi}9=LptLm9)ipG=G&FEx{95WLEp_ex;{Uf99yt2XVGc|W!2^N^F96^H;{gDasCe%? z2=8sNIEQQ=)9j?4Q{d3MDsrJ%FKzzvwm?w3T>?k+*Fd|;d+3<M`2dUb7ULi7o}qp; z`$%7Pxv%62DTXwo0(+>?Y(q6S{7|b?7T1lI=L(_Ev#WMq$+D~l=SPnAN?czd)UJvr zYL3x^RO%bJ-}P`lui93lX(?#R_~n#^CFcHlY<PNa_)R8U-X5lv7<uO|lJv;&@U~sS zTI>zy2j`q$Nf+*XCtYQSV8i8tSs#W_eT-o_U6V4S;%HG>xbuy=AnaGKJjTlLpXWK2 z9p9&5rrVQvOey<5&*>zDgK^Jfb=)nAOYb$mzEqL0_1B*Fkh?X7@ZdPd6)*$<0VT31 z8I;t)ex(GUhoK^6+$~riigqA++~D+VAVptC$T8xdAs$@BL5KiIWwI#oN|?J$GV(P0 zUrU>Yi8{L2k^ay->q>8F?I8)BwtsoS`DhopmZmIo<f6>$Y7^M-`4q0p+MB1WH#fR_ zAUJ{2rZ!n4WZMHAP9jHzJaS{KgXmgJ&PY)7g{!6BHH2v%D=VnaPBNrVOoq}~C}9!B z!Yd|Ci>mDCnEHUASsw9}>4ITMaEC+gZR<l!i^QXzIgtok>1L;#r0$#vv-k^`fD3;M zh0wk>bmR;^Wqr>#N5db-Sw_9gd-Ap^-&kvjH$|n<7Rj4e@5LV5FRQWB6A93Az~wnu z?3ir~DG>*lTd?(DS3EeawRELiCR)X;fzs*{fC)Iw?b%hb(P%Cv_O&rrx3SY=Fe|%u IU+mPs0XYuWjQ{`u diff --git a/android/sdk/build.gradle b/android/sdk/build.gradle index b034eb39cc..90850839fe 100755 --- a/android/sdk/build.gradle +++ b/android/sdk/build.gradle @@ -18,6 +18,7 @@ */ plugins { id "com.github.hierynomus.license" version "0.14.0" + id 'com.jfrog.artifactory' version '4.9.7' } apply plugin: 'com.android.library' @@ -342,6 +343,21 @@ bintray { } } } +artifactory { + contextUrl = 'http://oss.jfrog.org/artifactory' + publish { + repository { + repoKey = 'oss-snapshot-local' + username = bintray.user + password = bintray.key + maven = true + } + defaults { + publishConfigs('archives') + } + } +} + afterEvaluate { project -> transformNativeLibsWithStripDebugSymbolForRelease << { diff --git a/android/settings.gradle b/android/settings.gradle index 05fae684f4..0cd619524d 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,6 +1,20 @@ rootProject.name = 'weex-project' + +def updateSubmodule(){ + def command = "git submodule update --init --remote" + exec { + executable "bash" + args "-c", command + } +} + +updateSubmodule() + include ":playground" -project(":playground").projectDir=new File("playground/app") +project(":playground").projectDir=new File("../weex-playground/android/playground") + +include ":commons" +project(":commons").projectDir=new File("../weex-playground/android/commons") include ":weex_sdk" project(":weex_sdk").projectDir = new File("sdk") @@ -10,6 +24,3 @@ project(":weex_sdk").projectDir = new File("sdk") //project(":HeronAndroid").projectDir = new File("../../Heron/HeronAndroid") -include ":commons" - - diff --git a/weex-playground b/weex-playground new file mode 160000 index 0000000000..b8c57bf48a --- /dev/null +++ b/weex-playground @@ -0,0 +1 @@ +Subproject commit b8c57bf48acd8b0d5a0701f39dadb698824f4007