From db6f900c0a8f4382774377ef3770520720e54157 Mon Sep 17 00:00:00 2001 From: wangdongdong Date: Thu, 21 Jul 2022 11:15:29 +0800 Subject: [PATCH] Signed-off-by: wangdongdong Change-Id: I6560356b0762d1c33b4e146ce461942bcc089b19 --- .../AppScope/app.json5 | 26 +++ .../resources/base/element/string.json | 8 + .../resources/base/media/app_icon.png | Bin 0 -> 6790 bytes .../continuationManualTestSuite/README_zh.md | 29 ++++ .../build-profile.json5 | 42 +++++ .../entry/.gitignore | 3 + .../entry/build-profile.json5 | 28 +++ .../entry/hvigorfile.js | 17 ++ .../entry/package-lock.json | 5 + .../entry/package.json | 13 ++ .../src/main/ets/Application/AbilityStage.ts | 23 +++ .../entry/src/main/ets/MainAbility/Logger.ts | 32 ++++ .../src/main/ets/MainAbility/MainAbility.ts | 160 ++++++++++++++++++ .../src/main/ets/MainAbility/stringConst.ts | 20 +++ .../entry/src/main/ets/pages/index.ets | 69 ++++++++ .../entry/src/main/ets/pages/study.ets | 59 +++++++ .../entry/src/main/ets/pages/work.ets | 62 +++++++ .../entry/src/main/module.json5 | 59 +++++++ .../main/resources/base/element/string.json | 16 ++ .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../resources/base/profile/main_pages.json | 7 + .../continuationManualTestSuite/hvigorfile.js | 17 ++ .../continuationManualTestSuite/package.json | 17 ++ .../screenshots/device/index.png | Bin 0 -> 25014 bytes .../screenshots/device/work.png | Bin 0 -> 22223 bytes 25 files changed, 712 insertions(+) create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/app.json5 create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/resources/base/element/string.json create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/resources/base/media/app_icon.png create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/README_zh.md create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/build-profile.json5 create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/.gitignore create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/build-profile.json5 create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/hvigorfile.js create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/package-lock.json create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/package.json create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/Application/AbilityStage.ts create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/MainAbility/Logger.ts create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/MainAbility/MainAbility.ts create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/MainAbility/stringConst.ts create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/index.ets create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/study.ets create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/work.ets create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/module.json5 create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/resources/base/element/string.json create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/resources/base/media/icon.png create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/resources/base/profile/main_pages.json create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/hvigorfile.js create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/package.json create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/screenshots/device/index.png create mode 100644 services/dtbschedmgr/test/samples/continuationManualTestSuite/screenshots/device/work.png diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/app.json5 b/services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/app.json5 new file mode 100644 index 0000000..2fc5090 --- /dev/null +++ b/services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/app.json5 @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2022 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. + */ + +{ + "app": { + "bundleName": "com.ohos.continuationManualTestSuite.hmservice", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/resources/base/element/string.json b/services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/resources/base/element/string.json new file mode 100644 index 0000000..1fb202f --- /dev/null +++ b/services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "单实例迁移" + } + ] +} diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/resources/base/media/app_icon.png b/services/dtbschedmgr/test/samples/continuationManualTestSuite/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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'ContinueStudy', g_object.name) + let workInput = want.parameters.work // get user data from want params + Logger.info(`work input ${workInput}`) + AppStorage.SetOrCreate('ContinueWork', workInput) + this.contentStorage = new ContentStorage(); + Logger.info('ready to restore'); + this.context.restoreWindowStage(this.contentStorage); + } + } + + onCreate(want, launchParam) { + Logger.info("[Demo] MainAbility onCreate") + globalThis.abilityWant = want; + this.handleParam(want, launchParam) + } + + onContinue(wantParam : {[key: string]: any}) { + Logger.info(`onContinue version = ${wantParam.version}, targetDevice: ${wantParam.targetDevice}`) + let workInput = AppStorage.Get('ContinueWork'); + Logger.info(`onContinue work input = ${workInput}`); + + if (g_object.__sessionId === undefined) { + this.sessionId = distributedObject.genSessionId() + Logger.info(`onContinue generate new sessionId`) + } + else { + this.sessionId = g_object.__sessionId; + } + + wantParam["session"] = this.sessionId + g_object.name = AppStorage.Get('ContinueStudy'); + Logger.info(`onContinue sessionId = ${this.sessionId}, name = ${g_object.name}`) + g_object.setSessionId(this.sessionId); + g_object.save(wantParam.targetDevice, (result, data)=>{ + Logger.info("save callback"); + Logger.info("save sessionId " + data.sessionId); + Logger.info("save version " + data.version); + Logger.info("save deviceId " + data.deviceId); + }); + wantParam["work"] = workInput // set user input data into want params + return 0; + } + + onNewWant(want, launchParam) { + Logger.info("MainAbility onNewWant") + this.handleParam(want, launchParam) + } + + requestPermissions = async () => { + let permissions: Array = [ + "ohos.permission.DISTRIBUTED_DATASYNC" + ]; + let needGrantPermission = false + let accessManger = accessControl.createAtManager() + Logger.info("app permission get bundle info") + let bundleInfo = await bundle.getApplicationInfo(BUNDLE_NAME, 0, 100) + Logger.info(`app permission query permission ${bundleInfo.accessTokenId.toString()}`) + for (const permission of permissions) { + Logger.info(`app permission query grant status ${permission}`) + try { + let grantStatus = await accessManger.verifyAccessToken(bundleInfo.accessTokenId, permission) + if (grantStatus === PERMISSION_REJECT) { + needGrantPermission = true + break; + } + } catch (err) { + Logger.error(`app permission query grant status error ${permission} ${JSON.stringify(err)}`) + needGrantPermission = true + break; + } + } + if (needGrantPermission) { + Logger.info("app permission needGrantPermission") + try { + await this.context.requestPermissionsFromUser(permissions) + } catch (err) { + Logger.error(`app permission ${JSON.stringify(err)}`) + } + } else { + Logger.info("app permission already granted") + } + } + + onDestroy() { + Logger.info("MainAbility onDestroy") + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + Logger.info("MainAbility onWindowStageCreate") + this.requestPermissions() + windowStage.setUIContent(this.context, "pages/index", null) + } + + onWindowStageRestore(windowStage) { + Logger.info("MainAbility onWindowStageRestore") + this.requestPermissions() + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + Logger.info("MainAbility onWindowStageDestroy") + } + + onForeground() { + // Ability has brought to foreground + Logger.info("MainAbility onForeground") + } + + onBackground() { + // Ability has back to background + Logger.info("MainAbility onBackground") + } +}; diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/MainAbility/stringConst.ts b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/MainAbility/stringConst.ts new file mode 100644 index 0000000..2f9538b --- /dev/null +++ b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/MainAbility/stringConst.ts @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2022 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. + */ + +export default class pageName { + static page1 = "工作" + static page2 = "学习" + static backKey = "返回首页" +} diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/index.ets b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/index.ets new file mode 100644 index 0000000..65a3683 --- /dev/null +++ b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/index.ets @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2022 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. + */ + +import router from '@system.router'; +import pageName from '../MainAbility/stringConst'; +import Logger from '../MainAbility/Logger'; + +async function routePage(pageIndex) { + Logger.info("routePage"); + let options = { + uri: pageIndex + } + try { + await router.push(options) + } catch (err) { + Logger.error(`fail callback, code: ${err.code}, msg: ${err.msg}`) + } +} + +@Entry +@Component +struct Index { + @State message: string = '记事本(免安装)' + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text(pageName.page1) + .fontSize(35) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Normal) + .margin({ + top: 30 + }) + .backgroundColor('#2cb3cb') + .onClick(() => routePage('pages/work')) + + Button() { + Text(pageName.page2) + .fontSize(35) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Normal) + .margin({ + top: 60 + }) + .backgroundColor('#2cb3cb') + .onClick(() => routePage('pages/study')) + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/study.ets b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/study.ets new file mode 100644 index 0000000..133425c --- /dev/null +++ b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/study.ets @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2022 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. + */ + +import router from '@system.router'; +import pageName from '../MainAbility/stringConst'; +import Logger from '../MainAbility/Logger'; + +@Entry +@Component +struct Study { + private content: string = pageName.page2 + @StorageLink('ContinueStudy') inputTxt2: string = ''; + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Text(`${this.content}`) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Column() { + TextArea({ placeholder: 'please input', text: this.inputTxt2 }) // restore user input data on ui + .textAlign(TextAlign.Start) + .onChange((value) => { + Logger.info(`TextInput onChange: ${value}`); + this.inputTxt2 = value; + AppStorage.Set('ContinueStudy', value); + }) + .width('50%') + .height(50) + } + + Button() { + Text(pageName.backKey) + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .onClick(() => { + router.back() + }) + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/work.ets b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/work.ets new file mode 100644 index 0000000..c813031 --- /dev/null +++ b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/ets/pages/work.ets @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2022 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. + */ + +import router from '@system.router'; +import pageName from '../MainAbility/stringConst'; +import Logger from '../MainAbility/Logger'; + +@Entry +@Component +struct Work { + private content: string = pageName.page1; + @StorageLink('ContinueWork') inputTxt: string = ''; + + controller: CustomDialogController + cancel: () => void + confirm: () => void + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Text(`${this.content}`) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Column() { + TextArea({placeholder:'please input', text:this.inputTxt}) // restore user input data on ui + .textAlign(TextAlign.Start) + .onChange((value) => { + Logger.info(`TextInput onChange: ${value}`); + this.inputTxt = value; + AppStorage.Set('ContinueWork', value); + }) + .width('50%') + .height(50) + } + Button() { + Text(pageName.backKey) + .fontSize(20) + .fontWeight(FontWeight.Bold) + } + .type(ButtonType.Capsule) + .margin({ + top: 60 + }) + .backgroundColor('#0D9FFB') + .onClick(() => { + router.back() + }) + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/module.json5 b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/module.json5 new file mode 100644 index 0000000..6c03f0f --- /dev/null +++ b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/module.json5 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2022 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. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "srcEntrance": "./ets/Application/AbilityStage.ts", + "description": "$string:entry_desc", + "mainElement": "MainAbility", + "deviceTypes": [ + "phone", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": true, + "pages": "$profile:main_pages", + "uiSyntax": "ets", + "abilities": [ + { + "name": "MainAbility", + "srcEntrance": "./ets/MainAbility/MainAbility.ts", + "description": "$string:MainAbility_desc", + "icon": "$media:icon", + "label": "$string:MainAbility_label", + "visible": true, + "continuable": true, + "launchType": "singleton", + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.DISTRIBUTED_DATASYNC" + }, + ] + } +} \ No newline at end of file diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/resources/base/element/string.json b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000..55d4a4a --- /dev/null +++ b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "MainAbility_label", + "value": "单实例迁移" + } + ] +} \ No newline at end of file diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/resources/base/media/icon.png b/services/dtbschedmgr/test/samples/continuationManualTestSuite/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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 literal 0 HcmV?d00001 diff --git a/services/dtbschedmgr/test/samples/continuationManualTestSuite/screenshots/device/work.png b/services/dtbschedmgr/test/samples/continuationManualTestSuite/screenshots/device/work.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c0db61f17c0249112281e93f2ecede16f98a51 GIT binary patch literal 22223 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