From c929cb8b4493569507f8b9e5f06eb07bcaf3f90c Mon Sep 17 00:00:00 2001 From: lihao Date: Thu, 10 Mar 2022 17:34:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=84=E4=BB=B6=E7=94=A8?= =?UTF-8?q?=E4=BE=8B=E4=BB=A3=E7=A0=81=E5=88=B0release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lihao --- ace/ace_ets_test/entry/src/main/config.json | 7 +- .../pages/components/FormComponentPage.ets | 93 ++++ .../MainAbility/pages/components/WebPage.ets | 466 ++++++++++++++++++ .../pages/components/XComponentPage.ets | 40 ++ 4 files changed, 604 insertions(+), 2 deletions(-) create mode 100644 ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/FormComponentPage.ets create mode 100644 ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/WebPage.ets create mode 100644 ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/XComponentPage.ets diff --git a/ace/ace_ets_test/entry/src/main/config.json b/ace/ace_ets_test/entry/src/main/config.json index f2a38fa15..a31469469 100644 --- a/ace/ace_ets_test/entry/src/main/config.json +++ b/ace/ace_ets_test/entry/src/main/config.json @@ -76,7 +76,7 @@ "pages/Link", "pages/AppStorage", "pages/Video", - "pages/components/Marquee", + "pages/components/Marquee", "pages/components/Path", "pages/components/PatternLock", "pages/components/Polygon", @@ -85,7 +85,10 @@ "pages/components/RichText", "pages/components/Select", "pages/components/Shape", - "pages/components/Sidebar" + "pages/components/Sidebar", + "pages/components/FormComponentPage", + "pages/components/XComponentPage", + "pages/components/WebPage" ], "name": ".MainAbility", "window": { diff --git a/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/FormComponentPage.ets b/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/FormComponentPage.ets new file mode 100644 index 000000000..34058a6fa --- /dev/null +++ b/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/FormComponentPage.ets @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * 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. + */ + + +@Entry +@Component +struct FormComponentPage { + @State dimension:FormDimension = FormDimension.Dimension_2_2 + build() { + Column(){ + + FormComponent({ + id:0, + name:"four_four", + bundle:"com.example.myapplication", + ability:"com.example.myapplication.MainAbility", + module:"fa_widget", + dimension:this.dimension, + temporary:true + }) + .size({width:100,height:100}) + .moduleName("fa_widget") + .dimension(this.dimension) + .allowUpdate(true) + .visibility(Visibility.Visible) + .onAcquired((e)=>{ + console.log('onAcquired id : '+ e.id) + }) + .onRouter(()=>{ + console.log('onRouter : ') + }) + .onError((error)=>{ + console.log('error code :'+error.errcode); + console.log('error msg :'+error.msg); + }) + + + Text('卡片格式 :') + .fontSize(15) + .width('100%') + .backgroundColor(0xFAEEE0) + .height(40) + .textAlign(TextAlign.Start) + .fontWeight(FontWeight.Bolder) + Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.Start }) { + Button('1X2') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.dimension = FormDimension.Dimension_1_2 + }) + Button('2X2') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.dimension = FormDimension.Dimension_2_2 + }) + Button('2X4') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.dimension = FormDimension.Dimension_2_4 + }) + Button('4X4') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.dimension = FormDimension.Dimension_4_4 + }) + + } + .width('90%') + .margin({ top: 5, bottom: 5, left: 10, right: 10 }) + + } + } +} \ No newline at end of file diff --git a/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/WebPage.ets b/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/WebPage.ets new file mode 100644 index 000000000..3ead750a5 --- /dev/null +++ b/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/WebPage.ets @@ -0,0 +1,466 @@ +// @ts-nocheck +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * 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. + */ + +@Entry +@Component +struct WebComponent { + @State javaScriptAccess: boolean = true; + @State fileAccess: boolean = true; + @State geolocationAccess: boolean = true; + @State imageAccess: boolean = true; + @State domStorageAccess: boolean = false; + @State onlineImageAccess: boolean = true; + @State zoomAccess: boolean = true; + @State accessBackward: boolean = true; + @State accessForward: boolean = true; + @State accessStep: boolean = true; + @State password: boolean = true; + @State tableData: boolean = true; + @State wideViewModeAccess: boolean = true; + @State overviewModeAccess: boolean = true; + @State databaseAccess: boolean = true; + @State textZoomAtio: number = 1; + @State mixedMode: MixedMode = MixedMode.None + @State cacheMode: CacheMode = CacheMode.None + @State getHitTest: HitTestType = HitTestType.Unknown + controller: WebController = new WebController(); + cookie: WebCookie = new WebCookie() + testObj = { + test: (data1, data2, data3) => { + console.log('ets test web : ' + data1) + console.log('ets test web : ' + data2) + console.log('ets test web : ' + data3) + return 'AceString' + }, + toString: () => { + console.log('ets test web : ++++++toString') + } + } + + build() { + Column() { + Row() { + Button('混合内容') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.mixedMode = MixedMode.All + }) + Button('混合内容兼容性模式') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.mixedMode = MixedMode.Compatible + }) + Button('不允许混合内容') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.mixedMode = MixedMode.None + }) + Button('确认弹框') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + AlertDialog.show( + { + title: 'title', + message: 'text', + primaryButton: { + value: 'cancel', + action: () => { + console.info('Callback when the first button is clicked') + } + }, + secondaryButton: { + value: 'ok', + action: () => { + console.info('Callback when the second button is clicked') + } + }, + cancel: () => { + console.info('Closed callbacks') + } + } + ) + }) + Button('警告弹框') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + AlertDialog.show( + { + title: 'title', + message: 'text', + confirm: { + value: 'button', + action: () => { + console.info('Button-clicking callback') + } + }, + cancel: () => { + console.info('Closed callbacks') + } + } + ) + }) + + } + + Row() { + Button('先缓存后在线') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.cacheMode = CacheMode.Online + }) + Button('加载缓存') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.cacheMode = CacheMode.Only + }) + Button('加载在线') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.cacheMode = CacheMode.None + }) + Button('设置cookie') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.cookie.setCookie() + }) + Button('保存cookie') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.cookie.saveCookie() + }) + } + + Row() { + Button(this.accessBackward ? '页面可后退' : '页面不可后退') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.accessBackward = this.controller.accessBackward() + }) + Button(this.accessForward ? '页面可前进' : '页面不可前进') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.accessForward = this.controller.accessForward() + }) + Button(this.accessStep ? '页面可前进1步' : '页面不可前进1步') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.accessStep = this.controller.accessStep(1) + }) + Button('清空JavaScript方法') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.deleteJavaScriptRegister('objName') + }) + Button('Web组件获焦') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.requestFocus() + }) + Button('停止页面加载') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.stop() + }) + } + + Row() { + Button('页面后退') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.backward() + }) + Button('页面前进') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.forward() + }) + Button('清理历史') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.clearHistory() + }) + Button('获取点击对象类型') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + let getHitTest = this.controller.getHitTest() + if (getHitTest == HitTestType.Edit) { + console.log('this getHitTest : Edit'); + } else if (getHitTest == HitTestType.Email) { + console.log('this getHitTest : Email'); + } else if (getHitTest == HitTestType.Http) { + console.log('this getHitTest : Http'); + } else if (getHitTest == HitTestType.HttpImg) { + console.log('this getHitTest : HttpImg'); + } else if (getHitTest == HitTestType.Img) { + console.log('this getHitTest : Img'); + } else if (getHitTest == HitTestType.Map) { + console.log('this getHitTest : Map'); + } else if (getHitTest == HitTestType.Phone) { + console.log('this getHitTest : Phone'); + } else { + getHitTest = HitTestType.Unknown + console.log('this getHitTest : Unknown'); + } + }) + Button('加载数据') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.loadData({ + data: "Source :
 source:
