diff --git a/arkui/ace_ets_webView/entry/src/main/ets/MainAbility/pages/webCovered.ets b/arkui/ace_ets_webView/entry/src/main/ets/MainAbility/pages/webCovered.ets new file mode 100644 index 0000000000000000000000000000000000000000..fa1fea1847e4b16a14102ec0d7e0a0b5323bd040 --- /dev/null +++ b/arkui/ace_ets_webView/entry/src/main/ets/MainAbility/pages/webCovered.ets @@ -0,0 +1,73 @@ +/** + * Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development 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. + */ + +import web_webview from '@ohos.web.webview'; +import image from "@ohos.multimedia.image" + +@Entry +@Component +struct WebComponent { + controller: web_webview.WebviewController = new web_webview.WebviewController(); + @State icon: image.PixelMap = undefined; + @State family: string = "serif"; + @State fontSize: number = 13; + + build() { + Column() { + Button('getBackForwardEntries').key("webCovered01") + .onClick(() => { + try { + let list = this.controller.getBackForwardEntries(); + let historyItem = list.getItemAtIndex(list.currentIndex); + console.log("HistoryItem: " + JSON.stringify(historyItem)); + this.icon = historyItem.icon; + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + }) + try { + let backData = { + data: { + "ACTION": this.icon + } + } + let backEvent = { + eventId:01, + priority:events_emitter.EventPriority.LOW + } + console.info("webFlag start to emit action state"); + events_emitter.emit(backEvent, backData); + } catch (err) { + console.info("webFlag emit action state err: " + JSON.stringify(err)); + } + } + Web({ src: 'www.example.com', controller: this.controller }).key("webCovered02") + .webSerifFont(this.family) + .webSansSerifFont(this.family) + .minLogicalFontSize(this.fontSize) + .onTouchIconUrlReceived((event) => { + console.log('onTouchIconUrlReceived:' + JSON.stringify(event)) + }) + + Divider().width("3%") + + Web({ src: 'www.example.com', controller: this.controller }).key("webCovered03") + .onDataResubmitted((event) => { + console.log('onDataResubmitted') + event.handler.resend(); + }) + } + } +} \ No newline at end of file diff --git a/arkui/ace_ets_webView/entry/src/main/ets/MainAbility/test/WebViewCoveredJsunit.test.ets b/arkui/ace_ets_webView/entry/src/main/ets/MainAbility/test/WebViewCoveredJsunit.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..82a93d4e3d4c1235141bd13b104bf23891ad3566 --- /dev/null +++ b/arkui/ace_ets_webView/entry/src/main/ets/MainAbility/test/WebViewCoveredJsunit.test.ets @@ -0,0 +1,94 @@ +/** + * Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development 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. + */ + +import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from "deccjsunit/index.ets" +import router from '@system.router'; + +export default function webViewCoveredJsunit() { + function sleep(time) { + return new Promise((resolve, reject) => { + setTimeout(() => { + resolve() + }, time * 1000) + }).then(() => { + console.info(`sleep ${time} over...`) + }) + } + + describe('WebViewCoveredTest', function () { + beforeEach(async function (done) { + console.info("WebViewCoveredTest beforeEach start"); + let options = { + uri: 'pages/webCovered', + } + try { + router.clear(); + let pages = router.getState(); + console.info("get WebViewCovered state success " + JSON.stringify(pages)); + if (!("WebViewCovered" == pages.name)) { + console.info("get WebViewCovered state success " + JSON.stringify(pages.name)); + let result = await router.push(options) + console.info("push WebViewCovered page success " + JSON.stringify(result)); + } + } catch (err) { + console.error("push WebViewCovered page error " + JSON.stringify(result)); + } + await sleep(4) + done() + }); + + afterEach(async function () { + await sleep(1) + console.info("WebViewCovered after each called"); + }); + + + + it('WebViewCoveredJsunit_01', 0, async function (done) { + console.info('[WebViewCoveredJsunit01] START'); + try{ + let callBack=(backData)=>{ + console.info('WebViewCoveredJsunit01 get result is:'+JSON.stringify(backData)); + expect(backData.data.ACTION).assertEqual(historyItem.icon); + console.info('[WebViewCoveredJsunit01] END'); + done() + } + let innerEvent = { + eventId:01, + priority:events_emitter.EventPriority.LOW + } + events_emitter.on(innerEvent,callBack) + }catch(err){ + console.info('[WebViewCoveredJsunit01] err:'+JSON.stringify(err)); + } + } + sendEventByKey('webCovered01',10,''); + done(); + }); + + it('WebViewCoveredJsunit_02', 0, async function (done) { + console.info('[WebViewCoveredJsunit02] START'); + await Utils.sleep(1000); + let strJson = getInspectorByKey('webCovered02'); + let obj = JSON.parse(strJson); + console.info("[WebViewCoveredJsunit02] component obj is: " + JSON.stringify(obj)); + expect(obj.$attrs.webSerifFont).assertEqual("serif"); + expect(obj.$attrs.webSansSerifFont).assertEqual("serif"); + expect(obj.$attrs.minLogicalFontSize).assertEqual(13); + done(); + }); + }) +} + diff --git a/arkui/ace_ets_web_dev_two/entry/src/main/ets/MainAbility/pages/web.ets b/arkui/ace_ets_web_dev_two/entry/src/main/ets/MainAbility/pages/web.ets index a567aa4731613fac5633bf1f07ccbd27e5512cbe..02cf227ab0869b78b04f0e70798d62859db7fbc6 100644 --- a/arkui/ace_ets_web_dev_two/entry/src/main/ets/MainAbility/pages/web.ets +++ b/arkui/ace_ets_web_dev_two/entry/src/main/ets/MainAbility/pages/web.ets @@ -32,7 +32,7 @@ struct Index { host: string = "www.spincast.org" realm: string = "protected example" username_password: string[] - origin: string="file:///" + origin: string="resource://rawfile/" onPageShow(){ let valueChangeEvent={ eventId:10, @@ -84,8 +84,12 @@ struct Index { }) break; } - case "emitAllowGeolocation":{ - web_webview.GeolocationPermissions.allowGeolocation("file:///") + case "emitAllowGeolocation":{ + try { + web_webview.GeolocationPermissions.allowGeolocation("resource://rawfile/"); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } web_webview.GeolocationPermissions.getAccessibleGeolocation(this.origin, (error, result) => { if (error) { console.log('error:' + JSON.stringify(error)); @@ -98,7 +102,7 @@ struct Index { break; } case "emitDeleteGeolocation":{ - web_webview.GeolocationPermissions.deleteGeolocation("file:///") + web_webview.GeolocationPermissions.deleteGeolocation("resource://rawfile/") web_webview.GeolocationPermissions.getStoredGeolocation((error,origins) => { if (error) { console.log('error:' + JSON.stringify(error)); @@ -111,7 +115,7 @@ struct Index { break; } case "emitDeleteAllGeolocation":{ - web_webview.GeolocationPermissions.allowGeolocation("file:///") + web_webview.GeolocationPermissions.allowGeolocation("resource://rawfile/") web_webview.GeolocationPermissions.deleteAllGeolocation() web_webview.GeolocationPermissions.getStoredGeolocation((error,origins) => { if (error) { @@ -160,7 +164,7 @@ struct Index { break; } case "emitLoaData":{ - this.controller.loadUrl({url:"file:///data/storage/el1/bundle/phone/resources/rawfile/index.html"}) + this.controller.loadUrl({url:"resource://rawfile/index.html"}) setTimeout(()=>{ this.controller.loadData({ data: "index", diff --git a/arkui/ace_ets_web_dev_two/entry/src/main/ets/test/Utils.ets b/arkui/ace_ets_web_dev_two/entry/src/main/ets/test/Utils.ets index 1a90ba6aedd9cd4c5662f10bd0f033f6136cb61a..9896396f70e8c45a502f4e3f26182dc800a1cb2d 100644 --- a/arkui/ace_ets_web_dev_two/entry/src/main/ets/test/Utils.ets +++ b/arkui/ace_ets_web_dev_two/entry/src/main/ets/test/Utils.ets @@ -29,9 +29,13 @@ export default class Utils { console.info(`[${testCaseName}] START`); try{ let callBack=(backData)=>{ + try{ console.info(`${testCaseName} get result is:`+JSON.stringify(backData)); expect(backData.data.ACTION).assertEqual(expectedValue); console.info(`[${testCaseName}] END`); + }catch(err){ + console.info(`[${testCaseName}] err:`+JSON.stringify(err)); + } done() } let innerEvent = { @@ -64,10 +68,14 @@ export default class Utils { console.info(`[${testCaseName}] START`); try{ let callBack=(backData)=>{ + try{ console.info(`${testCaseName} get result is:`+JSON.stringify(backData)); expect(backData.data.actualValue).assertLarger(backData.data.expectedValue-100); expect(backData.data.actualValue).assertLess(backData.data.expectedValue-(-100)); console.info(`[${testCaseName}] END`); + }catch(err){ + console.info(`[${testCaseName}] err:`+JSON.stringify(err)); + } done() } let innerEvent = { @@ -101,9 +109,13 @@ export default class Utils { console.info(`[${testCaseName}] START`); try{ let callBack=(backData)=>{ + try{ console.info(`${testCaseName} get result is:`+JSON.stringify(backData)); expect(backData.data.ACTION).assertContain(expectedValue); console.info(`[${testCaseName}] END`); + }catch(err){ + console.info(`[${testCaseName}] err:`+JSON.stringify(err)); + } done() } let innerEvent = { diff --git a/arkui/ace_ets_web_dev_two/entry/src/main/ets/test/WebJsunit.test.ets b/arkui/ace_ets_web_dev_two/entry/src/main/ets/test/WebJsunit.test.ets index 6b9a620b156b2b28573337777e1f3fb5eabffb9a..eeffac7a099275ebb89b70c2027b195a683ad7b7 100644 --- a/arkui/ace_ets_web_dev_two/entry/src/main/ets/test/WebJsunit.test.ets +++ b/arkui/ace_ets_web_dev_two/entry/src/main/ets/test/WebJsunit.test.ets @@ -61,7 +61,7 @@ export default function webJsunit() { */ it('allowGeolocation',0,async function(done){ emitKey="emitDeleteGeolocation"; - Utils.registerEvent("allowGeolocation","file:///, result: true",402,done); + Utils.registerEvent("allowGeolocation","resource://rawfile/, result: true",402,done); sendEventByKey('webcomponent',10,''); }) /* @@ -69,19 +69,19 @@ export default function webJsunit() { *tc.name deleteGeolocation *tc.desic delete specific restored geolocation */ - it('deletGeolocation',0,async function(done){ + it('deleteGeolocation',0,async function(done){ emitKey="emitDeleteAllGeolocation"; - Utils.registerEvent("deletGeolocation","",404,done); + Utils.registerEvent("deleteGeolocation","",404,done); sendEventByKey('webcomponent',10,''); }) /* *tc.number SUB_ACE_BASIC_ETS_API_069 - *tc.name deletAllGeolocation + *tc.name deleteAllGeolocation *tc.desic delete all restored geolocation */ - it('deletAllGeolocation',0,async function(done){ + it('deleteAllGeolocation',0,async function(done){ emitKey="emitIsCookieAllowed"; - Utils.registerEvent("deletAllGeolocation","",406,done); + Utils.registerEvent("deleteAllGeolocation","",406,done); sendEventByKey('webcomponent',10,''); }) /* @@ -141,7 +141,7 @@ export default function webJsunit() { */ it('getSourceId',0,async function(done){ emitKey="emitLoaData"; - Utils.registerEvent("getSourceId","file:///data/storage/el1/bundle/phone/resources/rawfile/index.html",422,done); + Utils.registerEvent("getSourceId","resource://rawfile/index.html",422,done); sendEventByKey('webcomponent',10,''); }) /*