diff --git a/compileruntime/BUILD.gn b/compileruntime/BUILD.gn index 94653556ea71a6edac4540dc01a03006f69f3900..f6c056aa6239fd3ae053880e41765e77baad69bf 100644 --- a/compileruntime/BUILD.gn +++ b/compileruntime/BUILD.gn @@ -16,6 +16,7 @@ group("compileruntime") { testonly = true if (is_standard_system) { deps = [ + "atomics_lib_standard:atomics_js_hap", "containerLine_lib_standard:containerLine_js_test", "containerRelation_lib_standard:containerRelation_js_test", "convertxml_lib_standard:convertxml_js_test", diff --git a/compileruntime/atomics_lib_standard/BUILD.gn b/compileruntime/atomics_lib_standard/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..f4e9ce4501320b4598df638f932e80906a85af7f --- /dev/null +++ b/compileruntime/atomics_lib_standard/BUILD.gn @@ -0,0 +1,31 @@ +# Copyright (C) 2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//test/xts/tools/build/suite.gni") + +ohos_js_hap_suite("atomics_js_hap") { + hap_profile = "./src/main/config.json" + deps = [ + ":atomics_js_assets", + ":atomics_resources", + ] + certificate_profile = "./signature/openharmony_sx.p7b" + hap_name = "ActsAtomicsJSTest" +} +ohos_js_assets("atomics_js_assets") { + source_dir = "./src/main/js/default" +} +ohos_resources("atomics_resources") { + sources = [ "./src/main/resources" ] + hap_profile = "./src/main/config.json" +} diff --git a/compileruntime/atomics_lib_standard/Test.json b/compileruntime/atomics_lib_standard/Test.json new file mode 100644 index 0000000000000000000000000000000000000000..6b0efdbd16e18d0a65119fcd9b99f3c8414f3355 --- /dev/null +++ b/compileruntime/atomics_lib_standard/Test.json @@ -0,0 +1,18 @@ +{ + "description": "Configuration for startup atomics js api Tests", + "driver": { + "type": "JSUnitTest", + "test-timeout": "800000", + "package": "com.example.atomicsxts", + "shell-timeout": "90000" + }, + "kits": [ + { + "test-file-name": [ + "ActsAtomicsJSTest.hap" + ], + "type": "AppInstallKit", + "cleanup-apps": true + } + ] +} \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/signature/openharmony_sx.p7b b/compileruntime/atomics_lib_standard/signature/openharmony_sx.p7b new file mode 100644 index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5 Binary files /dev/null and b/compileruntime/atomics_lib_standard/signature/openharmony_sx.p7b differ diff --git a/compileruntime/atomics_lib_standard/src/main/config.json b/compileruntime/atomics_lib_standard/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..c56190b1c59e965f1a478bad82b88a3eca83b8b9 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/config.json @@ -0,0 +1,65 @@ +{ + "app": { + "bundleName": "com.example.atomicsxts", + "vendor": "example", + "version": { + "code": 1000000, + "name": "1.0.0" + }, + "apiVersion": { + "compatible": 4, + "target": 5 + } + }, + "deviceConfig": {}, + "module": { + "package": "com.example.atomicsxts", + "name": ".MyApplication", + "mainAbility": "com.example.atomicsxts.MainAbility", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry", + "installationFree": false + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "visible": true, + "orientation": "unspecified", + "name": "com.example.atomicsxts.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "formsEnabled": false, + "label": "$string:entry_MainAbility", + "type": "page", + "launchType": "standard" + } + ], + "js": [ + { + "pages": [ + "pages/index/index", + "pages/second/second" + ], + "name": "default", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } +} \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/app.js b/compileruntime/atomics_lib_standard/src/main/js/default/app.js new file mode 100644 index 0000000000000000000000000000000000000000..5cdca0218254017a127aa38111a179debf319fb1 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/app.js @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default { + onCreate() { + console.info("Application onCreate"); + }, + onDestroy() { + console.info("Application onDestroy"); + } +}; diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/i18n/en-US.json b/compileruntime/atomics_lib_standard/src/main/js/default/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..08e34eac912bf2651eefc20e26aa479b5e4e7ec2 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/i18n/en-US.json @@ -0,0 +1,11 @@ +{ + "strings": { + "hello": "Hello", + "world": "World", + "page": "Second Page", + "next": "Next Page", + "back": "Back" + }, + "Files": { + } +} \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/i18n/zh-CN.json b/compileruntime/atomics_lib_standard/src/main/js/default/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..3dd53b3a8b808aec9396fa663cb00ef22ba61e0a --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/i18n/zh-CN.json @@ -0,0 +1,11 @@ +{ + "strings": { + "hello": "您好", + "world": "世界", + "page": "第二页", + "next": "下一页", + "back": "返回" + }, + "Files": { + } +} \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.css b/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..db2b048d654812f46761f4af2caad2818e70d505 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.css @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the 'License'); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + left: 0px; + top: 0px; + width: 100%; + height: 100%; +} + +.title { + font-size: 60px; + text-align: center; + width: 100%; + height: 40%; + margin: 10px; +} + +.btn { + width: 50%; + height: 100px; + font-size: 40px; +} diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.hml b/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..8590b3287297d0dd5968fd47d2324c3e4151c498 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.hml @@ -0,0 +1,21 @@ + + +
+ + {{ $t('strings.hello') }} {{ title }} + + +
diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.js b/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.js new file mode 100644 index 0000000000000000000000000000000000000000..0f185cf96ace03efce6fc6d0687fef58b0deff7e --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/pages/index/index.js @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import app from '@system.app' +import device from '@system.device' +import router from '@system.router' +import {Core, Constant, ExpectExtend, ReportExtend, InstrumentLog} from 'deccjsunit/index' + + +export default { + data: { + title: '' + }, + onInit() { + this.title = this.$t('strings.world'); + }, + onShow() { + console.info('onShow finish') + const core = Core.getInstance() + core.init() + require('../../../test/List.test') + core.execute() + }, + touchMove(e) { + if (e.direction === 'right') { + this.appExit(); + } + }, + appExit() { + app.terminate() + } +} + + diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker010.js b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker010.js new file mode 100644 index 0000000000000000000000000000000000000000..a2581590aa48d5cdb372c60a27e4bfc683a183ed --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker010.js @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the 'License') + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import worker from '@ohos.worker'; +const parentPort = worker.parentPort; + +parentPort.onmessage = function(e) { + var int32 = e.data + parentPort.postMessage("success") + console.info("wait expect 'ok': " + Atomics.wait(int32, 0, 0)); + parentPort.postMessage("end") +} diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker011.js b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker011.js new file mode 100644 index 0000000000000000000000000000000000000000..1e2b73b1bb17b4e2e6be80b4f79812e8a61af575 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker011.js @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the 'License') + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import worker from '@ohos.worker'; +const parentPort = worker.parentPort; + +parentPort.onmessage = function(e) { + let begTime = new Date().getTime(); + var int32 = e.data + parentPort.postMessage("success") + console.info("wait expect 'timed-out' : " + Atomics.wait(int32, 1, 0, 3000)); + let endTime = new Date().getTime(); + if(endTime - begTime < 3000) { + parentPort.postMessage("end1") + } else { + parentPort.postMessage("end2") + } +} diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker012.js b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker012.js new file mode 100644 index 0000000000000000000000000000000000000000..ccc00ed30ad73a78e32baa72c7b422a44d6c4a8c --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker012.js @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the 'License') + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import worker from '@ohos.worker'; +const parentPort = worker.parentPort; + +parentPort.onmessage = function(e) { + var int32 = e.data + parentPort.postMessage("success") + console.info("wait expect 'not-equal': " + Atomics.wait(int32, 2, 2)); + parentPort.postMessage("end") +} \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker020.js b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker020.js new file mode 100644 index 0000000000000000000000000000000000000000..d87c7e74cd8fc5534317e2f6ae41c94fe361001c --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker020.js @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the 'License') + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import worker from '@ohos.worker'; +const parentPort = worker.parentPort; + +parentPort.onmessage = function(e) { + var int32 = e.data + parentPort.postMessage("wait") + Atomics.wait(int32, 0, 0); + Atomics.add(int32, 0 ,1); + Atomics.load(int32, 0); + parentPort.postMessage(int32[0]) +} \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker030.js b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker030.js new file mode 100644 index 0000000000000000000000000000000000000000..8561ad8f860e654995277972bf32eed61acd453c --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker030.js @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the 'License') + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import worker from '@ohos.worker'; +const parentPort = worker.parentPort; + +parentPort.onmessage = function(e) { + const int32 = new Uint32Array(e.data); + for (let i = 0; i < 10; ++i) { + Atomics.add(int32, 0, 1); + } + parentPort.postMessage("03") +} diff --git a/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker031.js b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker031.js new file mode 100644 index 0000000000000000000000000000000000000000..73285c42ac88baf7d5ac107a59965fb3da3521a5 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/default/workers/worker031.js @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the 'License') + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import worker from '@ohos.worker'; +const parentPort = worker.parentPort; + +parentPort.onmessage = function(e) { + const int32 = new Uint32Array(e.data); + for (let i = 0; i < 10; ++i) { + Atomics.add(int32, 0, 1); + } + parentPort.postMessage("031") +} diff --git a/compileruntime/atomics_lib_standard/src/main/js/test/Atomics.test.js b/compileruntime/atomics_lib_standard/src/main/js/test/Atomics.test.js new file mode 100644 index 0000000000000000000000000000000000000000..60792e18f459d97672e9d5660a101ced5adb95ad --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/test/Atomics.test.js @@ -0,0 +1,205 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the 'License') + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// @ts-nocheck +import app from '@system.app' +import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' +import worker from "@ohos.worker" + +describe('workerTest', function () { + + afterAll(function () { + console.info('total case over') + }) + + function promiseCase() { + let p = new Promise(function (resolve, reject) { + setTimeout(function () { + resolve() + }, 50) + }).then(undefined, (error) => { + }) + return p + } + + it('testNotify001', 0, async function (done) { + var sab = new SharedArrayBuffer(20); + var int32 = new Int32Array(sab); + var flag = false + var res = 0; + var res1 = 0; + let ss = new worker.Worker("workers/worker010.js") + let tt = new worker.Worker("workers/worker011.js") + let uu = new worker.Worker("workers/worker012.js") + + ss.onmessage = function (e) { + if(e.data == "end") { + res++ + } + flag = true + } + tt.onmessage = function (e) { + if(e.data == "end1") { + res1++ + } + if(e.data == "end2") + { + res1 += 5; + } + flag = true + } + uu.onmessage = function (e) { + if(e.data == end) { + flag = true + } + } + + ss.onexit = function() { + flag = true + } + tt.onexit = function() { + flag = true + } + uu.onexit = function() { + flag = true + } + + ss.postMessage(int32); + while(!flag) { + await promiseCase() + } + flag = false + tt.postMessage(int32); + while(!flag) { + await promiseCase() + } + flag = false + uu.postMessage(int32); + while(!flag) { + await promiseCase() + } + + Atomics.notify(int32, 0, 1) + Atomics.notify(int32, 2, 1) + while(res == 0 || res1 == 0){ + await promiseCase(); + } + + flag = false + ss.terminate() + while(!flag){ + await promiseCase(); + } + flag = false + tt.terminate() + while(!flag){ + await promiseCase(); + } + flag = false + uu.terminate() + while(!flag){ + await promiseCase(); + } + + expect(res).assertEqual(1) + expect(res1).assertEqual(5) + done() + }) + + it('testWait001', 0, async function (done) { + var sab = new SharedArrayBuffer(20); + var flag = false; + var int32 = new Int32Array(sab); + var res = 0; + const ss = new worker.Worker("workers/worker020.js") + + ss.onmessage = function(e){ + if (e.data != 'wait'){ + res = e.data + } + flag = true + } + + ss.onexit = function() { + flag = true + } + + ss.postMessage(int32); + while(!flag){ + await promiseCase(); + } + + flag = false + Atomics.store(int32, 0, 2); + Atomics.load(int32, 0); + Atomics.notify(int32, 0, 1) + while(!flag){ + await promiseCase(); + } + + flag = false + ss.terminate() + while(!flag){ + await promiseCase(); + } + + expect(res).assertEqual(3) + done() + }) + + it('testAdd001', 0, async function (done) { + var sab = new SharedArrayBuffer(20); + var int32 = new Uint32Array(sab); + int32[0] = 1 + var flag = false + var count = 0 + let ss = new worker.Worker("workers/worker030.js") + let tt = new worker.Worker("workers/worker031.js") + + ss.onmessage = function() { + count += 1 + } + tt.onmessage = function() { + count += 1 + } + + ss.onexit = function() { + flag = true + } + tt.onexit = function() { + flag = true + } + + ss.postMessage(sab); + tt.postMessage(sab); + while(count != 2) { + await promiseCase(); + } + + flag = false + ss.terminate() + while(!flag){ + await promiseCase(); + } + flag = false + tt.terminate() + while(!flag){ + await promiseCase(); + } + + expect(int32[0]).assertEqual(21) + done() + }) +}) \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/src/main/js/test/List.test.js b/compileruntime/atomics_lib_standard/src/main/js/test/List.test.js new file mode 100644 index 0000000000000000000000000000000000000000..f1c60aad40d2b3f610caec2e078b43738c67a7f9 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/js/test/List.test.js @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +require('./Atomics.test.js') \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/src/main/resources/base/element/string.json b/compileruntime/atomics_lib_standard/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..0bae6bd40f7360d5d818998221b199d3ec0f69c0 --- /dev/null +++ b/compileruntime/atomics_lib_standard/src/main/resources/base/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "entry_MainAbility" + }, + { + "name": "mainability_description", + "value": "JS_Empty Ability" + } + ] +} \ No newline at end of file diff --git a/compileruntime/atomics_lib_standard/src/main/resources/base/media/icon.png b/compileruntime/atomics_lib_standard/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/compileruntime/atomics_lib_standard/src/main/resources/base/media/icon.png differ