From fcf43dce382b501ed40f531de6f9e8a4cd471ce5 Mon Sep 17 00:00:00 2001 From: leiyuqian Date: Tue, 1 Nov 2022 16:18:11 +0800 Subject: [PATCH] fixed ee96952 from https://gitee.com/leiyuqian/xts_acts/pulls/6288 modify resourceschedule backgroundtaskmanager testcases Signed-off-by: leiyuqian Change-Id: Idaa7ec4cec5ff2e77e44c8bb6210a64eea61ea71 --- .../backgroundtaskmanager/Test.json | 11 - .../src/main/config.json | 21 +- .../src/main/js/ServiceAbility/service.js | 223 ++++++++++++++++++ .../main/js/test/ContinuousTaskJsunit.test.js | 4 +- .../main/resources/base/element/string.json | 4 + 5 files changed, 246 insertions(+), 17 deletions(-) create mode 100644 resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/ServiceAbility/service.js diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/Test.json b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/Test.json index 5084909fe..340783427 100644 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/Test.json +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/Test.json @@ -22,20 +22,9 @@ "mkdir /data/test" ] }, - { - "type": "PushKit", - "push": [ - "ContinuousTaskRelyHap.hap->/data/test/ContinuousTaskRelyHap.hap" - ] - }, { "type": "ShellKit", - "run-command": [ - "bm install -p /data/test/ContinuousTaskRelyHap.hap", - "aa start -a com.example.continuoustaskserver.MainAbility -b com.example.continuoustaskserver" - ], "teardown-command": [ - "bm uninstall -n com.example.continuoustaskserver", "rm -rf data/test" ] } diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/config.json b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/config.json index 0a6129470..c7be58e17 100644 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/config.json +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/config.json @@ -16,14 +16,15 @@ "package": "ohos.acts.resourceschedule.taskmgr.js.function", "name": ".entry", "deviceType": [ - "tablet", - "default", + "tablet", + "default", "phone" ], "distro": { "deliveryWithInstall": true, "moduleName": "entry", - "moduleType": "entry" + "moduleType": "entry", + "installationFree": false }, "abilities": [ { @@ -61,7 +62,19 @@ "type": "page", "visible": true, "launchType": "standard" - } + }, + { + "backgroundModes": [ + "location" + ], + "visible": true, + "srcPath": "ServiceAbility", + "name": ".ServiceAbility", + "icon": "$media:icon", + "srcLanguage": "js", + "description": "$string:description_serviceability", + "type": "service" + } ], "js": [ { diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/ServiceAbility/service.js b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/ServiceAbility/service.js new file mode 100644 index 000000000..0b8dd6e9a --- /dev/null +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/ServiceAbility/service.js @@ -0,0 +1,223 @@ +/* + * 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 notification from '@ohos.notification'; +import featureAbility from '@ohos.ability.featureAbility'; +import wantAgent from '@ohos.wantAgent'; +import backgroundTaskManager from '@ohos.backgroundTaskManager'; +import particleAbility from '@ohos.ability.particleAbility'; +import commonEvent from '@ohos.commonEvent'; + +const TAG = "BGMODE_TEST "; + +let event; + +let request = { + content: { + contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, + normal: { + title: "title", + text: "text" + } + }, + id: 1 +}; + +let wantAgentInfo = { + wants: [ + { + bundleName: "ohos.acts.resourceschedule.taskmgr.js.function", + abilityName: "ohos.acts.resourceschedule.taskmgr.js.function.MainAbility" + } + ], + operationType: wantAgent.OperationType.START_ABILITY, + requestCode: 0, + wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] +}; + +function callback(err, data) { + if (err) { + console.error(TAG + " Operation failed"); + } else { + console.info(TAG + " Operation succeed"); + commonEvent.publish(event, (err) => { + if (err.code) { + console.error(TAG + "PublishCallBack failed"); + } else { + console.info(TAG + "Publish succeed"); + } + }) + } +} + +function startContinuousTaskUseApi7Callback() { + event = "startTaskUseApi7Callback"; + particleAbility.startBackgroundRunning(1, request, callback); +} + +function stopContinuousTaskUseApi7Callback() { + event = "stopTaskUseApi7Callback"; + particleAbility.startBackgroundRunning(1, request).then(() => { + particleAbility.cancelBackgroundRunning(callback); + }); +} + +function startContinuousTaskUseApi8Callback() { + event = "startTaskUseApi8Callback"; + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.LOCATION, data, callback); + }); +} + +function stopContinuousTaskUseApi8Callback() { + event = "stopTaskUseApi8Callback"; + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + return backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.LOCATION, data); + }).then(() => { + backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext(), callback); + }); +} + +function startContinuousTaskUseApi7Promise() { + particleAbility.startBackgroundRunning(1, request).then(() => { + commonEvent.publish("startTaskUseApi7Promise", (err) => { + if (err.code) { + console.error(TAG + "PublishCallBack failed"); + } else { + console.info(TAG + "Publish succeed"); + } + }); + }); +} + +function stopContinuousTaskUseApi7Promise() { + particleAbility.startBackgroundRunning(1, request).then(() => { + return particleAbility.cancelBackgroundRunning(); + }).then(() => { + commonEvent.publish("stopTaskUseApi7Promise", (err) => { + if (err.code) { + console.error(TAG + "PublishCallBack failed"); + } else { + console.info(TAG + "Publish succeed"); + } + }); + }); +} + +function startContinuousTaskUseApi8Promise() { + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + return backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.LOCATION, data); + }).then(() => { + commonEvent.publish("startTaskUseApi8Promise", (err) => { + if (err.code) { + console.error(TAG + "PublishCallBack failed"); + } else { + console.info(TAG + "Publish succeed"); + } + }); + }); +} + +function stopContinuousTaskUseApi8Promise() { + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + return backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.LOCATION, data); + }).then(() => { + return backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()); + }).then(() => { + commonEvent.publish("stopTaskUseApi8Promise", (err) => { + if (err.code) { + console.error(TAG + "PublishCallBack failed"); + } else { + console.info(TAG + "Publish succeed"); + } + }) + }) +} + +function startContinuousTaskInvalidBgmode() { + wantAgent.getWantAgent(wantAgentInfo).then((data) => { + return backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.BLUETOOTH_INTERACTION, data); + }).catch(() => { + commonEvent.publish("startTaskInvalidBgmode", (err) => { + if (err.code) { + console.error(TAG + "PublishCallBack failed"); + } else { + console.info(TAG + "Publish succeed"); + } + }); + }); +} + +function handleOption(want) { + switch (want.parameters.option) { + case "testcase1": + startContinuousTaskUseApi7Callback(); + break; + case "testcase2": + stopContinuousTaskUseApi7Callback(); + break; + case "testcase3": + startContinuousTaskUseApi8Callback(); + break; + case "testcase4": + stopContinuousTaskUseApi8Callback(); + break; + case "testcase5": + startContinuousTaskUseApi7Promise(); + break; + case "testcase6": + stopContinuousTaskUseApi7Promise(); + break; + case "testcase7": + startContinuousTaskUseApi8Promise(); + break; + case "testcase8": + stopContinuousTaskUseApi8Promise(); + break; + case "testcase9": + startContinuousTaskInvalidBgmode(); + break; + default: + console.warn(TAG + 'Unknown option'); + break; + } +} + +export default { + onStart() { + console.info(TAG + 'ServiceAbility onStart'); + }, + onStop() { + console.info(TAG + 'ServiceAbility onStop'); + }, + onCommand(want, startId) { + console.info(TAG + 'ServiceAbility onCommand'); + console.info(TAG + "Get onCommand want: " + JSON.stringify(want)); + particleAbility.cancelBackgroundRunning(); + backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()); + handleOption(want); + }, + onConnect(want) { + console.info(TAG + 'ServiceAbility onConnect'); + }, + onDisConnect(want) { + console.info(TAG + 'ServiceAbility onDisConnect'); + }, +}; \ No newline at end of file diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/test/ContinuousTaskJsunit.test.js b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/test/ContinuousTaskJsunit.test.js index 62731ba92..f8610f8b6 100644 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/test/ContinuousTaskJsunit.test.js +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/test/ContinuousTaskJsunit.test.js @@ -85,8 +85,8 @@ describe("ContinuousTaskJsTest", function () { featureAbility.startAbility( { want: { - bundleName: "com.example.continuoustaskserver", - abilityName: "com.example.continuoustaskserver.ServiceAbility", + bundleName: "ohos.acts.resourceschedule.taskmgr.js.function", + abilityName: "ohos.acts.resourceschedule.taskmgr.js.function.ServiceAbility", parameters: { option: option } diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/resources/base/element/string.json b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/resources/base/element/string.json index c94190af0..3f6e8918a 100644 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/resources/base/element/string.json +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/resources/base/element/string.json @@ -23,6 +23,10 @@ { "name": "TestAbility_label", "value": "label" + }, + { + "name": "description_serviceability", + "value": "Service Ability" } ] } \ No newline at end of file -- GitLab