diff --git a/appexecfwk/bundle_standard/bundlemanager/BUILD.gn b/appexecfwk/bundle_standard/bundlemanager/BUILD.gn
old mode 100755
new mode 100644
index 0e131d5bbe3f14ebe80ed53b0f858aca40d58a5c..15ac6da0720f79428d0ececa6cb6e8a1df0d4050
--- a/appexecfwk/bundle_standard/bundlemanager/BUILD.gn
+++ b/appexecfwk/bundle_standard/bundlemanager/BUILD.gn
@@ -19,8 +19,7 @@ group("bundlemanager") {
deps = [
"actsbmsallshortcutinfotest:ActsBmsAllShortcutInfoTest",
"actsbmscheckpermissiontest:ActsBmsCheckPermissionTest",
-
- #"actsbmsgetinfostest:ActsBmsGetInfosTest",
+ "actsbmsgetinfostest:ActsBmsGetInfosTest",
"actsbmshapmoduletest:ActsBmsHapModuleTest",
"actsbmsjstest:ActsBmsJsTest",
"actsbmskittest:ActsBmsKitTest",
@@ -29,7 +28,10 @@ group("bundlemanager") {
"actsbundlemanagertest:ActsBundleManagerTest",
"actsbundlemanageruninstall:ActsBundleManagerUninstallTest",
- # "bmscheckpermissiontest:ActsBmsCheckPermissionTest",
+ # "bmscheckpermissiontest:ActsBmsCheckPermissionManualTest",
+ # "bmspermissionchangetest:ActsBmsPermissionChangeManualTest",
+
+ "sceneProject/bmsfirstrequestpermissions:FirstRequestPermissions",
"sceneProject/bmsgetinfosfifthscene:bmsThirdBundleTest5",
"sceneProject/bmsgetinfosfirstscene:bmsThirdBundleTest1",
"sceneProject/bmsgetinfosfirstsceneupdate:bmsThirdBundleTestA1",
@@ -39,8 +41,7 @@ group("bundlemanager") {
"sceneProject/bmsgetinfosscenesystem:bmsSystemBundleTest1",
"sceneProject/bmsgetinfosscenevendor:bmsVendorBundleTest1",
"sceneProject/bmsgetinfossecondscene:bmsThirdBundleTest2",
-
- #"sceneProject/bmsgetinfossixthscene:bmsThirdBundleTest6",
+ "sceneProject/bmsgetinfossixthscene:bmsThirdBundleTest6",
"sceneProject/bmsgetinfosthirdscene:bmsThirdBundleTest3",
"sceneProject/bmsmainabilityfirstscene:bmsMainAbilityFirstScene",
"sceneProject/bmsmainabilitysecondscene:bmsMainAbilitySecondScene",
@@ -53,6 +54,7 @@ group("bundlemanager") {
"sceneProject/bmsscenesix:bmsJstest6",
"sceneProject/bmsscenethree:bmsJstest3",
"sceneProject/bmsscenetwo:bmsJstest2",
+ "sceneProject/bmssecondrequestpermissions:SecondRequestPermissions",
]
}
}
diff --git a/appexecfwk/bundle_standard/bundlemanager/actsbmscheckpermissiontest/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/actsbmscheckpermissiontest/signature/openharmony_sx.p7b
old mode 100644
new mode 100755
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217
Binary files a/appexecfwk/bundle_standard/bundlemanager/actsbmscheckpermissiontest/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/actsbmscheckpermissiontest/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/ActsBmsGetBackGroundModes.test.js b/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/ActsBmsGetBackGroundModes.test.js
index 11c3eebdbc591eebfc7f51b76fa97dee49039a1b..b3d08e132dd8a86f5dbc35d40406ed3d40886aa9 100644
--- a/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/ActsBmsGetBackGroundModes.test.js
+++ b/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/ActsBmsGetBackGroundModes.test.js
@@ -23,6 +23,11 @@ const BUNDLE_PATH4 = '/data/test/bmsThirdBundleTest4.hap';
const BUNDLE_PATH5 = '/data/test/bmsThirdBundleTest5.hap';
const BUNDLE_PATH6 = '/data/test/bmsThirdBundleTest6.hap';
const BUNDLE_PATHUPDATE = '/data/test/bmsThirdBundleTestA1.hap';
+const BUNDLE_NAME1 = 'com.example.third1';
+const BUNDLE_NAME2 = 'com.example.third2';
+const BUNDLE_NAME4 = 'com.example.third4';
+const BUNDLE_NAME5 = 'com.example.third5';
+const BUNDLE_NAME6 = 'com.example.third6';
const NUM_TWO = 2;
const NUM_NINE = 9;
let dataTransfer = 1;
@@ -62,7 +67,7 @@ describe('ActsBmsGetBackGroundModes', function () {
entities: ['entity.system.home'],
elementName: {
deviceId: '0',
- bundleName: 'com.example.third5',
+ bundleName: BUNDLE_NAME5,
abilityName: 'com.example.third5.AMainAbility',
},
}
@@ -75,7 +80,7 @@ describe('ActsBmsGetBackGroundModes', function () {
expect(dataInfos[1].name).assertEqual("com.example.third5.BMainAbility");
expect(dataInfos[1].backgroundModes).assertEqual(dataTransfer + voip);
}
- installer.uninstall('com.example.third5', {
+ installer.uninstall(BUNDLE_NAME5, {
param: {
userId: 0,
installFlag: 1,
@@ -92,7 +97,7 @@ describe('ActsBmsGetBackGroundModes', function () {
/*
* @tc.number: bms_backGroundModes_0200
- * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
+ * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
* @tc.desc: Get all background modes information, and each ability of the application
* contains one of the background mode
*/
@@ -116,7 +121,7 @@ describe('ActsBmsGetBackGroundModes', function () {
entities: ['entity.system.home'],
elementName: {
deviceId: '0',
- bundleName: 'com.example.third6',
+ bundleName: BUNDLE_NAME6,
abilityName: '',
},
}
@@ -127,7 +132,7 @@ describe('ActsBmsGetBackGroundModes', function () {
console.info("==========dataInfos[i].backgroundModes=========" + dataInfos[i].backgroundModes);
console.info("==========dataInfos[1].name=========" + dataInfos[i].name);
}
- installer.uninstall('com.example.third6', {
+ installer.uninstall(BUNDLE_NAME6, {
param: {
userId: 0,
installFlag: 1,
@@ -144,8 +149,8 @@ describe('ActsBmsGetBackGroundModes', function () {
/*
* @tc.number: bms_backGroundModes_0300
- * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
- * @tc.desc: Read the backgroundModes information of the app's ability and replace invalid attributes
+ * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
+ * @tc.desc: Read the backgroundModes information of the app's ability and replace invalid attributes
*/
it('bms_backGroundModes_0300', 0, async function (done) {
console.info('=====================bms_backGroundModes_0300==================');
@@ -167,7 +172,7 @@ describe('ActsBmsGetBackGroundModes', function () {
entities: ['entity.system.home'],
elementName: {
deviceId: '0',
- bundleName: 'com.example.third2',
+ bundleName: BUNDLE_NAME2,
abilityName: 'com.example.third2.MainAbility',
},
}
@@ -178,7 +183,7 @@ describe('ActsBmsGetBackGroundModes', function () {
expect(dataInfos[0].backgroundModes).assertEqual(audioPlayback + audioRecording + location
+ bluetoothInteraction + multiDeviceConnection + wifiInteraction + voip + taskKeeping)
}
- installer.uninstall('com.example.third2', {
+ installer.uninstall(BUNDLE_NAME2, {
param: {
userId: 0,
installFlag: 1,
@@ -195,8 +200,8 @@ describe('ActsBmsGetBackGroundModes', function () {
/*
* @tc.number: bms_backGroundModes_0400
- * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
- * @tc.desc: Read the backgroundModes information of the app's ability and replace invalid attributes
+ * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
+ * @tc.desc: Read the backgroundModes information of the app's ability and replace invalid attributes
*/
it('bms_backGroundModes_0400', 0, async function (done) {
console.info('=====================bms_backGroundModes_0400==================');
@@ -218,7 +223,7 @@ describe('ActsBmsGetBackGroundModes', function () {
entities: ['entity.system.home'],
elementName: {
deviceId: '0',
- bundleName: 'com.example.third4',
+ bundleName: BUNDLE_NAME4,
abilityName: 'com.example.third4.MainAbility',
},
}
@@ -228,7 +233,7 @@ describe('ActsBmsGetBackGroundModes', function () {
expect(dataInfos[0].name).assertEqual("com.example.third4.MainAbility")
expect(dataInfos[0].backgroundModes).assertEqual(0)
}
- installer.uninstall('com.example.third4', {
+ installer.uninstall(BUNDLE_NAME4, {
param: {
userId: 0,
installFlag: 1,
@@ -245,8 +250,8 @@ describe('ActsBmsGetBackGroundModes', function () {
/*
* @tc.number: bms_backGroundModes_0500
- * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
- * @tc.desc: Get the backgroundModes information of the multi-hap package of the application
+ * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
+ * @tc.desc: Get the backgroundModes information of the multi-hap package of the application
*/
it('bms_backGroundModes_0500', 0, async function (done) {
console.info('=====================bms_backGroundModes_0500==================');
@@ -268,8 +273,8 @@ describe('ActsBmsGetBackGroundModes', function () {
entities: ['entity.system.home'],
elementName: {
deviceId: '0',
- bundleName: 'com.example.third1',
- abilityName: 'com.example.third1.AMainAbility',
+ bundleName: BUNDLE_NAME1,
+ abilityName: 'com.example.third1.MainAbility',
},
}
}, 0, 0)
@@ -280,7 +285,7 @@ describe('ActsBmsGetBackGroundModes', function () {
location + bluetoothInteraction + multiDeviceConnection + wifiInteraction + voip + taskKeeping)
}
console.info("========dataInfos[0].backgroundModes=======>" + dataInfos[0].backgroundModes)
- installer.uninstall('com.example.third1', {
+ installer.uninstall(BUNDLE_NAME1, {
param: {
userId: 0,
installFlag: 1,
@@ -298,7 +303,7 @@ describe('ActsBmsGetBackGroundModes', function () {
/*
* @tc.number: bms_backGroundModes_0600
* @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
- * @tc.desc: Get the backgroundModes information of the upgraded application's ability
+ * @tc.desc: Get the backgroundModes information of the upgraded application's ability
*/
it('bms_backGroundModes_0600', 0, async function (done) {
console.info('=====================bms_backGroundModes_0600==================');
@@ -321,7 +326,7 @@ describe('ActsBmsGetBackGroundModes', function () {
entities: ['entity.system.home'],
elementName: {
deviceId: '0',
- bundleName: 'com.example.third1',
+ bundleName: BUNDLE_NAME1,
abilityName: 'com.example.third1.MainAbility',
},
}
@@ -348,8 +353,8 @@ describe('ActsBmsGetBackGroundModes', function () {
entities: ['entity.system.home'],
elementName: {
deviceId: '0',
- bundleName: 'com.example.third1',
- abilityName: 'com.example.third1.AMainAbility',
+ bundleName: BUNDLE_NAME1,
+ abilityName: 'com.example.third1.MainAbility',
},
}
}, 0, 0)
@@ -359,8 +364,7 @@ describe('ActsBmsGetBackGroundModes', function () {
expect(dataInfos[0].backgroundModes).assertEqual(audioRecording + location + bluetoothInteraction +
multiDeviceConnection + wifiInteraction + voip + taskKeeping);
}
- console.info("========dataInfos[0].backgroundModes=======>" + dataInfos[0].backgroundModes)
- installer.uninstall('com.example.third1', {
+ installer.uninstall(BUNDLE_NAME1, {
param: {
userId: 0,
installFlag: 1,
@@ -375,4 +379,67 @@ describe('ActsBmsGetBackGroundModes', function () {
})
})
})
+
+ /*
+ * @tc.number: bms_backGroundModes_0700
+ * @tc.name: Get the backgroundModes information of the application through queryAbilityByWant
+ * @tc.desc: Uninstall the application, get the backgroundModes information of the upgraded application's ability
+ */
+ it('bms_backGroundModes_0700', 0, async function (done) {
+ console.info('=====================bms_backGroundModes_0700==================');
+ var bundlePath = [BUNDLE_PATH1]
+ var installer = await bundle.getBundleInstaller();
+ installer.install(bundlePath, {
+ param: {
+ userId: 0,
+ installFlag: 1,
+ isKeepData: false
+ }
+ }, async (err, data) => {
+ expect(err.code).assertEqual(0);
+ expect(data.status).assertEqual(0);
+ expect(data.statusMessage).assertEqual('SUCCESS');
+ var dataInfos = await bundle.queryAbilityByWant({
+ want: {
+ action: 'action.system.home',
+ entities: ['entity.system.home'],
+ elementName: {
+ deviceId: '0',
+ bundleName: BUNDLE_NAME1,
+ abilityName: 'com.example.third1.MainAbility'
+ }
+ }
+ }, 0, 0)
+ expect(dataInfos.length).assertEqual(1);
+ if (dataInfos.length == 1) {
+ expect(dataInfos[0].name).assertEqual("com.example.third1.MainAbility")
+ expect(dataInfos[0].backgroundModes).assertEqual(dataTransfer + audioPlayback + audioRecording +
+ location + bluetoothInteraction + multiDeviceConnection + wifiInteraction + voip + taskKeeping)
+ }
+ installer.uninstall(BUNDLE_NAME1, {
+ param: {
+ userId: 0,
+ installFlag: 1,
+ isKeepData: false
+ }
+ }, async (err, data) => {
+ expect(err.code).assertEqual(0);
+ expect(data.status).assertEqual(0);
+ expect(data.statusMessage).assertEqual('SUCCESS');
+ var dataInfos = await bundle.queryAbilityByWant({
+ want: {
+ action: 'action.system.home',
+ entities: ['entity.system.home'],
+ elementName: {
+ deviceId: '0',
+ bundleName: BUNDLE_NAME1,
+ abilityName: 'com.example.third1.MainAbility'
+ }
+ }
+ }, 0, 0)
+ expect(dataInfos.length).assertEqual(0);
+ done();
+ });
+ })
+ })
})
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/ActsBmsPermissionChange.test.js b/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/ActsBmsPermissionChange.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..3bfa8dfd7838691605638026eaf3c8bc2fb4e329
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/ActsBmsPermissionChange.test.js
@@ -0,0 +1,222 @@
+/*
+ * 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 bundle from '@ohos.bundle'
+import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit'
+
+const TIMEOUT = 1000;
+const DEFAULT_ERRCODE = 100;
+let uid;
+let systemUid;
+describe('ActsBmsGetRegisterPermissionTest', function () {
+ beforeAll(async (done) => {
+ console.info('=========before all start======')
+ var bundleInfo = await bundle.getBundleInfo('com.example.actsbmsgetinfostest', 1);
+ uid = bundleInfo.uid;
+ var systemBundleInfo = await bundle.getBundleInfo('com.example.system1', 1);
+ systemUid = systemBundleInfo.uid;
+ done();
+ })
+
+ /*
+ * @tc.number: bms_unregisterPermissionChange_0100
+ * @tc.name: unregister permissionChange callback by other callback
+ * @tc.desc: 1.register permissionChange callback
+ * 2.unregister permissionChange callback by other different callback
+ */
+ it('bms_unregisterPermissionChange_0100', 0, async function (done) {
+ console.info('=====================start bms_unregisterPermissionChange_0100==================');
+ function callbackOne(err, data) {
+ console.info('=====================bms_getRegisterPermission_0100==================');
+ expect(err.code).assertEqual(0);
+ console.info('===========bundleInfo.data========' + JSON.stringify(data));
+ expect(data).assertEqual(undefined);
+ done();
+ }
+
+ function callbackTwo(err, data) {
+ expect(err.code).assertEqual(-1);
+ expect(data).assertEqual(undefined);
+ }
+ bundle.on('permissionChange', [uid], callbackOne)
+ setTimeout(() => {
+ bundle.off('permissionChange', [uid], callbackTwo)
+ setTimeout(() => {
+ bundle.off('permissionChange', [uid], callbackOne)
+ }, TIMEOUT);
+ }, TIMEOUT);
+ })
+
+ /*
+ * @tc.number: bms_unregisterPermissionChange_0100
+ * @tc.name: unregister permissionChange callback by other uid list
+ * @tc.desc: 1.register permissionChange callback
+ * 2.unregister permissionChange callback by other uid list
+ */
+ it('bms_unregisterPermissionChange_0200', 0, async function (done) {
+ console.info('=====================start bms_unregisterPermissionChange_0200==================');
+ var errCode = DEFAULT_ERRCODE;
+ function callback(err, data) {
+ errCode = err.code;
+ }
+ bundle.on('permissionChange', [uid, systemUid], callback)
+ setTimeout(() => {
+ bundle.off('permissionChange', [uid], callback)
+ setTimeout(() => {
+ expect(errCode).assertEqual(-1);
+ bundle.off('permissionChange', [uid, systemUid], callback)
+ setTimeout(() => {
+ expect(errCode).assertEqual(0);
+ done();
+ }, TIMEOUT);
+ }, TIMEOUT);
+ }, TIMEOUT);
+ })
+
+ /*
+ * @tc.number: bms_unregisterPermissionChange_0300
+ * @tc.name: repeatly unregister permissionChange callback
+ * @tc.desc: 1.register permissionChange callback
+ * 2.repeatly unregister permissionChange callback
+ */
+ it('bms_unregisterPermissionChange_0300', 0, async function (done) {
+ console.info('=====================start bms_unregisterPermissionChange_0300==================');
+ var errCode = DEFAULT_ERRCODE;
+ function callback(err, data) {
+ console.info('=======call back errCode=======' + err.code)
+ errCode = err.code;
+ }
+ bundle.on('permissionChange', [uid], callback)
+ setTimeout(() => {
+ bundle.off('permissionChange', [uid], callback)
+ setTimeout(() => {
+ expect(errCode).assertEqual(0);
+ bundle.off('permissionChange', [uid], callback)
+ setTimeout(() => {
+ expect(errCode).assertEqual(-1);
+ bundle.off('permissionChange', [uid], callback)
+ setTimeout(() => {
+ expect(errCode).assertEqual(-1);
+ done();
+ }, TIMEOUT);
+ }, TIMEOUT);
+ }, TIMEOUT);
+ }, TIMEOUT);
+ })
+
+ /*
+ * @tc.number: bms_unregisterPermissionChange_0400
+ * @tc.name: unregister permissionChange callback by anonymous callback
+ * @tc.desc: 1.register permissionChange callback by anonymous callback
+ * 2.unregister permissionChange callback by anonymous callback
+ */
+ it('bms_unregisterPermissionChange_0400', 0, async function (done) {
+ console.info('=====================start bms_unregisterPermissionChange_0400==================');
+ bundle.on('permissionChange', [uid], (err, data) => {
+ console.info('========register permission change========')
+ expect(err.code).assertEqual(-1);
+ done();
+ })
+ setTimeout(() => {
+ bundle.off('permissionChange', [uid], (err, data) => {
+ console.info('========register permission change========')
+ expect(err.code).assertEqual(-1);
+ done();
+ })
+ })
+ })
+
+ /*
+ * @tc.number: bms_unregisterAnyPermissionChange_0100
+ * @tc.name: unregister anyPermissionChange callback by other callback
+ * @tc.desc: 1.register anyPermissionChange callback
+ * 2.unregister anyPermissionChange callback by other different callback
+ */
+ it('bms_unregisterAnyPermissionChange_0100', 0, async function (done) {
+ console.info('=====================start bms_unregisterAnyPermissionChange_0100==================');
+ function callbackOne(err, data) {
+ console.info('=====================bms_bms_unregisterAnyPermissionChange_0100==================');
+ expect(err.code).assertEqual(0);
+ console.info('===========bundleInfo.data========' + JSON.stringify(data));
+ expect(data).assertEqual(undefined);
+ done();
+ }
+
+ function callbackTwo(err, data) {
+ expect(err.code).assertEqual(-1);
+ expect(data).assertEqual(undefined);
+ }
+ bundle.on('anyPermissionChange', callbackOne)
+ setTimeout(() => {
+ bundle.off('anyPermissionChange', callbackTwo)
+ setTimeout(() => {
+ bundle.off('anyPermissionChange', callbackOne)
+ }, TIMEOUT);
+ }, TIMEOUT);
+ })
+
+ /*
+ * @tc.number: bms_unregisterAnyPermissionChange_0200
+ * @tc.name: repeatly unregister anyPermissionChange callback
+ * @tc.desc: 1.register anyPermissionChange callback
+ * 2.repeatly unregister anyPermissionChange callback
+ */
+ it('bms_unregisterAnyPermissionChange_0200', 0, async function (done) {
+ console.info('=====================start bms_unregisterAnyPermissionChange_0200==================');
+ var errCode = DEFAULT_ERRCODE;
+ function callback(err, data) {
+ console.info('=======call back errCode=======' + err.code)
+ errCode = err.code;
+ }
+ bundle.on('anyPermissionChange', callback)
+ setTimeout(() => {
+ bundle.off('anyPermissionChange', callback)
+ setTimeout(() => {
+ expect(errCode).assertEqual(0);
+ bundle.off('anyPermissionChange', callback)
+ setTimeout(() => {
+ expect(errCode).assertEqual(-1);
+ bundle.off('anyPermissionChange', callback)
+ setTimeout(() => {
+ expect(errCode).assertEqual(-1);
+ done();
+ }, TIMEOUT);
+ }, TIMEOUT);
+ }, TIMEOUT);
+ }, TIMEOUT);
+ })
+
+ /*
+ * @tc.number: bms_unregisterAnyPermissionChange_0300
+ * @tc.name: unregister anyPermissionChange callback by anonymous callback
+ * @tc.desc: 1.register anyPermissionChange callback by anonymous callback
+ * 2.unregister anyPermissionChange callback by anonymous callback
+ */
+ it('bms_unregisterAnyPermissionChange_0300', 0, async function (done) {
+ console.info('=====================start bms_unregisterAnyPermissionChange_0300==================');
+ bundle.on('anyPermissionChange', (err, data) => {
+ console.info('========register permission change========')
+ expect(err.code).assertEqual(-1);
+ done();
+ })
+ setTimeout(() => {
+ bundle.off('anyPermissionChange', (err, data) => {
+ console.info('========register permission change========')
+ expect(err.code).assertEqual(-1);
+ done();
+ })
+ })
+ })
+})
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/List.test.js b/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/List.test.js
index 673e2c7e6eabd1127771ed3d9038fc55936d502d..1312e2e33a7aa6d2c8ee8dd29f8ca434ff4822ef 100644
--- a/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/List.test.js
+++ b/appexecfwk/bundle_standard/bundlemanager/actsbmsgetinfostest/entry/src/main/js/test/List.test.js
@@ -13,4 +13,5 @@
* limitations under the License.
*/
require('./ActsBmsGetBackGroundModes.test.js')
-require('./ActsBmsFormsInfoTest.test.js')
\ No newline at end of file
+require('./ActsBmsFormsInfoTest.test.js')
+require('./ActsBmsPermissionChange.test.js')
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmscheckpermissiontest/BUILD.gn b/appexecfwk/bundle_standard/bundlemanager/bmscheckpermissiontest/BUILD.gn
index 68eeb41395d20cc6a63e98722184fdf2c5f646ba..e622a1106b70332835acb5b145fefe4e2616f138 100644
--- a/appexecfwk/bundle_standard/bundlemanager/bmscheckpermissiontest/BUILD.gn
+++ b/appexecfwk/bundle_standard/bundlemanager/bmscheckpermissiontest/BUILD.gn
@@ -13,14 +13,14 @@
import("//test/xts/tools/build/suite.gni")
-ohos_js_hap_suite("ActsBmsCheckPermissionTest") {
+ohos_js_hap_suite("ActsBmsCheckPermissionManualTest") {
hap_profile = "./entry/src/main/config.json"
deps = [
":hjs_demo_js_assets",
":hjs_demo_resources",
]
certificate_profile = "./signature/openharmony_sx.p7b"
- hap_name = "ActsBmsCheckPermissionTest"
+ hap_name = "ActsBmsCheckPermissionManualTest"
}
ohos_js_assets("hjs_demo_js_assets") {
source_dir = "./entry/src/main/js/default"
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/BUILD.gn b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..8b87f4442d759d169c74066ea93338da8d2b3f77
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/BUILD.gn
@@ -0,0 +1,31 @@
+# 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_js_hap_suite("ActsBmsPermissionChangeManualTest") {
+ hap_profile = "./entry/src/main/config.json"
+ deps = [
+ ":hjs_demo_js_assets",
+ ":hjs_demo_resources",
+ ]
+ certificate_profile = "./signature/openharmony_sx.p7b"
+ hap_name = "ActsBmsPermissionChangeManualTest"
+}
+ohos_js_assets("hjs_demo_js_assets") {
+ source_dir = "./entry/src/main/js/default"
+}
+ohos_resources("hjs_demo_resources") {
+ sources = [ "./entry/src/main/resources" ]
+ hap_profile = "./entry/src/main/config.json"
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/Test.json b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/Test.json
new file mode 100644
index 0000000000000000000000000000000000000000..7a88763ed8d2ac31dd30211b9574f47273e84549
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/Test.json
@@ -0,0 +1,3 @@
+{
+ "description": "Configuration for hjunit demo Tests",
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..4133a20e120641db85c94098e50a4268cc084ccc
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/config.json
@@ -0,0 +1,414 @@
+{
+ "app": {
+ "bundleName": "com.example.permissionchange",
+ "vendor": "example",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.permissionchange",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "name": ".MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard",
+ "visible": true
+ }
+ ],
+ "js": [
+ {
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": false
+ },
+ "pages": [
+ "pages/index/index",
+ "pages/permissionchange/permissionchange"
+ ]
+ }
+ ],
+ "defPermissions": [
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_A",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_B",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_C",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_D",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_E",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_F",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_G",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_H",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_I",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_J",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_K",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_L",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_M",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_N",
+ "grantMode": "user_grant",
+ "availableScope": []
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_O",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_P",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_Q",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_R",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },{
+ "name": "com.permission.BMS_PERMISSIONCHANGE_S",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_T",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_U",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_V",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_W",
+ "grantMode": "user_grant",
+ "availableScope": [
+ "signature"
+ ]
+ }
+ ],
+ "reqPermissions": [
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_A",
+ "reason": "Need BMS_PERMISSIONCHANGE_A",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_B",
+ "reason": "Need BMS_PERMISSIONCHANGE_B",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_C",
+ "reason": "Need BMS_PERMISSIONCHANGE_C",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_D",
+ "reason": "Need BMS_PERMISSIONCHANGE_D",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_E",
+ "reason": "Need BMS_PERMISSIONCHANGE_E",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_F",
+ "reason": "Need BMS_PERMISSIONCHANGE_F",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_G",
+ "reason": "Need BMS_PERMISSIONCHANGE_G",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_H",
+ "reason": "Need BMS_PERMISSIONCHANGE_H",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_I",
+ "reason": "Need BMS_PERMISSIONCHANGE_I",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_J",
+ "reason": "Need BMS_PERMISSIONCHANGE_J",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_K",
+ "reason": "Need BMS_PERMISSIONCHANGE_K",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_L",
+ "reason": "Need BMS_PERMISSIONCHANGE_L",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_M",
+ "reason": "Need BMS_PERMISSIONCHANGE_M",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_N",
+ "reason": "Need BMS_PERMISSIONCHANGE_N",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_O",
+ "reason": "Need BMS_PERMISSIONCHANGE_O",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_P",
+ "reason": "Need BMS_PERMISSIONCHANGE_P",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_Q",
+ "reason": "Need BMS_PERMISSIONCHANGE_Q",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_R",
+ "reason": "Need BMS_PERMISSIONCHANGE_R",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_S",
+ "reason": "Need BMS_PERMISSIONCHANGE_S",
+ "usedScene": {
+ "ability": [
+ "com.example.permissionchange.MainAbility"
+ ],
+ "when": "always"
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/app.js b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/app.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a68c1992145a976957d7dcdd69a7e9c2e8e9877
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/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/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/i18n/en-US.json b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/i18n/en-US.json
new file mode 100644
index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/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/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/i18n/zh-CN.json b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/i18n/zh-CN.json
new file mode 100644
index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/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/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.css b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.css
new file mode 100644
index 0000000000000000000000000000000000000000..8818f180ec2c9b6040106b18ff1f99b53dab16db
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.css
@@ -0,0 +1,34 @@
+.container {
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.title {
+ margin-top: 10px;
+ font-size: 40px;
+ color: #000000;
+ justify-content: center;
+ text-align: center;
+}
+
+.todo-wraper {
+ width: 100%;
+ height: 80%;
+ justify-content: center;
+ diveder-color:#FF0000;
+ scrollbar-color: #57000000;
+ scrollbar-width: 30px;
+}
+.todo-item {
+ width: 100%;
+ height: 150px;
+ flex-direction: column;
+ justify-content: center;
+ align-self:center;
+}
+.btn{
+ width: 350px;
+ height: 100px;
+ font-size: 20px;
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.hml b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.hml
new file mode 100644
index 0000000000000000000000000000000000000000..fa76df4ec92cf1aefa78d5acfc315b0623458267
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.hml
@@ -0,0 +1,14 @@
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.js b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..0eca2e0e6831012d582cc57a3c5064ceb2586f9f
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/index/index.js
@@ -0,0 +1,308 @@
+/*
+ * 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 router from '@system.router';
+const injectRef = Object.getPrototypeOf(global) || global
+injectRef.regeneratorRuntime = require('@babel/runtime/regenerator')
+
+const ITEM_ZERO = 0;
+const ITEM_ONE = 1;
+const ITEM_TWO = 2;
+const ITEM_THREE = 3;
+const ITEM_FOUR = 4;
+const ITEM_FIVE = 5;
+const ITEM_SIX = 6;
+const ITEM_SEVEN = 7;
+const ITEM_EIGHT = 8;
+const ITEM_NINE = 9;
+const ITEM_TEN = 10;
+const ITEM_ELEVEN = 11;
+const ITEM_TWELVE = 12;
+const ITEM_THIRTEEN = 13;
+const ITEM_FOURTEEN = 14;
+const ITEM_FIFTEEN = 15;
+const ITEM_SIXTEEN = 16;
+const ITEM_SEVENTEEN = 17;
+const ITEM_EIGHTEEN = 18;
+const ITEM_NINETEEN =19;
+const ITEM_TWENTY = 20
+
+export default {
+ data: {
+ title: "BmsSystemTest",
+ testcase: [
+ {
+ /**
+ * @tc.number: bms_permissionChange_0100
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Register permission changes to monitor the permission changes of an application
+ * 2.Request permissions
+ * 3.Unregister permission changes
+ */
+ caseName: "bms_permissionChange_0100",
+ num: "_0100",
+ item: ITEM_ZERO
+ },
+ {
+ /**
+ * @tc.number: bms_permissionChange_0200
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Register permission changes to monitor the permission changes of an application
+ * 2.Request a permission that does not exist
+ * 3.Unregister permission changes
+ */
+ caseName: "bms_permissionChange_0200",
+ num: "_0200",
+ item: ITEM_ONE
+ },
+ {
+ /**
+ * @tc.number: bms_permissionChange_0300
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Register permission changes to monitor the permission changes of three applications
+ * 2.Start other application to request permissions
+ * 3.Unregister permission changes
+ */
+ caseName: "bms_permissionChange_0300",
+ num: "_0300",
+ item: ITEM_TWO
+ },
+ {
+ /**
+ * @tc.number: bms_permissionChange_0400
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Register error permission changes to monitor the permission changes of an application
+ * 2.Request permissions
+ */
+ caseName: "bms_permissionChange_0400",
+ num: "_0400",
+ item: ITEM_THREE
+ },
+ {
+ /**
+ * @tc.number: bms_permissionChange_0500
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Repeatedly register permission changes to monitor the permission changes
+ * of an application
+ * 2.Request permissions
+ * 3.Unregister permission changes
+ */
+ caseName: "bms_permissionChange_0500",
+ num: "_0500",
+ item: ITEM_FOUR
+ },
+ {
+ /**
+ * @tc.number: bms_permissionChange_0600
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Repeatedly register three different permission changes to monitor the permission changes
+ * of an application
+ * 2.Request permissions
+ * 3.Unregister those permission changes
+ */
+ caseName: "bms_permissionChange_0600",
+ num: "_0600",
+ item: ITEM_FIVE
+ },
+ {
+ /**
+ * @tc.number: bms_permissionChange_0700
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Repeatly register permission changes to monitor the permission changes of an application
+ * 2.Request permissions
+ * 3.Unregister permission changes without callback
+ */
+ caseName: "bms_permissionChange_0700",
+ num: "_0700",
+ item: ITEM_SIX
+ },
+ {
+ /**
+ * @tc.number: bms_permissionChange_0800
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Register three permission changes events to monitor the permission changes of an application
+ * 2.Request permissions
+ * 3.Unregister permission changes without callback
+ */
+ caseName: "bms_permissionChange_0800",
+ num: "_0800",
+ item: ITEM_SEVEN
+ },
+ {
+ /**
+ * @tc.number: bms_permissionChange_0900
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Register permission changes to monitor the permission changes of an application
+ * 2.Request permissions
+ * 3.Unregister error permission changes
+ */
+ caseName: "bms_permissionChange_0900",
+ num: "_0900",
+ item: ITEM_SIXTEEN
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0100
+ * @tc.name: on(anyPermissionChange, callback) : register all permission change
+ * off(anyPermissionChange, callback) : unregister all permission change
+ * @tc.desc: 1.Register any permission changes to monitor the permission changes of all applications
+ * 2.Request permissions
+ * 3.Unregister any permission changes
+ */
+ caseName: "bms_anyPermissionChange_0100",
+ num: "_0100",
+ item: ITEM_EIGHT
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0200
+ * @tc.name: on(anyPermissionChange, callback) : register all permission change
+ * off(anyPermissionChange, callback) : unregister all permission change
+ * @tc.desc: 1.Register any permission changes to monitor the permission changes of all applications
+ * 2.Request a permission that does not exist
+ * 3.Unregister any permission changes
+ */
+ caseName: "bms_anyPermissionChange_0200",
+ num: "_0200",
+ item: ITEM_NINE
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0300
+ * @tc.name: on(anyPermissionChange, callback) : register all permission change
+ * off(anyPermissionChange, callback) : unregister all permission change
+ * @tc.desc: 1.Register any permission changes to monitor the permission changes of all applications
+ * 2.Start other abilities to request permissions
+ * 3.Unregister any permission changes
+ */
+ caseName: "bms_anyPermissionChange_0300",
+ num: "_0300",
+ item: ITEM_TEN
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0400
+ * @tc.name: on(anyPermissionChange, callback) : register all permission change
+ * off(anyPermissionChange, callback) : unregister all permission change
+ * @tc.desc: 1.Register any error permission changes to monitor the permission changes
+ * of all applications
+ * 2.Request permissions
+ */
+ caseName: "bms_anyPermissionChange_0400",
+ num: "_0400",
+ item: ITEM_ELEVEN
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0500
+ * @tc.name: on(anyPermissionChange, callback) : register all permission change
+ * off(anyPermissionChange, callback) : unregister all permission change
+ * @tc.desc: 1.Repeatedly register any permission changes to monitor the permission changes
+ * of all applications
+ * 2.Request permissions
+ * 3.Unregister any permission changes
+ */
+ caseName: "bms_anyPermissionChange_0500",
+ num: "_0500",
+ item: ITEM_TWELVE
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0600
+ * @tc.name: on(anyPermissionChange, callback) : register all permission change
+ * off(anyPermissionChange, callback) : unregister all permission change
+ * @tc.desc: 1.Repeatedly register three different any permission changes to monitor the permission changes
+ * of all applications
+ * 2.Request permissions
+ * 3.Unregister those any permission changes callback
+ */
+ caseName: "bms_anyPermissionChange_0600",
+ num: "_0600",
+ item: ITEM_THIRTEEN
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0700
+ * @tc.name: on(anyPermissionChange, callback) : register all permission change
+ * off(anyPermissionChange, callback) : unregister all permission change
+ * @tc.desc: 1.Repeatedly register any permission changes to monitor the permission changes
+ * of all applications
+ * 2.Request permissions
+ * 3.Unregister any permission changes without callback
+ */
+ caseName: "bms_anyPermissionChange_0700",
+ num: "_0700",
+ item: ITEM_FOURTEEN
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0800
+ * @tc.name: on(anyPermissionChange, callback) : register all permission change
+ * off(anyPermissionChange, callback) : unregister all permission change
+ * @tc.desc: 1.Register three any permission changes events to monitor the permission changes of all applications
+ * 2.Request permissions
+ * 3.Unregister any permission changes without callback
+ */
+ caseName: "bms_anyPermissionChange_0800",
+ num: "_0800",
+ item: ITEM_FIFTEEN
+ },
+ {
+ /**
+ * @tc.number: bms_anyPermissionChange_0900
+ * @tc.name: on(permissionChange, uids, callback) : register permission change
+ * off(permissionChange, uids, callback) : unregister permission change
+ * @tc.desc: 1.Register permission changes to monitor the permission changes of of all applications
+ * 2.Request permissions
+ * 3.Unregister error any permission changes
+ */
+ caseName: "bms_anyPermissionChange_0900",
+ num: "_0900",
+ item: ITEM_SEVENTEEN
+ },
+ ]
+ },
+ onInit() {
+ this.title = "Bms PermissionChange Test";
+ },
+ onShow() {
+ },
+ onReady() {
+ console.info('onReady finish')
+ },
+ onBackPress() {
+ },
+ jumpPermission(caseNum, caseItem) {
+ console.info('===========clickAction===========')
+ router.replace({
+ uri: 'pages/permissionchange/permissionchange',
+ params: {
+ num: caseNum,
+ item: caseItem
+ }
+ })
+ },
+}
+
+
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.css b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.css
new file mode 100644
index 0000000000000000000000000000000000000000..3b7ffa8518cbd47096a40427c17df7a3b5490219
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.css
@@ -0,0 +1,57 @@
+.container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+}
+
+.title {
+ font-size: 30px;
+ text-align: center;
+ width: 100%;
+ height: 80px;
+}
+div{
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+
+.btn{
+ margin-bottom: 10px;
+ width: 200px;
+ height: 80px;
+}
+
+.todo-title {
+ font-style: normal;
+ font-size: 30px;
+}
+
+.log {
+ font-size: 20px;
+ text-align: center;
+ width: 100%;
+ height: 1000px;
+}
+.todo-wraper {
+ width: 100%;
+ height: 100%;
+ justify-content: center;
+ diveder-color:#0090FF;
+ scrollbar-color: #57000000;
+ scrollbar-width: 10px;
+}
+.todo-item {
+ width: 100%;
+ height: 100px;
+ flex-direction: column;
+ justify-content: center;
+ align-self:center;
+}
+.text {
+ margin: 20%;
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.hml b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.hml
new file mode 100644
index 0000000000000000000000000000000000000000..98137036f6c5cb0f0077bec0473f8def31656160
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.hml
@@ -0,0 +1,21 @@
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+ {{$item + caseNum}}
+
+
+
+
+
+
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.js b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.js
new file mode 100644
index 0000000000000000000000000000000000000000..02c101534e99136c44627cf5ad07c04a4781a508
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/permissionchange.js
@@ -0,0 +1,146 @@
+/*
+ * 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 router from '@system.router';
+
+export default {
+ data: {
+ title: "Bms permission change",
+ logmessage: "This is log message:\n",
+ testcase: [
+ [
+ "registerPermissionChange",
+ "requestPermissions",
+ "unregisterPermissionChange",
+ ],
+ [
+ "registerPermissionChange",
+ "requestNotExistPermissions",
+ "unregisterPermissionChange",
+ ],
+ [
+ "registerThreeAppsPermissionChange",
+ "requestPermissionsFirst",
+ "startFirstRequestPermissions",
+ "startSecondRequestPermissions",
+ "unregisterThreeAppsPermissionChange",
+ ],
+ [
+ "registerErrPermissionChange",
+ "requestPermissionsSecond",
+ ],
+ [
+ "registerPermissionChangeRepeat",
+ "requestPermissionsThird",
+ "unregisterPermissionChange",
+ ],
+ [
+ "registerThreePermissionChangeCallback",
+ "requestPermissionsFourth",
+ "unregisterThreePermissionChangeCallback",
+ ],
+ [
+ "registerThreePermissionChangeCallback",
+ "requestPermissionsFifth",
+ "unregisterPermissionChangeNoCallback",
+ ],
+ [
+ "registerPermissionChangeRepeat",
+ "requestPermissionsSixth",
+ "unregisterPermissionChangeNoCallback",
+ ],
+ [
+ "registerAnyPermissionChange",
+ "requestPermissionsSeventh",
+ "unregisterAnyPermissionChange",
+ ],
+ [
+ "registerAnyPermissionChange",
+ "requestNotExistPermissions",
+ "unregisterAnyPermissionChange",
+ ],
+ [
+ "registerThreeAnyPermissionChange",
+ "requestPermissionsEighth",
+ "startFirstRequestPermissions",
+ "startSecondRequestPermissions",
+ "unregisterThreeAnyPermissionChange",
+ ],
+ [
+ "registerErrAnyPermissionChange",
+ "requestPermissionsNinth",
+ ],
+ [
+ "registerAnyPermissionChangeRepeat",
+ "requestPermissionsTenth",
+ "unregisterAnyPermissionChange",
+ ],
+ [
+ "registerThreeAnyPermissionChangeCallback",
+ "requestPermissionsEleventh",
+ "unregisterThreeAnyPermissionChangeCallback",
+ ],
+ [
+ "registerAnyPermissionChangeRepeat",
+ "requestPermissionsTwelfth",
+ "unregisterAnyPermissionChangeNoCallback",
+ ],
+ [
+ "registerThreeAnyPermissionChangeCallback",
+ "requestPermissionsThirteenth",
+ "unregisterAnyPermissionChangeNoCallback",
+ ],
+ [
+ "registerPermissionChange",
+ "requestPermissionsFifteenth",
+ "unregisterErrPermissionChange",
+ "unregisterPermissionChange",
+ ],
+ [
+ "registerAnyPermissionChange",
+ "requestPermissionsFourteenth",
+ "unregisterErrAnyPermissionChange",
+ "unregisterAnyPermissionChange",
+ ]
+ ],
+ },
+ onInit() {
+ this.title = "Bms permission change";
+ this.logmessage = "This is log message:\n";
+ this.caseNum = this.num;
+ this.caseItem = this.item;
+ },
+ onShow() {
+ },
+ onReady() {
+ console.info('onReady finish')
+ },
+ onBackPress() {
+ },
+ async stopAbility() {
+ },
+ backIndex() {
+ router.replace({
+ uri: 'pages/index/index'
+ })
+ },
+ async runTest(funcName) {
+ console.debug("======Run func ======:" + JSON.stringify(funcName))
+ let { runFunc } = require('./testfunc.js')
+ this.logmessage += await runFunc(funcName, this) + '\n';
+ },
+ clearLog() {
+ this.logmessage = "";
+ }
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/testfunc.js b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/testfunc.js
new file mode 100644
index 0000000000000000000000000000000000000000..8d7f135be3d3e687f64798bc9cfd63127157f171
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/js/default/pages/permissionchange/testfunc.js
@@ -0,0 +1,421 @@
+/*
+ * 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 bundle from '@ohos.bundle'
+import featureAbility from '@ohos.ability.featureAbility'
+var receive;
+var uid;
+const PERMISSIONCHANGE = 'permissionChange';
+const ANYPERMISSIONCHANGE = 'anyPermissionChange';
+export async function runFunc(caseName, obj) {
+ console.debug("======Func name is ======:" + JSON.stringify(caseName))
+ var dataInfo = await bundle.getBundleInfo('com.example.permissionchange', 1);
+ uid = dataInfo.uid;
+ receive = obj;
+ allFunc[caseName].func();
+ return getFuncInfo(caseName);
+}
+
+export function getFuncInfo(caseName) {
+ console.debug("======GetCaseInfo======:" + JSON.stringify(caseName))
+ return allFunc[caseName].info;
+}
+
+var allFunc = {
+ registerPermissionChange: {
+ func: () => { bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission) },
+ info: "register permissionChange event."
+ },
+ registerAnyPermissionChange: {
+ func: () => { bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission); },
+ info: "register anypermissionChange event."
+ },
+ registerThreeAnyPermissionChange: {
+ func: () => { bundle.on(ANYPERMISSIONCHANGE, onReciveThreeAnyPermission); },
+ info: "register anypermissionChange event."
+ },
+ requestPermissions: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_A"]) },
+ info: "request permissions."
+ },
+ requestPermissionsFirst: {
+ func: () => {
+ requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_B", "com.permission.BMS_PERMISSIONCHANGE_C",
+ "com.permission.BMS_PERMISSIONCHANGE_D"])
+ },
+ info: "request permissions First."
+ },
+ requestPermissionsSecond: {
+ func: () => {
+ requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_E"])
+ },
+ info: "request permissions Second."
+ },
+ requestPermissionsThird: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_F"]) },
+ info: "request permissions Third."
+ },
+ requestPermissionsFourth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_G"]) },
+ info: "request permissions Fourth."
+ },
+ requestPermissionsFifth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_H"]) },
+ info: "request permissions Fifth."
+ },
+ requestPermissionsSixth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_I"]) },
+ info: "request permissions Sixth."
+ },
+ requestPermissionsSeventh: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_J"]) },
+ info: "request permissions Seventh."
+ },
+ requestPermissionsEighth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_K"]) },
+ info: "request permissions Eighth."
+ },
+ requestPermissionsNinth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_L"]) },
+ info: "request permissions Ninth."
+ },
+ requestPermissionsTenth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_N"]) },
+ info: "request permissions Tenth."
+ },
+ requestPermissionsEleventh: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_O"]) },
+ info: "request permissions Eleventh."
+ },
+ requestPermissionsTwelfth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_P"]) },
+ info: "request permissions Twelfth."
+ },
+ requestPermissionsThirteenth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_Q"]) },
+ info: "request permissions Thirteenth."
+ },
+ requestPermissionsFourteenth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_R"]) },
+ info: "request permissions Fourteenth."
+ },
+ requestPermissionsFifteenth: {
+ func: () => { requestPermissions(["com.permission.BMS_PERMISSIONCHANGE_S"]) },
+ info: "request permissions Fifteenth."
+ },
+ startFirstRequestPermissions: {
+ func: () => {
+ startAbilityToRequestPermissions("com.example.firstrequestpermissions",
+ "com.example.firstrequestpermissions.MainAbility")
+ },
+ info: "start first app to request permissions."
+ },
+ startSecondRequestPermissions: {
+ func: () => {
+ startAbilityToRequestPermissions("com.example.secondrequestpermissions",
+ "com.example.secondrequestpermissions.MainAbility")
+ },
+ info: "start second app to request permissions."
+ },
+ unregisterPermissionChange: {
+ func: () => { bundle.off(PERMISSIONCHANGE, [uid], onRecivePermission) },
+ info: "unregister permissionChange event."
+ },
+ unregisterAnyPermissionChange: {
+ func: () => { bundle.off(ANYPERMISSIONCHANGE, onReciveAnyPermission); },
+ info: "unregister anypermissionChange event."
+ },
+ unregisterThreeAnyPermissionChange: {
+ func: () => { bundle.off(ANYPERMISSIONCHANGE, onReciveThreeAnyPermission); },
+ info: "unregister anypermissionChange event."
+ },
+ unregisterErrPermissionChange: {
+ func: () => { bundle.off('error', [uid], onRecivePermission) },
+ info: "unregister permissionChange event."
+ },
+ unregisterErrAnyPermissionChange: {
+ func: () => { bundle.off('error', onReciveAnyPermission); },
+ info: "unregister anypermissionChange event."
+ },
+ registerErrPermissionChange: {
+ func: () => { bundle.on('error', [uid], onRecivePermission) },
+ info: "register error permissionChange."
+ },
+ registerErrAnyPermissionChange: {
+ func: () => { bundle.on('error', onReciveAnyPermission) },
+ info: "register error anyPermissionChange."
+ },
+ unregisterErrPermissionChange: {
+ func: () => { bundle.off('eror', [uid], onRecivePermission) },
+ info: "unregister error permissionChange."
+ },
+ unregisterErrAnyPermissionChange: {
+ func: () => { bundle.off('eror', onReciveAnyPermission) },
+ info: "unregister error anyPermissionChange."
+ },
+ unregisterPermissionChangeNotAll: {
+ func: unregisterPermissionChangeNotAll,
+ info: "unregister permission change does not include all uids."
+ },
+ requestNotExistPermissions: {
+ func: () => { requestPermissions(["noPermission"]) },
+ info: "request a permission that does not exist "
+ },
+ registerPermissionChangeRepeat: {
+ func: registerPermissionChangeRepeat,
+ info: "repeatedly register permissionChange event."
+ },
+ registerAnyPermissionChangeRepeat: {
+ func: registerAnyPermissionChangeRepeat,
+ info: "repeatedly register anyPermissionChange event."
+ },
+ unregisterThreePermissionChangeCallback: {
+ func: () => {
+ bundle.off(PERMISSIONCHANGE, [uid], onRecivePermission);
+ bundle.off(PERMISSIONCHANGE, [uid], onRecivePermission2);
+ bundle.off(PERMISSIONCHANGE, [uid], onRecivePermission3);
+ },
+ info: "unregister three different PermissionChange callback"
+ },
+ unregisterThreeAnyPermissionChangeCallback: {
+ func: () => {
+ bundle.off(ANYPERMISSIONCHANGE, onReciveAnyPermission);
+ bundle.off(ANYPERMISSIONCHANGE, onReciveAnyPermission2);
+ bundle.off(ANYPERMISSIONCHANGE, onReciveAnyPermission3);
+ },
+ info: "unregister three different anyPermissionChange callback"
+ },
+ registerThreeAppsPermissionChange: {
+ func: registerThreeApp,
+ info: "register three applications permissionChange event."
+ },
+ unregisterThreeAppsPermissionChange: {
+ func: unregisterThreeApp,
+ info: "unregister three applications permissionChange event."
+ },
+ unregisterPermissionChangeNoCallback: {
+ func: () => { bundle.off(PERMISSIONCHANGE, [uid]); },
+ info: "unregister permissionChange without callback."
+ },
+ unregisterAnyPermissionChangeNoCallback: {
+ func: () => { bundle.off(ANYPERMISSIONCHANGE); },
+ info: "unregister anyPermissionChange event without callback."
+ },
+ registerThreePermissionChangeCallback: {
+ func: () => {
+ bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission);
+ bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission2);
+ bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission3);
+ },
+ info: "register three different PermissionChange callback"
+ },
+ registerThreeAnyPermissionChangeCallback: {
+ func: () => {
+ bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission)
+ bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission2);
+ bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission3);
+ },
+ info: "register three different AnyPermissionChange callback"
+ },
+}
+
+async function onRecivePermission(err, data) {
+ console.info('======permission changed=======');
+ console.info("permission changed err code" + err.code);
+ console.info("permission changed uid" + data);
+ if (data == undefined && err.code == 0) {
+ receive.logmessage += "unregister permission SUCCESS!\n"
+ } else if (err.code != 0) {
+ receive.logmessage += "unregister permission FAIL!\n"
+ } else if (data == uid) {
+ receive.logmessage += "permission change SUCCESS, change uid is " + data + '\n'
+ } else {
+ receive.logmessage += "permission change FAILED, change uid is " + data + '\n'
+ }
+}
+
+async function onRecivePermission2(err, data) {
+ console.info('======permission changed second=======');
+ console.info("permission changed err code" + err.code);
+ console.info("permission changed uid" + data);
+ if (data == undefined && err.code == 0) {
+ receive.logmessage += "callback2 unregister permission SUCCESS!\n"
+ } else if (err.code != 0) {
+ receive.logmessage += "callback2 unregister permission FAIL!\n"
+ } else if (data == uid) {
+ receive.logmessage += "callback2 permission change SUCCESS, change uid is " + data + '\n'
+ } else {
+ receive.logmessage += "callback2 permission change FAILED, change uid is " + data + '\n'
+ }
+}
+
+async function onRecivePermission3(err, data) {
+ console.info('======permission changed third=======');
+ console.info("permission changed err code" + err.code);
+ console.info("permission changed uid" + data);
+ if (data == undefined && err.code == 0) {
+ receive.logmessage += "callback3 unregister permission SUCCESS!\n"
+ } else if (err.code != 0) {
+ receive.logmessage += "callback3 unregister permission FAIL!\n"
+ } else if (data == uid) {
+ receive.logmessage += "callback3 permission change SUCCESS, change uid is " + data + '\n'
+ } else {
+ receive.logmessage += "callback3 permission change FAILED, change uid is " + data + '\n'
+ }
+}
+
+async function onReciveAnyPermission(err, data) {
+ console.info('======any permission changed=======');
+ console.info("permission changed err code" + err.code);
+ console.info("permission changed uid" + data);
+ if (data == undefined && err.code == 0) {
+ receive.logmessage += "unregister anyPermission SUCCESS!\n"
+ } else if (err.code != 0) {
+ receive.logmessage += "unregister anyPermission FAIL!\n"
+ } else if (data == uid) {
+ receive.logmessage += "anyPermission change SUCCESS, change uid is " + data + '\n'
+ } else {
+ receive.logmessage += "anyPermission change FAILED, change uid is " + data + '\n'
+ }
+}
+
+async function onReciveAnyPermission2(err, data) {
+ console.info('======any permission changed=======');
+ console.info("permission changed err code" + err.code);
+ console.info("permission changed uid" + data);
+ if (data == undefined && err.code == 0) {
+ receive.logmessage += "callback2 unregister anyPermission SUCCESS!\n"
+ } else if (err.code != 0) {
+ receive.logmessage += "callback2 unregister anyPermission FAIL!\n"
+ } else if (data == uid) {
+ receive.logmessage += "callback2 anyPermission change SUCCESS, change uid is " + data + '\n'
+ } else {
+ receive.logmessage += "callback2 anyPermission change FAILED, change uid is " + data + '\n'
+ }
+}
+
+async function onReciveAnyPermission3(err, data) {
+ console.info('======any permission changed=======');
+ console.info("permission changed err code" + err.code);
+ console.info("permission changed uid" + data);
+ if (data == undefined && err.code == 0) {
+ receive.logmessage += "callback3 unregister anyPermission SUCCESS!\n"
+ } else if (err.code != 0) {
+ receive.logmessage += "callback3 unregister anyPermission FAIL!\n"
+ } else if (data == uid) {
+ receive.logmessage += "callback3 anyPermission change SUCCESS, change uid is " + data + '\n'
+ } else {
+ receive.logmessage += "callback3 anyPermission change FAILED, change uid is " + data + '\n'
+ }
+}
+
+async function requestPermissions(permissions) {
+ console.debug("==========begin request permissions==========")
+ var context = await featureAbility.getContext();
+ await context.requestPermissionsFromUser(permissions, 1,
+ (err, data) => {
+ console.log("RequestPermissionForUser:requestCode=" + data.requestCode);
+ for (var j = 0; j < data.permissions.length; j++) {
+ console.log("RequestPermissionForUser permissions : " + data.permissions[j]);
+ }
+
+ for (var j = 0; j < data.grantResults.length; j++) {
+ console.log("RequestPermissionForUser grantResults : " + data.grantResults[j]);
+ }
+ });
+}
+
+async function startAbilityToRequestPermissions(newBundleName, newAbilityName) {
+ console.info('=======start Ability========');
+ await featureAbility.startAbility(
+ {
+ want:
+ {
+ bundleName: newBundleName,
+ abilityName: newAbilityName
+ }
+ }
+ );
+}
+
+async function unregisterPermissionChangeNotAll() {
+ console.debug("==========begin unregister permissionChange without all uids==========");
+ var dataInfo1 = await bundle.getBundleInfo('com.example.permissionchange', 1);
+ var dataInfo2 = await bundle.getBundleInfo('com.example.firstrequestpermissions', 1);
+ await bundle.off(PERMISSIONCHANGE, [dataInfo1.uid, dataInfo2.uid], onRecivePermission);
+}
+
+async function onReciveThreePermission(err, data) {
+ var dataInfo1 = await bundle.getBundleInfo('com.example.firstrequestpermissions', 1);
+ var dataInfo2 = await bundle.getBundleInfo('com.example.secondrequestpermissions', 1);
+ console.info('======permission changed=======');
+ console.info("permission changed err code" + err.code);
+ console.info("permission changed uid" + data);
+ if (data == undefined && err.code == 0) {
+ receive.logmessage += "unregister permission SUCCESS!\n"
+ } else if (err.code != 0) {
+ receive.logmessage += "unregister permission FAIL!\n"
+ } else if (data == uid || data == dataInfo1.uid || data == dataInfo2.uid) {
+ receive.logmessage += "permission change SUCCESS, change uid is " + data + '\n'
+ } else {
+ receive.logmessage += "permission change FAILED, change uid is " + data + '\n'
+ }
+}
+
+async function registerThreeApp() {
+ var dataInfo1 = await bundle.getBundleInfo('com.example.firstrequestpermissions', 1);
+ var dataInfo2 = await bundle.getBundleInfo('com.example.secondrequestpermissions', 1);
+ await bundle.on(PERMISSIONCHANGE, [uid, dataInfo1.uid, dataInfo2.uid], onReciveThreePermission);
+}
+
+async function unregisterThreeApp() {
+ var dataInfo1 = await bundle.getBundleInfo('com.example.firstrequestpermissions', 1);
+ var dataInfo2 = await bundle.getBundleInfo('com.example.secondrequestpermissions', 1);
+ await bundle.off(PERMISSIONCHANGE, [uid, dataInfo1.uid, dataInfo2.uid], onReciveThreePermission);
+}
+
+async function registerPermissionChangeRepeat() {
+ console.debug("==========begin repeat register permissionChange==========")
+ await bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission);
+ await bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission);
+ await bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission);
+ await bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission);
+ await bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission);
+ await bundle.on(PERMISSIONCHANGE, [uid], onRecivePermission);
+}
+async function registerAnyPermissionChangeRepeat() {
+ console.debug("==========begin repeat register anyPermissionChange==========")
+ await bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission);
+ await bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission);
+ await bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission);
+ await bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission);
+ await bundle.on(ANYPERMISSIONCHANGE, onReciveAnyPermission);
+}
+
+async function onReciveThreeAnyPermission(err, data) {
+ console.info('======any permission changed=======');
+ console.info("permission changed err code" + err.code);
+ console.info("permission changed uid" + data);
+ var dataInfo1 = await bundle.getBundleInfo('com.example.firstrequestpermissions', 1);
+ var dataInfo2 = await bundle.getBundleInfo('com.example.secondrequestpermissions', 1);
+ if (data == undefined && err.code == 0) {
+ receive.logmessage += "unregister anyPermission SUCCESS!\n"
+ } else if (err.code != 0) {
+ receive.logmessage += "unregister anyPermission FAIL!\n"
+ } else if (data == uid || data == dataInfo1.uid || data == dataInfo2.uid) {
+ receive.logmessage += "anyPermission change SUCCESS, change uid is " + data + '\n'
+ } else {
+ receive.logmessage += "anyPermission change FAILED, change uid is " + data + '\n'
+ }
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/resources/base/element/string.json b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/resources/base/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..95b8c72aeebbb563b5e088e30ee474eb5f2cbcf6
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,12 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "bmspermissonchange"
+ },
+ {
+ "name": "mainability_description",
+ "value": "JS_Phone_Empty Feature Ability"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/resources/base/media/icon.png b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/entry/src/main/resources/base/media/icon.png differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/signature/openharmony_sx.p7b
new file mode 100644
index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5
Binary files /dev/null and b/appexecfwk/bundle_standard/bundlemanager/bmspermissionchangetest/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/BUILD.gn b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..34a5af0a5ae54998a2c8b0de179ecf03dc3c51f8
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/BUILD.gn
@@ -0,0 +1,34 @@
+# 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("FirstRequestPermissions") {
+ hap_profile = "./src/main/config.json"
+ hap_name = "FirstRequestPermissions"
+ 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_resources",
+ ]
+ certificate_profile = "./signature/openharmony_sx.p7b"
+}
+ohos_js_assets("hjs_demo_js_assets") {
+ source_dir = "./src/main/js/default"
+}
+ohos_resources("hjs_demo_resources") {
+ sources = [ "./src/main/js/resources" ]
+ hap_profile = "./src/main/config.json"
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/Test.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/Test.json
new file mode 100644
index 0000000000000000000000000000000000000000..7a88763ed8d2ac31dd30211b9574f47273e84549
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/Test.json
@@ -0,0 +1,3 @@
+{
+ "description": "Configuration for hjunit demo Tests",
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/signature/openharmony_sx.p7b
new file mode 100644
index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5
Binary files /dev/null and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..ac42b49b5dc8ee00a0f4591bae0d376912787b48
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/config.json
@@ -0,0 +1,84 @@
+{
+ "app": {
+ "bundleName": "com.example.firstrequestpermissions",
+ "vendor": "example",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.firstrequestpermissions",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "visible": true,
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "name": "com.example.firstrequestpermissions.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard",
+ "permissions": ["ohos.permission.CAMERA"]
+ }
+ ],
+ "js": [
+ {
+ "pages": [
+ "pages/index/index"
+ ],
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": false
+ }
+ }
+ ],
+ "reqPermissions": [
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_U",
+ "reason": "Need PERMISSION_U",
+ "usedScene": {
+ "ability": [
+ "com.example.firstrequestpermissions.MainAbility"
+ ],
+ "when": "always"
+ }
+ },
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_V",
+ "reason": "Need PERMISSION_V",
+ "usedScene": {
+ "ability": [
+ "com.example.firstrequestpermissions.MainAbility"
+ ],
+ "when": "always"
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/app.js b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/app.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a68c1992145a976957d7dcdd69a7e9c2e8e9877
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/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/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/i18n/en-US.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/i18n/en-US.json
new file mode 100644
index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/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/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/i18n/zh-CN.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/i18n/zh-CN.json
new file mode 100644
index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/i18n/zh-CN.json
@@ -0,0 +1,6 @@
+{
+ "strings": {
+ "hello": "您好",
+ "world": "世界"
+ }
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.css b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.css
new file mode 100644
index 0000000000000000000000000000000000000000..bf087a1bf1bc551266dd710a592d8e0a6e430a06
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.css
@@ -0,0 +1,16 @@
+.container {
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.title {
+ font-size: 100px;
+}
+
+.button {
+ margin-top: 15px;
+ font-size:35px;
+ background-color: aqua;
+ text-color: black;
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.hml b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.hml
new file mode 100644
index 0000000000000000000000000000000000000000..352365aa737f1b3a3d7f5f1d25413d8e5d3dfc4f
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.hml
@@ -0,0 +1,7 @@
+
+
+ {{ title }}
+
+
+
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.js b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..fce67f7ba75c4eb48e0c165cbff06cb143506833
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/default/pages/index/index.js
@@ -0,0 +1,44 @@
+/*
+ * 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 featureAbility from '@ohos.ability.featureAbility'
+
+const injectRef = Object.getPrototypeOf(global) || global
+injectRef.regeneratorRuntime = require('@babel/runtime/regenerator')
+
+export default {
+ data: {
+ title: ""
+ },
+ onInit() {
+ this.title = "Start First"
+ },
+ onShow() {
+ },
+ async reqPermission() {
+ var context = await featureAbility.getContext();
+ context.requestPermissionsFromUser(["com.permission.BMS_PERMISSIONCHANGE_U",
+ "com.permission.BMS_PERMISSIONCHANGE_V"], 1,
+ (err, data) => {
+ console.log("RequestPermissionForUser:requestCode=" + data.requestCode);
+ for (var j = 0; j < data.permissions.length; j++) {
+ console.log("RequestPermissionForUser permissions : " + data.permissions[j]);
+ }
+
+ for (var j = 0; j < data.grantResults.length; j++) {
+ console.log("RequestPermissionForUser grantResults : " + data.grantResults[j]);
+ }
+ });
+ },
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/resources/base/element/string.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/resources/base/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..268d71aef5ab970d472fcab46012605fdfc1590f
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/resources/base/element/string.json
@@ -0,0 +1,12 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "firstrequestpermission"
+ },
+ {
+ "name": "mainability_description",
+ "value": "JS_Phone_Empty Feature Ability"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/resources/base/media/icon.png b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/resources/base/media/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsfirstrequestpermissions/src/main/js/resources/base/media/icon.png differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfifthscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfifthscene/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfifthscene/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfifthscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfifthscene/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfifthscene/src/main/config.json
index 0dd1dbba6b1087fd7a324deafea5134aa5172cc6..92948d11d1f295674832611b1535dda583a57087 100644
--- a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfifthscene/src/main/config.json
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfifthscene/src/main/config.json
@@ -33,10 +33,21 @@
"entity.system.home"
],
"actions": [
- "action.system.home"
+ "action.system.third5A"
]
}
],
+ "backgroundModes": [
+ "dataTransfer",
+ "audioPlayback",
+ "audioRecording",
+ "location",
+ "bluetoothInteraction",
+ "multiDeviceConnection",
+ "wifiInteraction",
+ "voip",
+ "taskKeeping"
+ ],
"name": "com.example.third5.AMainAbility",
"srcLanguage": "js",
"icon": "$media:icon",
@@ -114,10 +125,14 @@
"entity.system.home"
],
"actions": [
- "action.system.home"
+ "action.system.third5B"
]
}
],
+ "backgroundModes": [
+ "dataTransfer",
+ "voip"
+ ],
"name": ".BMainAbility",
"srcLanguage": "js",
"icon": "$media:icon",
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstscene/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstscene/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstscene/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstscene/src/main/config.json
index ca3c3c852a3009652421486376832bfebb3944fe..2e8cab47381df18102030f0e1d91c07443d8abcc 100644
--- a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstscene/src/main/config.json
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstscene/src/main/config.json
@@ -2,6 +2,7 @@
"app": {
"bundleName": "com.example.third1",
"vendor": "example",
+ "singleUser":true,
"version": {
"code": 1,
"name": "1.0"
@@ -12,7 +13,11 @@
"releaseType": "Beta1"
}
},
- "deviceConfig": {},
+ "deviceConfig": {
+ "default":{
+ "keepAlive":true
+ }
+ },
"module": {
"package": "com.example.third1.entry",
"name": "com.example.third1.BmsThirdBundle1",
@@ -36,6 +41,17 @@
]
}
],
+ "backgroundModes": [
+ "dataTransfer",
+ "audioPlayback",
+ "audioRecording",
+ "location",
+ "bluetoothInteraction",
+ "multiDeviceConnection",
+ "wifiInteraction",
+ "voip",
+ "taskKeeping"
+ ],
"name": "com.example.third1.MainAbility",
"icon": "$media:icon",
"form": {
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstsceneupdate/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstsceneupdate/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstsceneupdate/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstsceneupdate/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstsceneupdate/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstsceneupdate/src/main/config.json
index bb7a30835b49430d1ed21673efff0196c5628c8f..9d6006a707b67905f24552619f267575f46e7001 100644
--- a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstsceneupdate/src/main/config.json
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfirstsceneupdate/src/main/config.json
@@ -2,6 +2,7 @@
"app": {
"bundleName": "com.example.third1",
"vendor": "example",
+ "singleUser":false,
"version": {
"code": 2,
"name": "2.0"
@@ -12,7 +13,11 @@
"releaseType": "Beta1"
}
},
- "deviceConfig": {},
+ "deviceConfig": {
+ "default":{
+ "keepAlive":false
+ }
+ },
"module": {
"package": "com.example.third1.entry",
"name": "com.example.third1.BmsThirdBundle1",
@@ -37,6 +42,15 @@
]
}
],
+ "backgroundModes": [
+ "audioRecording",
+ "location",
+ "bluetoothInteraction",
+ "multiDeviceConnection",
+ "wifiInteraction",
+ "voip",
+ "taskKeeping"
+ ],
"name": "com.example.third1.AMainAbility",
"icon": "$media:icon",
"description": "$string:mainability_description",
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfourthscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfourthscene/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfourthscene/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosfourthscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfoshapc/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfoshapc/signature/openharmony_sx.p7b
old mode 100644
new mode 100755
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfoshapc/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfoshapc/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosjsscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosjsscene/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosjsscene/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosjsscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosscenesystem/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosscenesystem/src/main/config.json
index 1a90440f69b5dabbea01f3f90c68276ecc94b4f0..2437ceb4edda67f851e606580b9d9dc5a7444c62 100644
--- a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosscenesystem/src/main/config.json
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosscenesystem/src/main/config.json
@@ -2,6 +2,7 @@
"app": {
"bundleName": "com.example.system1",
"vendor": "example",
+ "singleUser":true,
"version": {
"code": 1,
"name": "1.0"
@@ -12,7 +13,11 @@
"releaseType": "Beta1"
}
},
- "deviceConfig": {},
+ "deviceConfig": {
+ "default":{
+ "keepAlive":true
+ }
+ },
"module": {
"package": "com.example.system1",
"name": ".BmsSystemBundle1",
@@ -44,8 +49,7 @@
"type": "page",
"forms": [
{
- "colorMode": "light",
- "description": " JS1S Form",
+ "description": "JS1S Form",
"supportDimensions": [ "1*2", "2*2", "2*4", "4*4"],
"type": "JS",
"jsComponentName": "JS_name1S",
@@ -59,11 +63,17 @@
},
"isDefault": true,
"deepLink": "ability://com.example.myapplication.fa/.MainAbility",
- "defaultDimension": "1*2",
+ "defaultDimension": "4*4",
"name": "Form_JS1S",
- "scheduledUpateTime": "21:55",
+ "scheduledUpdateTime": "10:30",
"updateEnabled": true,
- "updateDuration": 1
+ "updateDuration": 1,
+ "formConfigAbility": "ability://com.example.system1.MainAbility",
+ "src": "/pages/card/index",
+ "window": {
+ "designWidth": 770,
+ "autoDesignWidth": true
+ }
}
],
"launchType": "standard",
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosscenevendor/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosscenevendor/src/main/config.json
index 78a39dd60b91b726f6ed07f7e7cb6fca91c41e5b..299de0bbe3c29fbfc2dffb8c6fe5118860231354 100644
--- a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosscenevendor/src/main/config.json
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosscenevendor/src/main/config.json
@@ -43,26 +43,28 @@
"type": "page",
"forms": [
{
- "colorMode": "light",
- "description": " JS1V Form",
- "supportDimensions": [ "1*2", "2*2", "2*4", "4*4"],
- "type": "JS",
+ "colorMode": "dark",
+ "description": "JS1V Form",
+ "supportDimensions": ["1*2", "2*2", "test", "2*4"],
+ "type": "Java",
"jsComponentName": "JS_name1V",
"metaData": {
- "customizeData": [
- {
- "name": "originWidgetName1V",
- "value": "com.openharmony.weather.testWidget1V"
- }
- ]
+ "customizeData": [{
+ "name": "originWidgetName1V",
+ "value": "com.openharmony.weather.testWidget1V"
+ }]
},
- "isDefault": true,
+ "isDefault": false,
"deepLink": "ability://com.example.myapplication.fa/.MainAbility",
- "defaultDimension": "1*2",
+ "defaultDimension": "2*3",
"name": "Form_JS1V",
- "scheduledUpateTime": "21:55",
+ "scheduledUpdateTime": "21:55",
"updateEnabled": true,
- "updateDuration": 1
+ "updateDuration": 1,
+ "window": {
+ "designWidth": 750,
+ "autoDesignWidth": true
+ }
},
{
"colorMode": "light",
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossecondscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossecondscene/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossecondscene/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossecondscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossecondscene/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossecondscene/src/main/config.json
index 2cb8e72bd85605c64f890f5520750748007ceb53..d64c2cf6a01ae597e4ec395e26adb47503bc88d0 100644
--- a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossecondscene/src/main/config.json
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossecondscene/src/main/config.json
@@ -36,6 +36,17 @@
]
}
],
+ "backgroundModes": [
+ "hello",
+ "audioPlayback",
+ "audioRecording",
+ "location",
+ "bluetoothInteraction",
+ "multiDeviceConnection",
+ "wifiInteraction",
+ "voip",
+ "taskKeeping"
+ ],
"name": "com.example.third2.MainAbility",
"srcLanguage": "js",
"visible": true,
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/BUILD.gn b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..b9002859bbae6ed80cd8b90d89d4dfb2330467ed
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/BUILD.gn
@@ -0,0 +1,34 @@
+# 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("bmsThirdBundleTest6") {
+ hap_profile = "./src/main/config.json"
+ hap_name = "bmsThirdBundleTest6"
+ 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_resources",
+ ]
+ certificate_profile = "./signature/openharmony_sx.p7b"
+}
+ohos_js_assets("hjs_demo_js_assets") {
+ source_dir = "./src/main/js/default"
+}
+ohos_resources("hjs_demo_resources") {
+ sources = [ "./src/main/js/resources" ]
+ hap_profile = "./src/main/config.json"
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/Test.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/Test.json
new file mode 100644
index 0000000000000000000000000000000000000000..7a88763ed8d2ac31dd30211b9574f47273e84549
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/Test.json
@@ -0,0 +1,3 @@
+{
+ "description": "Configuration for hjunit demo Tests",
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/signature/openharmony_sx.p7b
new file mode 100755
index 0000000000000000000000000000000000000000..f06e218defa7f707e22a3890903c574e1c498217
Binary files /dev/null and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..860bb5ba98d2aff0837600df368d4a564d2656d3
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/config.json
@@ -0,0 +1,240 @@
+{
+ "app": {
+ "bundleName": "com.example.third6",
+ "vendor": "example",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.third6",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "dataTransfer"
+ ],
+ "name": ".MainAbility",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "audioPlayback"
+ ],
+ "name": ".MainAbilityA",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "audioRecording"
+ ],
+ "name": ".MainAbilityB",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "location"
+ ],
+ "name": ".MainAbilityC",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "bluetoothInteraction"
+ ],
+ "name": ".MainAbilityD",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "multiDeviceConnection"
+ ],
+ "name": ".MainAbilityE",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "wifiInteraction"
+ ],
+ "name": ".MainAbilityF",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "voip"
+ ],
+ "name": ".MainAbilityG",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ },
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "backgroundModes": [
+ "taskKeeping"
+ ],
+ "name": ".MainAbilityH",
+ "visible": true,
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ],
+ "js": [
+ {
+ "pages": [
+ "pages/index/index"
+ ],
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": false
+ }
+ }
+ ]
+ }
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/app.js b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/app.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a68c1992145a976957d7dcdd69a7e9c2e8e9877
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/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/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/i18n/en-US.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/i18n/en-US.json
new file mode 100644
index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/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/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/i18n/zh-CN.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/i18n/zh-CN.json
new file mode 100644
index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/i18n/zh-CN.json
@@ -0,0 +1,6 @@
+{
+ "strings": {
+ "hello": "您好",
+ "world": "世界"
+ }
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/pages/index/index.css b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/pages/index/index.css
new file mode 100644
index 0000000000000000000000000000000000000000..6fda792753f2e15f22b529c7b90a82185b2770bf
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/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/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/pages/index/index.hml b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/pages/index/index.hml
new file mode 100644
index 0000000000000000000000000000000000000000..f64b040a5ae394dbaa5e185e1ecd4f4556b92184
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/pages/index/index.hml
@@ -0,0 +1,5 @@
+
+
+ {{ $t('strings.hello') }} {{ title }}
+
+
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/pages/index/index.js b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/pages/index/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..2aa8aec01d328175ca14e2f3ec9d14ed02e7a1d2
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/default/pages/index/index.js
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+const injectRef = Object.getPrototypeOf(global) || global
+injectRef.regeneratorRuntime = require('@babel/runtime/regenerator')
+
+export default {
+ data: {
+ title: ""
+ },
+ onInit() {
+ this.title = this.$t('strings.world');
+ },
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/resources/base/element/string.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/resources/base/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..233be4f5101a2dde03d3600218b18a8a19b4930c
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/resources/base/element/string.json
@@ -0,0 +1,12 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "third6"
+ },
+ {
+ "name": "mainability_description",
+ "value": "JS_Phone_Empty Feature Ability"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/resources/base/media/icon.png b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/resources/base/media/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfossixthscene/src/main/js/resources/base/media/icon.png differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosthirdscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosthirdscene/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosthirdscene/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosthirdscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosthirdscene/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosthirdscene/src/main/config.json
index 60b95c5cc2fd09bf509b6931b2bed9a6333f1537..8c05e0f848c0808d977c3f0002214f592dad6a45 100644
--- a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosthirdscene/src/main/config.json
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsgetinfosthirdscene/src/main/config.json
@@ -2,6 +2,7 @@
"app": {
"bundleName": "com.example.third1",
"vendor": "example",
+ "singleUser":true,
"version": {
"code": 1,
"name": "1.0"
@@ -12,7 +13,11 @@
"releaseType": "Beta1"
}
},
- "deviceConfig": {},
+ "deviceConfig": {
+ "default":{
+ "keepAlive":true
+ }
+ },
"module": {
"package": "com.example.third3",
"name": ".BmsThirdBundle3",
@@ -36,6 +41,17 @@
]
}
],
+ "backgroundModes": [
+ "dataTransfer",
+ "audioPlayback",
+ "audioRecording",
+ "location",
+ "bluetoothInteraction",
+ "multiDeviceConnection",
+ "wifiInteraction",
+ "voip",
+ "taskKeeping"
+ ],
"name": "com.example.third3.MainAbility",
"icon": "$media:icon",
"description": "$string:mainability_description",
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsmainabilityfirstscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsmainabilityfirstscene/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsmainabilityfirstscene/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsmainabilityfirstscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsmainabilitysecondscene/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsmainabilitysecondscene/signature/openharmony_sx.p7b
index 9be1e98fa4c0c28ca997ed660112fa16b194f0f5..f06e218defa7f707e22a3890903c574e1c498217 100755
Binary files a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsmainabilitysecondscene/signature/openharmony_sx.p7b and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmsmainabilitysecondscene/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/BUILD.gn b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..d78d0fc777d20579b89d0f41c3e7b3f1d82ed919
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/BUILD.gn
@@ -0,0 +1,34 @@
+# 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("SecondRequestPermissions") {
+ hap_profile = "./src/main/config.json"
+ hap_name = "SecondRequestPermissions"
+ 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_resources",
+ ]
+ certificate_profile = "./signature/openharmony_sx.p7b"
+}
+ohos_js_assets("hjs_demo_js_assets") {
+ source_dir = "./src/main/js/default"
+}
+ohos_resources("hjs_demo_resources") {
+ sources = [ "./src/main/js/resources" ]
+ hap_profile = "./src/main/config.json"
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/Test.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/Test.json
new file mode 100644
index 0000000000000000000000000000000000000000..7a88763ed8d2ac31dd30211b9574f47273e84549
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/Test.json
@@ -0,0 +1,3 @@
+{
+ "description": "Configuration for hjunit demo Tests",
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/signature/openharmony_sx.p7b b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/signature/openharmony_sx.p7b
new file mode 100644
index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5
Binary files /dev/null and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/signature/openharmony_sx.p7b differ
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/config.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..38f80ae1a5d23e9868ecc08b2f9bb68429023017
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/config.json
@@ -0,0 +1,73 @@
+{
+ "app": {
+ "bundleName": "com.example.secondrequestpermissions",
+ "vendor": "example",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 4,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.example.secondrequestpermissions",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "visible": true,
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "name": "com.example.secondrequestpermissions.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ],
+ "js": [
+ {
+ "pages": [
+ "pages/index/index"
+ ],
+ "name": "default",
+ "window": {
+ "designWidth": 720,
+ "autoDesignWidth": false
+ }
+ }
+ ],
+ "reqPermissions": [
+ {
+ "name": "com.permission.BMS_PERMISSIONCHANGE_W",
+ "reason": "Need PERMISSIONCHANGE W",
+ "usedScene": {
+ "ability": [
+ "com.example.secondrequestpermissions.MainAbility"
+ ],
+ "when": "always"
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/app.js b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/app.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a68c1992145a976957d7dcdd69a7e9c2e8e9877
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/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/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/i18n/en-US.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/i18n/en-US.json
new file mode 100644
index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/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/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/i18n/zh-CN.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/i18n/zh-CN.json
new file mode 100644
index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/i18n/zh-CN.json
@@ -0,0 +1,6 @@
+{
+ "strings": {
+ "hello": "您好",
+ "world": "世界"
+ }
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.css b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.css
new file mode 100644
index 0000000000000000000000000000000000000000..d50fe39e7f44e6a5ff1233281832fa1526c92940
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.css
@@ -0,0 +1,16 @@
+.container {
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.title {
+ font-size: 100px;
+}
+
+.button {
+ margin-top: 15px;
+ font-size:35px;
+ background-color: aqua;
+ text-color: black;
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.hml b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.hml
new file mode 100644
index 0000000000000000000000000000000000000000..129155d718c8bf12cb2a1f142630d385023afbd5
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.hml
@@ -0,0 +1,6 @@
+
+
+ {{ title }}
+
+
+
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.js b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..be70e7571888d2a8709f565b2c83d009180249e7
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/default/pages/index/index.js
@@ -0,0 +1,42 @@
+/*
+ * 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 featureAbility from '@ohos.ability.featureAbility'
+
+const injectRef = Object.getPrototypeOf(global) || global
+injectRef.regeneratorRuntime = require('@babel/runtime/regenerator')
+export default {
+ data: {
+ title: ""
+ },
+ onInit() {
+ this.title = "Start Second";
+ },
+ onShow() {},
+ async reqPermission()
+ {
+ var context = await featureAbility.getContext();
+ context.requestPermissionsFromUser(["com.permission.BMS_PERMISSIONCHANGE_W"], 1,
+ (err, data)=>{
+ console.log("RequestPermissionForUser:requestCode=" + data.requestCode);
+ for(var j = 0; j < data.permissions.length; j++) {
+ console.log("RequestPermissionForUser permissions : " + data.permissions[j]);
+ }
+
+ for(var j = 0; j < data.grantResults.length; j++) {
+ console.log("RequestPermissionForUser grantResults : " + data.grantResults[j]);
+ }
+ });
+ }
+}
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/resources/base/element/string.json b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/resources/base/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..40a792e03f62e897befad23d80e6a9e7a29cfa5c
--- /dev/null
+++ b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/resources/base/element/string.json
@@ -0,0 +1,12 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "secondrequestpermission"
+ },
+ {
+ "name": "mainability_description",
+ "value": "JS_Phone_Empty Feature Ability"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/resources/base/media/icon.png b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/resources/base/media/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and b/appexecfwk/bundle_standard/bundlemanager/sceneProject/bmssecondrequestpermissions/src/main/js/resources/base/media/icon.png differ