diff --git a/arkui/ace_ets_web_dev_three/AppScope/app.json b/arkui/ace_ets_web_dev_three/AppScope/app.json index 52fd9651408ad407e3020e35e240170115e1977e..cbfbdce74abb3626ecf880f3ce0dc2dcb5577f0a 100644 --- a/arkui/ace_ets_web_dev_three/AppScope/app.json +++ b/arkui/ace_ets_web_dev_three/AppScope/app.json @@ -11,10 +11,10 @@ "distributedNotificationEnabled": true, "keepAlive": true, "singleUser": true, - "minAPIVersion": 9, - "targetAPIVersion": 9, + "minAPIVersion": 10, + "targetAPIVersion": 10, "car": { - "apiCompatibleVersion": 9, + "apiCompatibleVersion": 10, "singleUser": false } } diff --git a/arkui/ace_ets_web_dev_three/entry/src/main/ets/MainAbility/pages/web.ets b/arkui/ace_ets_web_dev_three/entry/src/main/ets/MainAbility/pages/web.ets index b1efacd6cf3f473afafc52aaf63980ea594f2353..e6ad40731b6a1b1e1eee80e49caeb9181aa806da 100644 --- a/arkui/ace_ets_web_dev_three/entry/src/main/ets/MainAbility/pages/web.ets +++ b/arkui/ace_ets_web_dev_three/entry/src/main/ets/MainAbility/pages/web.ets @@ -18,17 +18,22 @@ import { Hypium } from '@ohos/hypium'; import testsuite from '../../test/List.test'; import Utils from '../../test/Utils'; import web_webview from '@ohos.web.webview'; - +import fileio from '@ohos.fileio'; let loadedUrl; @Entry @Component struct Index { controller: web_webview.WebviewController = new web_webview.WebviewController(); controllerTwo: web_webview.WebviewController = new web_webview.WebviewController(); + scheme1: web_webview.WebCustomScheme = {schemeName: "name1", isSupportCORS: true, isSupportFetch: true} responseweb: WebResourceResponse = new WebResourceResponse() @State str:string="emitLoadUrl" @State text:boolean=false @State num:number=0 + @State mode: WebDarkMode = WebDarkMode.Off + @State mode1: WebDarkMode = WebDarkMode.On + @State mode2: WebDarkMode = WebDarkMode.Auto + ports: web_webview.WebMessagePort[]; testObj = { testOne: (data) => { Utils.emitEvent(data,13) @@ -62,6 +67,14 @@ struct Index { abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() console.info('start run testcase!!!') Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + try{ + web_webview.once("webInited",()=>{ + web_webview.WebCookieManager.setCookie("https://www.huawei.com", "a=b"); + }) + }catch(error){ + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + } build(){ Column(){ @@ -406,6 +419,113 @@ struct Index { } break; } + case "emitOnce":{ + try { + let re = web_webview.WebCookieManager.getCookie("https://www.huawei.com") + Utils.emitEvent(re, 31) + console.log("result: " + re); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + break; + } + case "emitGetItemAtIndex":{ + try { + let res = this.controller.getBackForwardEntries() + let item =res.getItemAtIndex(0) + Utils.emitEvent(item.title, 32) + console.log("result: " + item.title); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + break; + } + case "emitSlideScroll":{ + try { + this.controller.slideScroll(10, 10); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + try { + let state = this.controller.serializeWebState(); + let path = globalThis.AbilityContext.cacheDir; + path += '/WebState'; + let fd = fileio.openSync(path, 0o2 | 0o100, 0o666); + fileio.writeSync(fd, state.buffer); + fileio.closeSync(fd); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + try { + let path = globalThis.AbilityContext.cacheDir; + path += '/WebState'; + let fd = fileio.openSync(path, 0o002, 0o666); + let stat = fileio.fstatSync(fd); + let size = stat.size; + let buf = new ArrayBuffer(size); + fileio.read(fd, buf, (err, data) => { + if (data) { + this.controller.restoreWebState(new Uint8Array(data.buffer)); + } + fileio.closeSync(fd); + }); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + try { + this.ports = this.controller.createWebMessagePorts(); + this.ports[1].onMessageEvent((msg) => { + if (typeof(msg) == "string") { + console.log("received string message from html5, string is:" + msg); + } else if (typeof(msg) == "object") { + if (msg instanceof ArrayBuffer) { + console.log("received arraybuffer from html5, length is:" + msg.byteLength); + } else { + console.log("not support"); + } + } else { + console.log("not support"); + } + }) + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + break; + } + case "emitContextMenuMediaType":{ + try { + let con = ContextMenuMediaType.Image + Utils.emitEvent(con, 33) + console.log("result: " + con); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + break; + } + case "emitContextMenuInputFieldType":{ + try { + Utils.emitEvent(ContextMenuInputFieldType.PlainText, 34) + Utils.emitEvent(ContextMenuInputFieldType.Telephone, 35) + Utils.emitEvent(ContextMenuInputFieldType.Other, 36) + console.log("result: " + ContextMenuInputFieldType.PlainText); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + break; + } + case "emitContextMenuEditStateFlags":{ + try { + Utils.emitEvent(ContextMenuEditStateFlags.NONE, 37) + Utils.emitEvent(ContextMenuEditStateFlags.CAN_CUT, 38) + Utils.emitEvent(ContextMenuEditStateFlags.CAN_COPY, 39) + Utils.emitEvent(ContextMenuEditStateFlags.CAN_PASTE, 40) + Utils.emitEvent(ContextMenuEditStateFlags.CAN_SELECT_ALL, 41) + console.log("result: " + ContextMenuEditStateFlags.CAN_SELECT_ALL); + } catch (error) { + console.error(`ErrorCode: ${error.code}, Message: ${error.message}`); + } + break; + } default: console.info("can not match case") } @@ -415,6 +535,10 @@ struct Index { .mediaPlayGestureAccess(true) .javaScriptAccess(true) .zoomAccess(this.text) + .onDataResubmitted((event) => { + console.log('onDataResubmitted') + event.handler.resend(); + }) .onSearchResultReceive(ret=>{ var searchResult = ret.activeMatchOrdinal.toString() + ret.numberOfMatches.toString() @@ -423,6 +547,30 @@ struct Index { Utils.emitEvent(searchResult,16) },3000) }) + .onContextMenuShow((event) => { + console.info(event.param.getMediaType() + event.param.getSelectionText() + event.param.getSourceType()) + console.info(event.param.getInputFieldType().toString()) + console.info(event.param.isEditable().toString()) + console.info(event.param.getEditStateFlags().toString()) + event.result.paste() + event.result.cut() + return true + }) + .onHttpErrorReceive((event) => { + event.response.setResponseIsReady(true) + }) + .darkMode(this.mode) + .forceDarkAccess(false) + .webSerifFont('serif') + .webFixedFont('fixed') + .webSansSerifFont('serif') + .minLogicalFontSize(1) + .horizontalScrollBarAccess(true) + .verticalScrollBarAccess(true) + .onTouchIconUrlReceived((event) => { + console.log('onTouchIconUrlReceived:' + JSON.stringify(event)) + }) + .pinchSmooth(true) } } diff --git a/arkui/ace_ets_web_dev_three/entry/src/main/ets/test/WebJsunit.test.ets b/arkui/ace_ets_web_dev_three/entry/src/main/ets/test/WebJsunit.test.ets index 3223204a80f2794df6cbd340d047db37941a354f..270f8c88179e20db6f3d892776c7ef69504b6039 100644 --- a/arkui/ace_ets_web_dev_three/entry/src/main/ets/test/WebJsunit.test.ets +++ b/arkui/ace_ets_web_dev_three/entry/src/main/ets/test/WebJsunit.test.ets @@ -340,9 +340,65 @@ export default function webJsunit() { *tc.desic Save current page */ it('GetUrl',0,async function(done){ - emitKey="emitGetUrl"; + emitKey="emitOnce"; Utils.registerContainEvent("GetUrl","17100001",30,done); sendEventByKey('webcomponent',10,''); }) + /* + *tc.number SUB_ACE_BASIC_ETS_API_031 + *tc.name Once + *tc.desic Save current page + */ + it('Once',0,async function(done){ + emitKey="emitGetItemAtIndex"; + Utils.registerContainEvent("Once","a=b",31,done); + sendEventByKey('webcomponent',10,''); + }) + /* + *tc.number SUB_ACE_BASIC_ETS_API_032 + *tc.name GetItemAtIndex + *tc.desic Save current page + */ + it('GetItemAtIndex',0,async function(done){ + emitKey="emitContextMenuMediaType"; + Utils.registerEvent("GetItemAtIndex","index",32,done); + sendEventByKey('webcomponent',10,''); + }) + /* + *tc.number SUB_ACE_BASIC_ETS_API_033 + *tc.name ContextMenuMediaType + *tc.desic Save current page + */ + it('ContextMenuMediaType',0,async function(done){ + emitKey="emitContextMenuInputFieldType"; + Utils.registerEvent("ContextMenuMediaType",1,33,done); + sendEventByKey('webcomponent',10,''); + }) + /* + *tc.number SUB_ACE_BASIC_ETS_API_034 + *tc.name ContextMenuInputFieldType + *tc.desic Save current page + */ + it('ContextMenuInputFieldType',0,async function(done){ + emitKey="emitContextMenuEditStateFlags"; + Utils.registerEvent("ContextMenuInputFieldType",1,34,done); + Utils.registerEvent("ContextMenuInputFieldType",4,35,done); + Utils.registerEvent("ContextMenuInputFieldType",5,36,done); + sendEventByKey('webcomponent',10,''); + }) + /* + *tc.number SUB_ACE_BASIC_ETS_API_035 + *tc.name ContextMenuEditStateFlags + *tc.desic Save current page + */ + it('ContextMenuEditStateFlags',0,async function(done){ + emitKey="emitContextMenuEditStateFlags"; + Utils.registerEvent("ContextMenuEditStateFlags",0,37,done); + Utils.registerEvent("ContextMenuEditStateFlags",1,38,done); + Utils.registerEvent("ContextMenuEditStateFlags",2,39,done); + Utils.registerEvent("ContextMenuEditStateFlags",4,40,done); + Utils.registerEvent("ContextMenuEditStateFlags",8,41,done); + sendEventByKey('webcomponent',10,''); + }) }) -} \ No newline at end of file +} diff --git a/arkui/ace_ets_web_dev_three/entry/src/main/module.json b/arkui/ace_ets_web_dev_three/entry/src/main/module.json index e23e2fa4adf7499fa14876bdb5380f6b98211e58..988c1bf8ec01db2c0d6e6b065039889cb768089f 100644 --- a/arkui/ace_ets_web_dev_three/entry/src/main/module.json +++ b/arkui/ace_ets_web_dev_three/entry/src/main/module.json @@ -15,11 +15,11 @@ "uiSyntax": "ets", "pages": "$profile:main_pages", "metadata": [ - { - "name": "ArkTSPartialUpdate", - "value": "false" - } - ], + { + "name": "ArkTSPartialUpdate", + "value": "true" + } + ], "abilities": [{ "name": "com.example.myapplication.MainAbility", "srcEntrance": "./ets/MainAbility/MainAbility.ts", @@ -46,4 +46,4 @@ } ] } -} +} \ No newline at end of file