", + mimetype: "text/html", + encoding: "UTF-8", + baseUrl: "https://www.baidu.com", + historyUrl: "https://www.gitee.com" + }) + }) + Button('加载URL') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.loadUrl({ + url: "https://www.baidu.com", + additionalHttpHeaders: [{ key: 'div', value: 'div' }] + }) + }) + } + + Row() { + Button('页面重新激活') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.onActive() + }) + Button('页面暂停渲染') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.onInactive() + }) + Button('刷新页面') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.refresh() + }) + Button('注册JavaScript') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.registerJavaScriptProxy({ + obj: this.testObj, + name: 'objName', + methodList: ['test', 'toString'] + }) + }) + Button('执行JavaScript脚本') + .margin({ right: 10 }) + .fontSize(15) + .width(150) + .onClick(() => { + this.controller.runJavaScript({ + script: "test()", + callback: (result: string) => { + console.log('run javascript result : ' + result); + } + }) + }) + } + + Web({ src: $rawfile('indextest.html'), controller: this.controller }) + .domStorageAccess(this.domStorageAccess) + .fileAccess(this.fileAccess) + .geolocationAccess(this.geolocationAccess) + .imageAccess(this.imageAccess) + .javaScriptAccess(this.javaScriptAccess) + .mixedMode(this.mixedMode) + .onlineImageAccess(this.onlineImageAccess) + .zoomAccess(this.zoomAccess) + .cacheMode(this.cacheMode) + .tableData(this.tableData) + .wideViewModeAccess(this.wideViewModeAccess) + .overviewModeAccess(this.overviewModeAccess) + .textZoomAtio(this.textZoomAtio) + .databaseAccess(this.databaseAccess) + .javaScriptProxy({ + obj: this.testObj, + name: 'objName', + methodList: ['test', 'toString'] + }) + .password(this.password) + .onPageBegin((e) => { + console.log("webTest : onPageBegin: " + e.url); + }) + .onPageEnd(e => { + console.log("webTest : onPageEnd: " + e.url); + this.controller.runJavaScript('test()') + }) + .onProgressChange((e) => { + console.log("webTest : onProgressChange: " + e.newProgress); + }) + .onTitleReceive((e) => { + console.log("webTest : onProgressChange: " + e.title); + }) + .onDownloadStart((e) => { + console.log("webTest : onDownloadStart url : " + e.url); + console.log("webTest : onDownloadStart userAgent : " + e.userAgent); + console.log("webTest : onDownloadStart contentDisposition : " + e.contentDisposition); + console.log("webTest : onDownloadStart mimetype : " + e.mimetype); + console.log("webTest : onDownloadStart contentLength : " + e.contentLength); + }) + .onGeolocationHide(() => { + console.log("webTest : onGeolocationHide: "); + }) + .onGeolocationShow((e) => { + console.log("webTest : onDownloadStart origin : " + e.origin); + e.geolocation.invoke(e.origin, true, true) + console.log("webTest : onDownloadStart origin : " + e.geolocation.invoke); + }) + .onRequestSelected(() => { + console.log("webTest : onRequestSelected: "); + }) + .onAlert((e) => { + console.log("webTest : onAlert: " + e.url); + console.log("webTest : onAlert: " + e.message); + console.log("webTest : onAlert .result : " + e.result); + console.log("webTest : onAlert .result : " + e.result.handleCancel()); + console.log("webTest : onAlert .result : " + e.result.handleConfirm()); + }) + .onBeforeUnload((e) => { + console.log("webTest : onBeforeUnload: " + e.message); + console.log("webTest : onBeforeUnload .result : " + e.result); + console.log("webTest : onBeforeUnload .result : " + e.result.handleCancel()); + console.log("webTest : onBeforeUnload .result : " + e.result.handleConfirm()); + }) + .onConfirm((e) => { + console.log("webTest : onConfirm: " + e.url); + console.log("webTest : onConfirm: " + e.message); + console.log("webTest : onConfirm .result : " + e.result); + console.log("webTest : onConfirm .result : " + e.result.handleCancel()); + console.log("webTest : onConfirm .result : " + e.result.handleConfirm()); + }) + .onConsole((e) => { + console.log("webTest : onConsole .message : " + e.message); + console.log("webTest : onConsole .message : " + e.message.getMessage()); + console.log("webTest : onConsole .message : " + e.message.getSourceId()); + console.log("webTest : onConsole .message : " + e.message.getLineNumber()); + let level = e.message.getMessageLevel() + if (level == MessageLevel.Debug) { + console.log("webTest : onConsole: level Debug"); + } else if (level == MessageLevel.Error) { + console.log("webTest : onConsole: level Error"); + } else if (level == MessageLevel.Info) { + console.log("webTest : onConsole: level Info"); + } else if (level == MessageLevel.Log) { + console.log("webTest : onConsole: level Log"); + } else { + level = MessageLevel.Warn + console.log("webTest : onConsole: level Warn"); + } + }) + .onErrorReceive((e) => { + console.log("webTest : onErrorReceive .request : " + e.request); + console.log("webTest : onErrorReceive .request : " + e.request.getRequestHeader()); + console.log("webTest : onErrorReceive .request : " + e.request.getRequestUrl()); + console.log("webTest : onErrorReceive .request : " + e.request.isRequestGesture()); + console.log("webTest : onErrorReceive .request : " + e.request.isMainFrame()); + console.log("webTest : onErrorReceive .request : " + e.request.isRedirect()); + + console.log("webTest : onErrorReceive .error : " + e.error); + console.log("webTest : onErrorReceive .error : " + e.error.getErrorInfo()); + console.log("webTest : onErrorReceive .error : " + e.error.getErrorCode()); + }) + .onHttpErrorReceive((e) => { + console.log("webTest : onHttpErrorReceive .request : " + e.request); + console.log("webTest : onHttpErrorReceive .request : " + e.request.getRequestHeader()); + console.log("webTest : onHttpErrorReceive .request : " + e.request.getRequestUrl()); + console.log("webTest : onHttpErrorReceive .request : " + e.request.isRequestGesture()); + console.log("webTest : onHttpErrorReceive .request : " + e.request.isMainFrame()); + console.log("webTest : onHttpErrorReceive .request : " + e.request.isRedirect()); + + console.log("webTest : onHttpErrorReceive .error : " + e.error); + console.log("webTest : onHttpErrorReceive .error : " + e.error.getErrorInfo()); + console.log("webTest : onHttpErrorReceive .error : " + e.error.getErrorCode()); + }) + .onRefreshAccessedHistory((e) => { + console.log("webTest : onRefreshAccessedHistory .url : " + e.url); + console.log("webTest : onRefreshAccessedHistory .refreshed : " + e.refreshed); + }) + .onUrlLoadIntercept((e) => { + console.log("webTest : onUrlLoadIntercept .data : " + e.data); + }) + .onSslErrorReceive((e) => { + console.log("webTest : onSslErrorReceive .handle : " + e.handle); + console.log("webTest : onSslErrorReceive .error : " + e.error); + }) + .onRenderExited((e) => { + console.log("webTest : onRenderExited .detail : " + JSON.stringify(e.detail)); + }) + .onFileSelectorShow((e) => { + console.log("webTest : onFileSelectorShow .callback : " + e.callback); + console.log("webTest : onFileSelectorShow .fileSelector : " + e.fileSelector); + }) + + } + } +} \ No newline at end of file diff --git a/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/XComponentPage.ets b/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/XComponentPage.ets new file mode 100644 index 000000000..224d45742 --- /dev/null +++ b/ace/ace_ets_test/entry/src/main/ets/MainAbility/pages/components/XComponentPage.ets @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * 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. + */ + +@Entry +@Component +struct XComponentPage { + xComponentController: XComponentController = new XComponentController() + + build() { + Column() { + + Button('getXComponentSurfaceId') + .onClick(() => { + this.xComponentController.getXComponentSurfaceId() + console.log('getXComponentSurfaceId ...') + + }) + + XComponent({ id: '1', type: '2', libraryname: '3', controller: this.xComponentController }) + .onLoad((e) => { + console.log('onLoad ...' + JSON.stringify(e)) + }) + .onDestroy(() => { + console.log('onDestroy ...') + }) + } + } +} \ No newline at end of file -- GitLab