diff --git a/resourceschedule/resourceschedule_standard/BUILD.gn b/resourceschedule/resourceschedule_standard/BUILD.gn index 1eda079292fd21d227769f26c35abdeea0273572..8f6c828b530a2854f0320ba1dc755639aeaf8157 100644 --- a/resourceschedule/resourceschedule_standard/BUILD.gn +++ b/resourceschedule/resourceschedule_standard/BUILD.gn @@ -18,6 +18,7 @@ group("resourceschedule_standard") { if (is_standard_system) { deps = [ "backgroundtaskmanager:resourceschedule_backgroundtaskmanager_js_test", + "continuoustaskrelyhap:ContinuousTaskRelyHap", "deviceusagestatisticsjsunit:resourceschedule_deviceusagestatisticsjsunit_js_test", "reminderagent:resourceschedule_reminderagent_js_test" ] diff --git a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/Test.json b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/Test.json index e22867d19e831a6e5bea9bbefd57b30d767a8300..904d836216d14de71b1ca9d6c36b16ee10890f7e 100644 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/Test.json +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/Test.json @@ -13,6 +13,30 @@ ], "type": "AppInstallKit", "cleanup-apps": true + }, + { + "type": "ShellKit", + "run-command": [ + "remount", + "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/js/default/test/ContinuousTaskJsunit.test.js b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/ContinuousTaskJsunit.test.js index 00e264899cbc12c42b15c1ad454878557b3931e6..0db0730d7e668401ba16cd4dcf0a39d3b109e3c7 100644 --- a/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/ContinuousTaskJsunit.test.js +++ b/resourceschedule/resourceschedule_standard/backgroundtaskmanager/src/main/js/default/test/ContinuousTaskJsunit.test.js @@ -13,13 +13,13 @@ * limitations under the License. */ -import notification from '@ohos.notification'; -import wantAgent from '@ohos.wantAgent'; -import particleAbility from '@ohos.ability.particleAbility' -import backgroundTaskManager from '@ohos.backgroundTaskManager' -import featureAbility from '@ohos.ability.featureAbility' +import backgroundTaskManager from '@ohos.backgroundTaskManager'; +import featureAbility from '@ohos.ability.featureAbility'; +import commonEvent from '@ohos.commonEvent'; -import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' +import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'; + +const TAG = "ContinuousTaskJsTest "; describe("ContinuousTaskJsTest", function () { beforeAll(function() { @@ -27,7 +27,7 @@ describe("ContinuousTaskJsTest", function () { /* * @tc.setup: setup invoked before all testcases */ - console.info('beforeAll called') + console.info('beforeAll called'); }) afterAll(function() { @@ -35,7 +35,7 @@ describe("ContinuousTaskJsTest", function () { /* * @tc.teardown: teardown invoked after all testcases */ - console.info('afterAll called') + console.info('afterAll called'); }) beforeEach(function() { @@ -43,7 +43,7 @@ describe("ContinuousTaskJsTest", function () { /* * @tc.setup: setup invoked before each testcases */ - console.info('beforeEach called') + console.info('beforeEach called'); }) afterEach(function() { @@ -51,431 +51,241 @@ describe("ContinuousTaskJsTest", function () { /* * @tc.teardown: teardown invoked after each testcases */ - console.info('afterEach called') - particleAbility.cancelBackgroundRunning(); - setTimeout(() => {}, 500); - backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()); - setTimeout(() => {}, 500); + console.info('afterEach called'); }) + async function startAbilityWithOption(subscribeInfo, option, event, done) { + commonEvent.createSubscriber(subscribeInfo, (err, subscriber) => { + if (subscriber !== null && subscriber !== undefined) { + console.info(TAG + "Subscribe begin"); + commonEvent.subscribe(subscriber, (err, data) => { + if (data !== null && data !== undefined) { + console.info(TAG + "Get comment event: " + JSON.stringify(data)); + if (data.event === event) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + } else { + console.error(TAG + "SubscribeCallBack failed"); + expect(false).assertTrue(); + } + done(); + }) + } else { + console.error(TAG + "createSubscriber failed"); + expect(false).assertTrue(); + done(); + } + }) + + setTimeout(() => { + console.info(TAG + "Start ability with option:" + option + " begin"); + featureAbility.startAbility( + { + want: { + bundleName: "com.example.continuoustaskserver", + abilityName: "com.example.continuoustaskserver.ServiceAbility", + parameters: { + option: option + } + } + } + ).catch(() => { + console.error(TAG + "Start ability failed"); + expect(false).assertTrue(); + done(); + }); + }, 1000); + } + /* * @tc.name:ContinuousTaskJsTest001 - * @tc.desc:verify new startBackgroundrunning interface promise mode work properly + * @tc.desc:verify old startBackgroundrunning interface callback mode work properly * @tc.type: FUNC * @tc.require: */ it("ContinuousTaskJsTest001", 0, async function (done) { - let wantAgentInfo = { - wants: [ - { - bundleName: "com.continuoustask.test", - abilityName: "com.continuoustask.test.MainAbility" - } - ], - operationType: 2, - requestCode: 0, - wantAgentFlags: [3] - }; - wantAgent.getWantAgent(wantAgentInfo).then((data) => { - backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), - backgroundTaskManager.BackgroundMode.DATA_TRANSFER, data).then(() => { - console.log("ContinuousTaskJsTest001 startBackgroundRunning success"); - expect(true).assertTrue(); - setTimeout(() => { - done(); - }, 500); - }).catch((err) => { - expect(false).assertTrue(); - console.log("ContinuousTaskJsTest001 startBackgroundRunning failure"); - setTimeout(() => { - done(); - }, 500); - }); - }); + console.info(TAG + '-----------------ContinuousTaskJsTest001 begin--------------------'); + startAbilityWithOption({ events: ["startTaskUseApi7Callback"] }, "testcase1", "startTaskUseApi7Callback", done); }) /* * @tc.name:ContinuousTaskJsTest002 - * @tc.desc:verify new startBackgroundrunning interface callback mode work properly + * @tc.desc:verify cancelBackgroundrunning interface callback mode work properly * @tc.type: FUNC * @tc.require: */ it("ContinuousTaskJsTest002", 0, async function (done) { - function conTaskCallback(err, data) { - if (err) { - console.info('ContinuousTaskJsTest002 startBackgroundRunning failed'); - expect(false).assertTrue(); - } else { - console.info('ContinuousTaskJsTest002 startBackgroundRunning succeed'); - expect(true).assertTrue(); - } - setTimeout(()=>{ - done(); - }, 500); - } - let wantAgentInfo = { - wants: [ - { - bundleName: "com.continuoustask.test", - abilityName: "com.continuoustask.test.MainAbility" - } - ], - operationType: 2, - requestCode: 0, - wantAgentFlags: [3] - }; - wantAgent.getWantAgent(wantAgentInfo).then((data) => { - backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), - backgroundTaskManager.BackgroundMode.DATA_TRANSFER, data, conTaskCallback); - }); + console.info(TAG + '-----------------ContinuousTaskJsTest002 begin--------------------'); + startAbilityWithOption({ events: ["stopTaskUseApi7Callback"] }, "testcase2", "stopTaskUseApi7Callback", done); }) /* * @tc.name:ContinuousTaskJsTest003 - * @tc.desc:verify old startBackgroundrunning interface promise mode work properly + * @tc.desc:verify new startBackgroundrunning interface callback mode work properly * @tc.type: FUNC * @tc.require: */ it("ContinuousTaskJsTest003", 0, async function (done) { - let wantAgentInfo = { - wants: [ - { - bundleName: "com.continuoustask.test", - abilityName: "com.continuoustask.test.MainAbility" - } - ], - operationType: 2, - requestCode: 0, - wantAgentFlags: [3] - }; - wantAgent.getWantAgent(wantAgentInfo).then((data) => { - let basicContent = { - title: "title", - text: "text" - }; - - let notificationContent = { - contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, - normal: basicContent - }; - - let request = { - content: notificationContent, - wantAgent: data - } - - let id = 1; - - particleAbility.startBackgroundRunning(id, request).then((data) => { - console.log("ContinuousTaskJsTest003 startBackgroundRunning success"); - expect(true).assertTrue(); - setTimeout(() => { - done(); - }, 500); - }).catch((err) => { - expect(false).assertTrue(); - console.log("ContinuousTaskJsTest003 startBackgroundRunning failure"); - setTimeout(() => { - done(); - }, 500); - }); - }); + console.info(TAG + '-----------------ContinuousTaskJsTest003 begin--------------------'); + startAbilityWithOption({ events: ["startTaskUseApi8Callback"] }, "testcase3", "startTaskUseApi8Callback", done); }) /* * @tc.name:ContinuousTaskJsTest004 - * @tc.desc:verify old startBackgroundrunning interface callback mode work properly + * @tc.desc:verify new stopBackgroundrunning interface callback mode work properly * @tc.type: FUNC * @tc.require: */ it("ContinuousTaskJsTest004", 0, async function (done) { - function conTaskCallback(err, data) { - if (err) { - console.info('ContinuousTaskJsTest004 startBackgroundRunning failure'); - expect(false).assertTrue(); - } else { - console.info('ContinuousTaskJsTest004 startBackgroundRunning success'); - expect(true).assertTrue(); - } - setTimeout(()=>{ - done(); - }, 500); - } - let wantAgentInfo = { - wants: [ - { - bundleName: "com.continuoustask.test", - abilityName: "com.continuoustask.test.MainAbility" - } - ], - operationType: 2, - requestCode: 0, - wantAgentFlags: [3] - }; - wantAgent.getWantAgent(wantAgentInfo).then((data) => { - let basicContent = { - title: "title", - text: "text" - }; - - let notificationContent = { - contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, - normal: basicContent - }; - - let request = { - content: notificationContent, - wantAgent: data - } - - let id = 1; - - particleAbility.startBackgroundRunning(id, request, conTaskCallback); - }); + console.info(TAG + '-----------------ContinuousTaskJsTest004 begin--------------------'); + startAbilityWithOption({ events: ["stopTaskUseApi8Callback"] }, "testcase4", "stopTaskUseApi8Callback", done); }) /* * @tc.name:ContinuousTaskJsTest005 - * @tc.desc:verify new api stopBackgroundrunning interface promise mode work properly + * @tc.desc:verify old startBackgroundrunning interface promise mode work properly * @tc.type: FUNC * @tc.require: */ it("ContinuousTaskJsTest005", 0, async function (done) { - let wantAgentInfo = { - wants: [ - { - bundleName: "com.continuoustask.test", - abilityName: "com.continuoustask.test.MainAbility" - } - ], - operationType: 2, - requestCode: 0, - wantAgentFlags: [3] - }; - wantAgent.getWantAgent(wantAgentInfo).then((data) => { - backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), - backgroundTaskManager.BackgroundMode.DATA_TRANSFER, data).then((data) => { - backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then((data) => { - console.log("ContinuousTaskJsTest005 cancelBackgroundRunning success"); - expect(true).assertTrue(); - setTimeout(() => { - done(); - }, 500); - }).catch((err) => { - expect(false).assertTrue(); - console.log("ContinuousTaskJsTest005 cancelBackgroundRunning failure"); - setTimeout(() => { - done(); - }, 500); - }); - }) - }); + console.info(TAG + '-----------------ContinuousTaskJsTest005 begin--------------------'); + startAbilityWithOption({ events: ["startTaskUseApi7Promise"] }, "testcase5", "startTaskUseApi7Promise", done); }) /* - * @tc.name:ContinuousTaskJsTest006 - * @tc.desc:verify new api stopBackgroundrunning interface callback mode work properly - * @tc.type: FUNC - * @tc.require: - */ + * @tc.name:ContinuousTaskJsTest006 + * @tc.desc:verify cancelBackgroundrunning interface promise mode work properly + * @tc.type: FUNC + * @tc.require: + */ it("ContinuousTaskJsTest006", 0, async function (done) { - function conTaskCallback(err, data) { - if (err) { - console.info('ContinuousTaskJsTest006 startBackgroundRunning failure'); - expect(false).assertTrue(); - } else { - console.info('ContinuousTaskJsTest006 startBackgroundRunning success'); - expect(true).assertTrue(); - } - setTimeout(()=>{ - done(); - }, 500); - } - let wantAgentInfo = { - wants: [ - { - bundleName: "com.continuoustask.test", - abilityName: "com.continuoustask.test.MainAbility" - } - ], - operationType: 2, - requestCode: 0, - wantAgentFlags: [3] - }; - wantAgent.getWantAgent(wantAgentInfo).then((data) => { - backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), - backgroundTaskManager.BackgroundMode.DATA_TRANSFER, data).then((data) => { - backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext(), conTaskCallback); - }) - }); + console.info(TAG + '-----------------ContinuousTaskJsTest006 begin--------------------'); + startAbilityWithOption({ events: ["stopTaskUseApi7Promise"] }, "testcase6", "stopTaskUseApi7Promise", done); }) /* * @tc.name:ContinuousTaskJsTest007 - * @tc.desc:verify old api cancelBackgroundrunning interface promise mode work properly + * @tc.desc:verify new startBackgroundrunning interface promise mode work properly * @tc.type: FUNC * @tc.require: */ it("ContinuousTaskJsTest007", 0, async function (done) { - let wantAgentInfo = { - wants: [ - { - bundleName: "com.continuoustask.test", - abilityName: "com.continuoustask.test.MainAbility" - } - ], - operationType: 2, - requestCode: 0, - wantAgentFlags: [3] - }; - await wantAgent.getWantAgent(wantAgentInfo).then((data) => { - particleAbility.startBackgroundRunning(data); - setTimeout(()=>{ - }, 500); - }); - - particleAbility.cancelBackgroundRunning().then(() => { - console.log("ContinuousTaskJsTest007 cancelBackgroundRunning success"); - expect(true).assertTrue(); - setTimeout(() => { - done(); - }, 500); - }).catch( (err) => { - expect(false).assertTrue(); - console.log("ContinuousTaskJsTest007 cancelBackgroundRunning failure"); - setTimeout(() => { - done(); - }, 500); - }); + console.info(TAG + '-----------------ContinuousTaskJsTest007 begin--------------------'); + startAbilityWithOption({ events: ["startTaskUseApi8Promise"] }, "testcase7", "startTaskUseApi8Promise", done); }) /* * @tc.name:ContinuousTaskJsTest008 - * @tc.desc:verify old cancelBackgroundrunning interface callback mode work properly + * @tc.desc:verify new stopBackgroundrunning interface promise mode work properly * @tc.type: FUNC * @tc.require: */ it("ContinuousTaskJsTest008", 0, async function (done) { - function conTaskCallback(err, data) { - if (err) { - console.info('ContinuousTaskJsTest008 startBackgroundRunning failure'); - expect(false).assertTrue(); - } else { - console.info('ContinuousTaskJsTest008 startBackgroundRunning success'); - expect(true).assertTrue(); - } - setTimeout(()=>{ - done(); - }, 500); - } - let wantAgentInfo = { - wants: [ - { - bundleName: "com.continuoustask.test", - abilityName: "com.continuoustask.test.MainAbility" - } - ], - operationType: 2, - requestCode: 0, - wantAgentFlags: [3] - }; - await wantAgent.getWantAgent(wantAgentInfo).then((data) => { - particleAbility.startBackgroundRunning(data); - setTimeout(()=>{ - }, 500); - }); + console.info(TAG + '-----------------ContinuousTaskJsTest008 begin--------------------'); + startAbilityWithOption({ events: ["stopTaskUseApi8Promise"] }, "testcase8", "stopTaskUseApi8Promise", done); + }) - particleAbility.cancelBackgroundRunning(conTaskCallback); + /* + * @tc.name:ContinuousTaskJsTest009 + * @tc.desc:verify continuous task request failed with invalid background mode + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest009", 0, async function (done) { + console.info(TAG + '-----------------ContinuousTaskJsTest009 begin--------------------'); + startAbilityWithOption({ events: ["startTaskInvalidBgmode"] }, "testcase9", "startTaskInvalidBgmode", done); }) - - /* - * @tc.name: ContinuousTaskJsTest009 - * @tc.desc: test work scheduler constant - * @tc.type: FUNC - * @tc.require: - */ - it("ContinuousTaskJsTest009", 0, function (done) { - console.info('----------------------ContinuousTaskJsTest009---------------------------'); + + /* + * @tc.name: ContinuousTaskJsTest010 + * @tc.desc: test work scheduler constant + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest010", 0, async function (done) { + console.info(TAG + '-----------------ContinuousTaskJsTest010 begin--------------------'); let value1 = backgroundTaskManager.BackgroundMode.DATA_TRANSFER; - expect(value1).assertEqual(1) + expect(value1).assertEqual(1); done(); }) - - /* - * @tc.name: ContinuousTaskJsTest010 - * @tc.desc: test work scheduler constant - * @tc.type: FUNC - * @tc.require: - */ - it("ContinuousTaskJsTest010", 0, function (done) { - console.info('----------------------ContinuousTaskJsTest010---------------------------'); + + /* + * @tc.name: ContinuousTaskJsTest011 + * @tc.desc: test work scheduler constant + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest011", 0, async function (done) { + console.info(TAG + '-----------------ContinuousTaskJsTest011 begin--------------------'); let value1 = backgroundTaskManager.BackgroundMode.AUDIO_PLAYBACK; - expect(value1).assertEqual(2) + expect(value1).assertEqual(2); done(); }) - - /* - * @tc.name: ContinuousTaskJsTest011 - * @tc.desc: test work scheduler constant - * @tc.type: FUNC - * @tc.require: - */ - it("ContinuousTaskJsTest011", 0, function (done) { - console.info('----------------------ContinuousTaskJsTest011---------------------------'); + + /* + * @tc.name: ContinuousTaskJsTest012 + * @tc.desc: test work scheduler constant + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest012", 0, async function (done) { + console.info(TAG + '-----------------ContinuousTaskJsTest012 begin--------------------'); let value1 = backgroundTaskManager.BackgroundMode.AUDIO_RECORDING; - expect(value1).assertEqual(3) + expect(value1).assertEqual(3); done(); }) - - /* - * @tc.name: ContinuousTaskJsTest012 - * @tc.desc: test work scheduler constant - * @tc.type: FUNC - * @tc.require: - */ - it("ContinuousTaskJsTest012", 0, function (done) { - console.info('----------------------ContinuousTaskJsTest012---------------------------'); + + /* + * @tc.name: ContinuousTaskJsTest013 + * @tc.desc: test work scheduler constant + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest013", 0, async function (done) { + console.info(TAG + '-----------------ContinuousTaskJsTest013 begin--------------------'); let value1 = backgroundTaskManager.BackgroundMode.LOCATION; - expect(value1).assertEqual(4) + expect(value1).assertEqual(4); done(); }) - - /* - * @tc.name: ContinuousTaskJsTest013 - * @tc.desc: test work scheduler constant - * @tc.type: FUNC - * @tc.require: - */ - it("ContinuousTaskJsTest013", 0, function (done) { - console.info('----------------------ContinuousTaskJsTest013---------------------------'); + + /* + * @tc.name: ContinuousTaskJsTest014 + * @tc.desc: test work scheduler constant + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest014", 0, async function (done) { + console.info(TAG + '-----------------ContinuousTaskJsTest014 begin--------------------'); let value1 = backgroundTaskManager.BackgroundMode.BLUETOOTH_INTERACTION; - expect(value1).assertEqual(5) + expect(value1).assertEqual(5); done(); }) - - /* - * @tc.name: ContinuousTaskJsTest014 - * @tc.desc: test work scheduler constant - * @tc.type: FUNC - * @tc.require: - */ - it("ContinuousTaskJsTest014", 0, function (done) { - console.info('----------------------ContinuousTaskJsTest014---------------------------'); + + /* + * @tc.name: ContinuousTaskJsTest015 + * @tc.desc: test work scheduler constant + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest015", 0, async function (done) { + console.info(TAG + '-----------------ContinuousTaskJsTest015 begin--------------------'); let value1 = backgroundTaskManager.BackgroundMode.MULTI_DEVICE_CONNECTION; - expect(value1).assertEqual(6) + expect(value1).assertEqual(6); done(); }) - - /* - * @tc.name: ContinuousTaskJsTest017 - * @tc.desc: test work scheduler constant - * @tc.type: FUNC - * @tc.require: - */ - it("ContinuousTaskJsTest017", 0, function (done) { - console.info('----------------------ContinuousTaskJsTest017---------------------------'); + + /* + * @tc.name: ContinuousTaskJsTest016 + * @tc.desc: test work scheduler constant + * @tc.type: FUNC + * @tc.require: + */ + it("ContinuousTaskJsTest016", 0, async function (done) { + console.info(TAG + '-----------------ContinuousTaskJsTest016 begin--------------------'); let value1 = backgroundTaskManager.BackgroundMode.TASK_KEEPING; - expect(value1).assertEqual(9) + expect(value1).assertEqual(9); done(); }) }) \ No newline at end of file diff --git a/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/BUILD.gn b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..cf8d1054dd350b39a7d03646fea75f939714d9e6 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/BUILD.gn @@ -0,0 +1,38 @@ +# 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. +import("//test/xts/tools/build/suite.gni") + +ohos_hap("ContinuousTaskRelyHap") { + hap_profile = "./entry/src/main/config.json" + hap_name = "ContinuousTaskRelyHap" + subsystem_name = XTS_SUITENAME + final_hap_path = + "${SUITES_OUTPUT_ROOT}/${XTS_SUITENAME}/testcases/${hap_name}.hap" + testonly = true + deps = [ + ":hjs_demo_js_assets", + ":hjs_demo_js_service_assets", + ":hjs_demo_resources", + ] + certificate_profile = "./signature/openharmony_sx.p7b" +} +ohos_js_assets("hjs_demo_js_assets") { + source_dir = "./entry/src/main/js/default" +} +ohos_js_assets("hjs_demo_js_service_assets") { + source_dir = "./entry/src/main/js/ServiceAbility" +} +ohos_resources("hjs_demo_resources") { + sources = [ "./entry/src/main/resources" ] + hap_profile = "./entry/src/main/config.json" +} diff --git a/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/config.json b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..eb91b3a99af77622425f1fad6012940c10814f59 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/config.json @@ -0,0 +1,78 @@ +{ + "app": { + "bundleName": "com.example.continuoustaskserver", + "vendor": "example", + "version": { + "code": 1000000, + "name": "1.0.0" + }, + "apiVersion": { + "compatible": 7, + "target": 7 + } + }, + "deviceConfig": {}, + "module": { + "package": "com.example.continuoustaskserver", + "name": ".MyApplication", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry", + "installationFree": false + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "name": "com.example.continuoustaskserver.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:app_name", + "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": [ + { + "pages": [ + "pages/index/index" + ], + "name": "default", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ], + "reqPermissions": [ + { + "name": "ohos.permission.KEEP_BACKGROUND_RUNNING" + } + ] + } +} \ No newline at end of file diff --git a/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/ServiceAbility/service.js b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/ServiceAbility/service.js new file mode 100644 index 0000000000000000000000000000000000000000..66098e2d683ed96792c259b59c47b9720847e217 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/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: "com.example.continuoustaskserver", + abilityName: "com.example.continuoustaskserver.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/continuoustaskrelyhap/entry/src/main/js/default/app.js b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/app.js new file mode 100644 index 0000000000000000000000000000000000000000..2a68c1992145a976957d7dcdd69a7e9c2e8e9877 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/app.js @@ -0,0 +1,22 @@ +/* + * 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. + */ +export default { + onCreate() { + console.info('AceApplication onCreate'); + }, + onDestroy() { + console.info('AceApplication onDestroy'); + } +}; diff --git a/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/i18n/en-US.json b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c --- /dev/null +++ b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/i18n/en-US.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + } +} \ No newline at end of file diff --git a/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/i18n/zh-CN.json b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f --- /dev/null +++ b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/i18n/zh-CN.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + } +} \ No newline at end of file diff --git a/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/pages/index/index.css b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..6fda792753f2e15f22b529c7b90a82185b2770bf --- /dev/null +++ b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/pages/index/index.css @@ -0,0 +1,9 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; +} + +.title { + font-size: 100px; +} diff --git a/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/pages/index/index.hml b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..c45422b42d0bf788a1c2c0eb299a981f07ce8613 --- /dev/null +++ b/resourceschedule/resourceschedule_standard/continuoustaskrelyhap/entry/src/main/js/default/pages/index/index.hml @@ -0,0 +1,5 @@ +