diff --git a/ability/BUILD.gn b/ability/BUILD.gn
index 5a4809d95cf7d9afbe27125b3c07e02197cf8eaf..d0cd55395e5270d126378ae55e0369a20224a053 100644
--- a/ability/BUILD.gn
+++ b/ability/BUILD.gn
@@ -16,6 +16,9 @@ import("//build/ohos_var.gni")
group("ability") {
testonly = true
if (is_standard_system) {
- deps = [ "ability_runtime:ability_runtime" ]
+ deps = [
+ "ability_runtime:ability_runtime",
+ "dmsfwk:dmsfwk",
+ ]
}
}
diff --git a/ability/dmsfwk/BUILD.gn b/ability/dmsfwk/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..44cc84825e2852ef3165edf34d24da2db42ee4d5
--- /dev/null
+++ b/ability/dmsfwk/BUILD.gn
@@ -0,0 +1,21 @@
+# 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("//build/ohos_var.gni")
+
+group("dmsfwk") {
+ testonly = true
+ if (is_standard_system) {
+ deps = [ "continuationmanagertest:continuationmanager_js_test" ]
+ }
+}
diff --git a/ability/dmsfwk/continuationmanagertest/BUILD.gn b/ability/dmsfwk/continuationmanagertest/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..b3d2e5dff1cfdb6ac2581eb54670da32c3727399
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/BUILD.gn
@@ -0,0 +1,35 @@
+# 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("//test/xts/tools/build/suite.gni")
+
+ohos_js_hap_suite("continuationmanager_js_test") {
+ hap_profile = "./src/main/config.json"
+ deps = [
+ ":continuationmanager_js_assets",
+ ":continuationmanager_resources",
+ ]
+ certificate_profile = "./signature/openharmony_sx.p7b"
+ hap_name = "ActsContinuationManagerJsTest"
+ subsystem_name = "ability"
+ part_name = "dmsfwk"
+}
+ohos_js_assets("continuationmanager_js_assets") {
+ js2abc = true
+ hap_profile = "./src/main/config.json"
+ source_dir = "./src/main/js"
+}
+ohos_resources("continuationmanager_resources") {
+ sources = [ "./src/main/resources" ]
+ hap_profile = "./src/main/config.json"
+}
diff --git a/ability/dmsfwk/continuationmanagertest/Test.json b/ability/dmsfwk/continuationmanagertest/Test.json
new file mode 100644
index 0000000000000000000000000000000000000000..7104e0ef7c00a5c259c78829d4600437e0bc4343
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/Test.json
@@ -0,0 +1,19 @@
+{
+ "description": "Configuration for hjunit demo Tests",
+ "driver": {
+ "type": "OHJSUnitTest",
+ "test-timeout": "1200000",
+ "shell-timeout": "1200000",
+ "bundle-name": "ohos.acts.distributedschedule.continuationmanager",
+ "package-name": "ohos.acts.distributedschedule.continuationmanager"
+ },
+ "kits": [
+ {
+ "test-file-name": [
+ "ActsContinuationManagerJsTest.hap"
+ ],
+ "type": "AppInstallKit",
+ "cleanup-apps": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/ability/dmsfwk/continuationmanagertest/signature/openharmony_sx.p7b b/ability/dmsfwk/continuationmanagertest/signature/openharmony_sx.p7b
new file mode 100644
index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5
Binary files /dev/null and b/ability/dmsfwk/continuationmanagertest/signature/openharmony_sx.p7b differ
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/config.json b/ability/dmsfwk/continuationmanagertest/src/main/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..73664228baca03b9cd85ed6d2e4a22fcfcae8b9e
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/config.json
@@ -0,0 +1,94 @@
+{
+ "app": {
+ "bundleName": "ohos.acts.distributedschedule.continuationmanager",
+ "vendor": "example",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "ohos.acts.distributedschedule.continuationmanager",
+ "name": ".entry",
+ "mainAbility": ".MainAbility",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry",
+ "installationFree": false
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "formsEnabled": false,
+ "name": ".MainAbility",
+ "srcLanguage": "js",
+ "srcPath": "MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:MainAbility_desc",
+ "label": "$string:MainAbility_label",
+ "type": "page",
+ "visible": true,
+ "launchType": "standard"
+ },
+ {
+ "orientation": "unspecified",
+ "formsEnabled": false,
+ "name": ".TestAbility",
+ "srcLanguage": "js",
+ "srcPath": "TestAbility",
+ "icon": "$media:icon",
+ "description": "$string:TestAbility_desc",
+ "label": "$string:TestAbility_label",
+ "type": "page",
+ "visible": true,
+ "launchType": "standard"
+ }
+ ],
+ "js": [
+ {
+ "pages": [
+ "pages/index/index"
+ ],
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": true
+ }
+ },
+ {
+ "pages": [
+ "pages/index/index"
+ ],
+ "name": ".TestAbility",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": false
+ }
+ }
+ ],
+ "testRunner": {
+ "name": "OpenHarmonyTestRunner",
+ "srcPath": "TestRunner"
+ },
+ "srcPath": ""
+ }
+}
\ No newline at end of file
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/app.js b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/app.js
new file mode 100644
index 0000000000000000000000000000000000000000..3a41e590ec6d582abedac2821eb54bf9aad77dd4
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/app.js
@@ -0,0 +1,22 @@
+/*
+* 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 {
+ onCreate() {
+ console.info('TestApplication onCreate');
+ },
+ onDestroy() {
+ console.info('TestApplication onDestroy');
+ }
+};
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/i18n/en-US.json b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/i18n/en-US.json
new file mode 100644
index 0000000000000000000000000000000000000000..3cb24b374b1d919ca8eac0638f361692b603a900
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/i18n/en-US.json
@@ -0,0 +1,8 @@
+{
+ "strings": {
+ "hello": "Hello",
+ "world": "World"
+ },
+ "Files": {
+ }
+}
\ No newline at end of file
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/i18n/zh-CN.json b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/i18n/zh-CN.json
new file mode 100644
index 0000000000000000000000000000000000000000..c804e32c0c3103929baca5617cdac70be11fdba1
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/i18n/zh-CN.json
@@ -0,0 +1,8 @@
+{
+ "strings": {
+ "hello": "您好",
+ "world": "世界"
+ },
+ "Files": {
+ }
+}
\ No newline at end of file
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.css b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.css
new file mode 100644
index 0000000000000000000000000000000000000000..0eb1086016dbb3adcbaed911f027264630f12993
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.css
@@ -0,0 +1,23 @@
+/*
+* 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.
+*/
+.container {
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.title {
+ font-size: 100px;
+}
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.hml b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.hml
new file mode 100644
index 0000000000000000000000000000000000000000..2a54c0734ed9fa2b56dcd7bdcb282ba0477c90fd
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.hml
@@ -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.
+*/
+
+
+
+ {{ $t('strings.hello') }} {{title}}
+
+
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.js b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..bd4cb14f07d97ea29445efd49882eab0c698f263
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/MainAbility/pages/index/index.js
@@ -0,0 +1,31 @@
+/*
+* 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.
+*/
+
+const injectRef = Object.getPrototypeOf(global) || global
+injectRef.regeneratorRuntime = require('@babel/runtime/regenerator')
+
+export default {
+ data: {
+ title: ''
+ },
+ onInit() {
+ this.title = this.$t('strings.world');
+ },
+ onShow() {
+ console.info('onShow finish')
+ },
+ onReady() {
+ },
+}
\ No newline at end of file
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/app.js b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/app.js
new file mode 100644
index 0000000000000000000000000000000000000000..cdc31f3dcf031e2f6a7665d9653e53bb649e21c5
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/app.js
@@ -0,0 +1,31 @@
+/*
+ * 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 AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'
+import { Hypium } from '@ohos/hypium'
+import testsuite from '../test/List.test'
+
+export default {
+ onCreate() {
+ console.info('TestApplication onCreate')
+ var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator()
+ var abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments()
+ console.info('start run testcase!!!')
+ Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite)
+ },
+ onDestroy() {
+ console.info("TestApplication onDestroy");
+ }
+};
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/i18n/en-US.json b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/i18n/en-US.json
new file mode 100644
index 0000000000000000000000000000000000000000..3cb24b374b1d919ca8eac0638f361692b603a900
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/i18n/en-US.json
@@ -0,0 +1,8 @@
+{
+ "strings": {
+ "hello": "Hello",
+ "world": "World"
+ },
+ "Files": {
+ }
+}
\ No newline at end of file
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/i18n/zh-CN.json b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/i18n/zh-CN.json
new file mode 100644
index 0000000000000000000000000000000000000000..c804e32c0c3103929baca5617cdac70be11fdba1
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/i18n/zh-CN.json
@@ -0,0 +1,8 @@
+{
+ "strings": {
+ "hello": "您好",
+ "world": "世界"
+ },
+ "Files": {
+ }
+}
\ No newline at end of file
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.css b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.css
new file mode 100644
index 0000000000000000000000000000000000000000..b1bcd43387ba131cc1d30975ff7508a6f8084a4b
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.css
@@ -0,0 +1,30 @@
+.container {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+}
+
+.title {
+ font-size: 60px;
+ text-align: center;
+ width: 100%;
+ height: 40%;
+ margin: 10px;
+}
+
+@media screen and (device-type: phone) and (orientation: landscape) {
+ .title {
+ font-size: 60px;
+ }
+}
+
+@media screen and (device-type: tablet) and (orientation: landscape) {
+ .title {
+ font-size: 100px;
+ }
+}
\ No newline at end of file
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.hml b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.hml
new file mode 100644
index 0000000000000000000000000000000000000000..f629c71a9be857db6cdf94149652a191b9b272ea
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.hml
@@ -0,0 +1,5 @@
+
+
+ {{ $t('strings.hello') }} {{ title }}
+
+
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.js b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..88b083a7f6b979019d6a2c5ad20b19c5fd43286b
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/TestAbility/pages/index/index.js
@@ -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.
+ */
+
+export default {
+ data: {
+ title: ""
+ },
+ onInit() {
+ this.title = this.$t('strings.world');
+ }
+}
+
+
+
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/TestRunner/OpenHarmonyTestRunner.js b/ability/dmsfwk/continuationmanagertest/src/main/js/TestRunner/OpenHarmonyTestRunner.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5fa8620ca77d381f20b65a903b833e6e3378c97
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/TestRunner/OpenHarmonyTestRunner.js
@@ -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 AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'
+
+function translateParamsToString(parameters) {
+ const keySet = new Set([
+ '-s class', '-s notClass', '-s suite', '-s itName',
+ '-s level', '-s testType', '-s size', '-s timeout',
+ '-s package', '-s dryRun'
+ ])
+ let targetParams = '';
+ for (const key in parameters) {
+ if (keySet.has(key)) {
+ targetParams += ' ' + key + ' ' + parameters[key]
+ }
+ }
+ return targetParams.trim()
+}
+
+ export default {
+ onPrepare() {
+ console.info('OpenHarmonyTestRunner OnPrepare')
+ },
+ onRun() {
+ console.log('OpenHarmonyTestRunner onRun run')
+ var abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments()
+ var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator()
+
+ var testAbilityName = abilityDelegatorArguments.parameters['-p'] + '.TestAbility'
+
+ var cmd = 'aa start -d 0 -a ' + testAbilityName + ' -b ' + abilityDelegatorArguments.bundleName
+ cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters)
+ var debug = abilityDelegatorArguments.parameters["-D"]
+ console.info('debug value : '+debug)
+ if (debug == 'true')
+ {
+ cmd += ' -D'
+ }
+ console.info('cmd : '+cmd)
+ abilityDelegator.executeShellCommand(cmd, (err, data) => {
+ console.info('executeShellCommand : err : ' + JSON.stringify(err));
+ console.info('executeShellCommand : data : ' + data.stdResult);
+ console.info('executeShellCommand : data : ' + data.exitCode);
+ })
+ }
+};
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/test/ContinuationManagerJsunit.test.js b/ability/dmsfwk/continuationmanagertest/src/main/js/test/ContinuationManagerJsunit.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..7eb66c5a95faefab2f127e58158817d812f4f2e0
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/test/ContinuationManagerJsunit.test.js
@@ -0,0 +1,575 @@
+/*
+ * 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 { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'
+import continuationManager from '@ohos.continuation.continuationManager';
+
+const TEST_DEVICE_ID = "test_deviceId";
+const TEST_CONNECT_STATUS = continuationManager.DeviceConnectState.CONNECTED;
+let token = -1;
+
+export default function continuationManagerTest() {
+describe('continuationManagerTest', function() {
+
+ beforeAll(async function (done) {
+ console.info('beforeAll');
+ done();
+ })
+
+ afterAll(async function (done) {
+ console.info('afterAll');
+ done();
+ })
+
+ beforeEach(async function (done) {
+ console.info('beforeEach');
+ await continuationManager.register(function (err, data) {
+ token = data;
+ console.info('beforeEach register success');
+ done();
+ });
+ console.info('beforeEach end');
+ })
+
+ afterEach(async function (done) {
+ console.info('afterEach');
+ await continuationManager.unregister(token, function (err, data) {
+ console.info('afterEach unregister success');
+ done();
+ });
+ console.info('afterEach end');
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_REGISTER_0100
+ * @tc.name [JS-API8]ContinuationManager.register().
+ * @tc.desc Test Js Api ContinuationManager.register() testcase 001
+ */
+ it('testRegister001', 0, async function(done) {
+ try {
+ continuationManager.register(function (err, data) {
+ expect(err.code == 0).assertTrue();
+ expect(data - token == 1).assertTrue();
+ done();
+ });
+ } catch (e) {
+ console.info("testRegister001 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_REGISTER_0200
+ * @tc.name [JS-API8]ContinuationManager.register().
+ * @tc.desc Test Js Api ContinuationManager.register() testcase 002
+ */
+ it('testRegister002', 0, async function(done) {
+ try {
+ let continuationExtraParams = {
+ deviceType: [],
+ description: "",
+ filter: "",
+ continuationMode: null,
+ authInfo: {}
+ };
+ continuationManager.register(continuationExtraParams, function(err, data){
+ console.info("testRegister002 " + err.message)
+ expect(err.message == "Invalidate params.").assertTrue();
+ done();
+ });
+ } catch (e) {
+ console.info("testRegister002 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_REGISTER_0300
+ * @tc.name [JS-API8]ContinuationManager.register().
+ * @tc.desc Test Js Api ContinuationManager.register() testcase 003
+ */
+ it('testRegister003', 0, async function(done) {
+ try {
+ let continuationExtraParams = {
+ deviceType: ["00E"],
+ description: "description",
+ filter: {"name": "authInfo","length": 8},
+ continuationMode: 10,
+ authInfo: {"name": "authInfo","length": 8}
+ };
+ continuationManager.register(continuationExtraParams, function(err, data) {
+ expect(err.code == 29360216).assertTrue();
+ console.info("testRegister003 "+ err);
+ done();
+ });
+ } catch (e) {
+ console.info("testRegister003 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_REGISTER_0400
+ * @tc.name [JS-API8]ContinuationManager.register().
+ * @tc.desc Test Js Api ContinuationManager.register() testcase 004
+ */
+ it('testRegister004', 0, async function(done) {
+ try {
+ let continuationExtraParams = {
+ deviceType: ["00E"],
+ description: "description",
+ filter: {"name": "authInfo","length": 8},
+ continuationMode: continuationManager.ContinuationMode.COLLABORATION_MUTIPLE,
+ authInfo: {"name": "authInfo","length": 8}
+ };
+ continuationManager.register(continuationExtraParams, function(err, data) {
+ expect(err.code == 0).assertTrue();
+ expect(data - token == 1).assertTrue();
+ done();
+ });
+ } catch (e) {
+ console.info("testRegister004 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_UNREGISTER_0100
+ * @tc.name [JS-API8]ContinuationManager.unregister().
+ * @tc.desc Test Js Api ContinuationManager.unregister() testcase 001
+ */
+ it('testUnregister001', 0, async function(done) {
+ try {
+ continuationManager.unregister(token, function (err, data) {
+ expect(err.code == 0).assertTrue();
+ expect(data == undefined).assertTrue();
+ })
+ done();
+ } catch (e) {
+ console.info("testUnregister001 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_UNREGISTER_0200
+ * @tc.name [JS-API8]ContinuationManager.unregister().
+ * @tc.desc Test Js Api ContinuationManager.unregister() testcase 002
+ */
+ it('testUnregister002', 0, async function(done) {
+ try {
+ continuationManager.unregister(null, function (err, data) {
+ console.info("testUnregister002 " + data);
+ expect(err.message == "Invalidate params.").assertTrue();
+ expect(data == undefined).assertTrue();
+ })
+ done();
+ } catch (e) {
+ console.info("testUnregister002 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_UNREGISTER_0300
+ * @tc.name [JS-API8]ContinuationManager.unregister().
+ * @tc.desc Test Js Api ContinuationManager.unregister() testcase 003
+ */
+ it('testUnregister003', 0, async function(done) {
+ try {
+ continuationManager.unregister(300, function (err, data) {
+ expect(err.code == 29360208).assertTrue();
+ expect(data == undefined).assertTrue();
+ })
+ done();
+ } catch (e) {
+ console.info("testUnregister003 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_ON_0100
+ * @tc.name [JS-API8]ContinuationManager.on().
+ * @tc.desc Test Js Api ContinuationManager.on() testcase 001
+ */
+ it('testOn001', 0, async function(done) {
+ try {
+ continuationManager.on("deviceConnect", function (data) {
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testOn001 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_ON_0200
+ * @tc.name [JS-API8]ContinuationManager.on().
+ * @tc.desc Test Js Api ContinuationManager.on() testcase 002
+ */
+ it('testOn002', 0, async function(done) {
+ try {
+ continuationManager.on("deviceDisconnect", function (data) {
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testOn002 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_ON_0300
+ * @tc.name [JS-API9]ContinuationManager.on().
+ * @tc.desc Test Js Api ContinuationManager.on() testcase 003
+ */
+ it('testOn003', 0, async function(done) {
+ try {
+ continuationManager.on("deviceConnect", token, function (data) {
+ expect(data == undefined).assertTrue();
+ })
+ done();
+ } catch (e) {
+ console.info("testOn003 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_ON_0400
+ * @tc.name [JS-API9]ContinuationManager.on().
+ * @tc.desc Test Js Api ContinuationManager.on() testcase 004
+ */
+ it('testOn004', 0, async function(done) {
+ try {
+ continuationManager.on("deviceDisconnect", token, function (data) {
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testOn004 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_OFF_0100
+ * @tc.name [JS-API8]ContinuationManager.off().
+ * @tc.desc Test Js Api ContinuationManager.off() testcase 001
+ */
+ it('testOff001', 0, async function(done) {
+ try {
+ continuationManager.off("deviceConnect", function (data) {
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testOff001 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_OFF_0200
+ * @tc.name [JS-API8]ContinuationManager.off().
+ * @tc.desc Test Js Api ContinuationManager.off() testcase 002
+ */
+ it('testOff002', 0, async function(done) {
+ try {
+ continuationManager.off("deviceDisconnect", function (data) {
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testOff002 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_OFF_0300
+ * @tc.name [JS-API9]ContinuationManager.off().
+ * @tc.desc Test Js Api ContinuationManager.off() testcase 003
+ */
+ it('testOff003', 0, async function(done) {
+ try {
+ continuationManager.off("deviceConnect", token);
+ done();
+ } catch (e) {
+ console.info("testOff003 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_OFF_0400
+ * @tc.name [JS-API9]ContinuationManager.off().
+ * @tc.desc Test Js Api ContinuationManager.off() testcase 004
+ */
+ it('testOff004', 0, async function(done) {
+ try {
+ continuationManager.off("deviceDisconnect", token);
+ done();
+ } catch (e) {
+ console.info("testOff004 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_STARTDEVICEMANAGER_0100
+ * @tc.name [JS-API8]ContinuationManager.startDeviceManager().
+ * @tc.desc Test Js Api ContinuationManager.startDeviceManager() testcase 001
+ */
+ it('testStartDeviceManager001', 0, async function(done) {
+ try {
+ continuationManager.startDeviceManager(token, function (err, data) {
+ expect(err.code != 0).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testStartDeviceManager001 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_STARTDEVICEMANAGER_0200
+ * @tc.name [JS-API8]ContinuationManager.startDeviceManager().
+ * @tc.desc Test Js Api ContinuationManager.startDeviceManager() testcase 002
+ */
+ it('testStartDeviceManager002', 0, async function(done) {
+ try {
+ continuationManager.startDeviceManager(null, function (err, data) {
+ expect(err.code == -1).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testStartDeviceManager002 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_STARTDEVICEMANAGER_0300
+ * @tc.name [JS-API8]ContinuationManager.startDeviceManager().
+ * @tc.desc Test Js Api ContinuationManager.startDeviceManager() testcase 003
+ */
+ it('testStartDeviceManager003', 0, async function(done) {
+ try {
+ let continuationExtraParams = {
+ deviceType: ["00E"],
+ description: "description",
+ filter: {"name": "authInfo","length": 8},
+ continuationMode: continuationManager.ContinuationMode.COLLABORATION_MUTIPLE,
+ authInfo: {"name": "authInfo","length": 8}
+ };
+ continuationManager.startDeviceManager(null, continuationExtraParams, function (err, data) {
+ expect(err.code == -1).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testStartDeviceManager003 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_STARTDEVICEMANAGER_0400
+ * @tc.name [JS-API8]ContinuationManager.startDeviceManager().
+ * @tc.desc Test Js Api ContinuationManager.startDeviceManager() testcase 004
+ */
+ it('testStartDeviceManager004', 0, async function(done) {
+ try {
+ let continuationExtraParams = {
+ deviceType: ["00E"],
+ description: "description",
+ filter: {"name": "authInfo","length": 8},
+ continuationMode: continuationManager.ContinuationMode.COLLABORATION_MUTIPLE,
+ authInfo: {"name": "authInfo","length": 8}
+ };
+ continuationManager.startDeviceManager(52, continuationExtraParams, function (err, data) {
+ console.info("testStartDeviceManager004 " + err.code);
+ expect(err.code == 29360208).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testStartDeviceManager004 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_STARTDEVICEMANAGER_0500
+ * @tc.name [JS-API8]ContinuationManager.startDeviceManager().
+ * @tc.desc Test Js Api ContinuationManager.startDeviceManager() testcase 005
+ */
+ it('testStartDeviceManager005', 0, async function(done) {
+ try {
+ let continuationExtraParams = {
+ deviceType: ["00E"],
+ description: "description",
+ filter: {"name": "authInfo","length": 8},
+ continuationMode: 30,
+ authInfo: {"name": "authInfo","length": 8}
+ };
+ continuationManager.startDeviceManager(token, continuationExtraParams, function (err, data) {
+ console.info("testStartDeviceManager005 " + err.code);
+ expect(err.code == 29360216).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testStartDeviceManager005 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_STARTDEVICEMANAGER_0600
+ * @tc.name [JS-API8]ContinuationManager.startDeviceManager().
+ * @tc.desc Test Js Api ContinuationManager.startDeviceManager() testcase 006
+ */
+ it('testStartDeviceManager006', 0, async function(done) {
+ try {
+ let continuationExtraParams = {
+ };
+ continuationManager.startDeviceManager(token, continuationExtraParams, function (err, data) {
+ console.info("testStartDeviceManager006 " + err.code);
+ expect(err.code != 0).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testStartDeviceManager006 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_STARTDEVICEMANAGER_0700
+ * @tc.name [JS-API8]ContinuationManager.startDeviceManager().
+ * @tc.desc Test Js Api ContinuationManager.startDeviceManager() testcase 007
+ */
+ it('testStartDeviceManager007', 0, async function(done) {
+ try {
+ let continuationExtraParams = {
+ deviceType: ["00E"],
+ description: "description",
+ filter: {"name": "authInfo","length": 8},
+ continuationMode: continuationManager.ContinuationMode.COLLABORATION_MUTIPLE,
+ authInfo: {"name": "authInfo","length": 8}
+ };
+ continuationManager.startDeviceManager(token, continuationExtraParams, function (err, data) {
+ expect(err.code != 0).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testStartDeviceManager007 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_UPDATECONNECTSTATUS_0100
+ * @tc.name [JS-API8]ContinuationManager.updateConnectStatus().
+ * @tc.desc Test Js Api ContinuationManager.updateConnectStatus() testcase 001
+ */
+ it('testUpdateConnectStatus001', 0, async function(done) {
+ try {
+ continuationManager.updateConnectStatus(token, TEST_DEVICE_ID, TEST_CONNECT_STATUS, function (err, data) {
+ expect(err.code != 0).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testUpdateConnectStatus001 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_UPDATECONNECTSTATUS_0200
+ * @tc.name [JS-API8]ContinuationManager.updateConnectStatus().
+ * @tc.desc Test Js Api ContinuationManager.updateConnectStatus() testcase 002
+ */
+ it('testUpdateConnectStatus002', 0, async function(done) {
+ try {
+ continuationManager.updateConnectStatus(null, TEST_DEVICE_ID, TEST_CONNECT_STATUS, function (err, data) {
+ console.info("testUpdateConnectStatus002 " + err.code);
+ expect(err.code == -1).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testUpdateConnectStatus002 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+
+ /**
+ * @tc.number SUB_DISTRIBUTEDSCHEDULE_CONTINUATIONMANAGER_UPDATECONNECTSTATUS_0300
+ * @tc.name [JS-API8]ContinuationManager.updateConnectStatus().
+ * @tc.desc Test Js Api ContinuationManager.updateConnectStatus() testcase 003
+ */
+ it('testUpdateConnectStatus003', 0, async function(done) {
+ try {
+ continuationManager.updateConnectStatus(token, TEST_DEVICE_ID, -2, function (err, data) {
+ console.info("testUpdateConnectStatus003 " + err.code);
+ expect(err.code == 29360215).assertTrue();
+ expect(data == undefined).assertTrue();
+ });
+ done();
+ } catch (e) {
+ console.info("testUpdateConnectStatus003 " + e);
+ expect(null).assertFail();
+ done();
+ }
+ })
+})}
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/js/test/List.test.js b/ability/dmsfwk/continuationmanagertest/src/main/js/test/List.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e6e45d238abaeaf69485dbab5a069b707efe3d0
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/js/test/List.test.js
@@ -0,0 +1,18 @@
+/*
+* 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 continuationManagerTest from './ContinuationManagerJsunit.test.js'
+export default function testsuite() {
+continuationManagerTest()
+}
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/resources/base/element/string.json b/ability/dmsfwk/continuationmanagertest/src/main/resources/base/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..c931e164748318159c3a3939e588b26ec19f7b7f
--- /dev/null
+++ b/ability/dmsfwk/continuationmanagertest/src/main/resources/base/element/string.json
@@ -0,0 +1,28 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "ContinuationManagerJsTest"
+ },
+ {
+ "name": "mainability_description",
+ "value": "hap sample empty page"
+ },
+ {
+ "name": "MainAbility_desc",
+ "value": "description"
+ },
+ {
+ "name": "MainAbility_label",
+ "value": "label"
+ },
+ {
+ "name": "TestAbility_desc",
+ "value": "description"
+ },
+ {
+ "name": "TestAbility_label",
+ "value": "label"
+ }
+ ]
+}
diff --git a/ability/dmsfwk/continuationmanagertest/src/main/resources/base/media/icon.png b/ability/dmsfwk/continuationmanagertest/src/main/resources/base/media/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and b/ability/dmsfwk/continuationmanagertest/src/main/resources/base/media/icon.png differ
diff --git a/distributedschedule/dmsfwk/continuationmanagertest/BUILD.gn b/distributedschedule/dmsfwk/continuationmanagertest/BUILD.gn
index 2ce221458a27527b354423fb7678d81b4f488d5e..b3d2e5dff1cfdb6ac2581eb54670da32c3727399 100644
--- a/distributedschedule/dmsfwk/continuationmanagertest/BUILD.gn
+++ b/distributedschedule/dmsfwk/continuationmanagertest/BUILD.gn
@@ -21,6 +21,8 @@ ohos_js_hap_suite("continuationmanager_js_test") {
]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "ActsContinuationManagerJsTest"
+ subsystem_name = "ability"
+ part_name = "dmsfwk"
}
ohos_js_assets("continuationmanager_js_assets") {
js2abc = true