From 7ada31fb834750b5ef93cec6dab33ee60757e892 Mon Sep 17 00:00:00 2001 From: zhangziye Date: Tue, 13 May 2025 15:49:05 +0800 Subject: [PATCH 01/33] =?UTF-8?q?[=E6=96=B0=E9=9C=80=E6=B1=82]:=20Cherry-p?= =?UTF-8?q?ick=20sdk=20to=200702?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: https://gitee.com/openharmony/commonlibrary_ets_utils/issues/ICJXRY Signed-off-by: zhangziye --- base_sdk/BUILD.gn | 20 +++++ base_sdk/transfer/@ohos.transfer.ets | 88 +++++++++++++++++++ base_sdk/transfer/kitRegister/arkts.ets | 20 +++++ .../transfer/kitRegister/registerMain.ets | 19 ++++ base_sdk/transfer/register.ets | 71 +++++++++++++++ bundle.json | 1 + 6 files changed, 219 insertions(+) create mode 100644 base_sdk/transfer/@ohos.transfer.ets create mode 100644 base_sdk/transfer/kitRegister/arkts.ets create mode 100644 base_sdk/transfer/kitRegister/registerMain.ets create mode 100644 base_sdk/transfer/register.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index df8ace62..b560b4d8 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -30,3 +30,23 @@ ohos_prebuilt_etc("base_sdk_ets") { subsystem_name = "commonlibrary" part_name = "ets_utils" } + +generate_static_abc("base_transfer") { + base_url = "./transfer" + files = [ + "./transfer/@ohos.transfer.ets", + "./transfer/register.ets", + "./transfer/kitRegister/arkts.ets", + "./transfer/kitRegister/registerMain.ets", + ] + is_boot_abc = "True" + device_dst_file = "/system/framework/base_transfer.abc" +} + +ohos_prebuilt_etc("base_transfer_ets") { + source = "$target_out_dir/base_transfer.abc" + module_install_dir = "framework" + subsystem_name = "commonlibrary" + part_name = "ets_utils" + deps = [ ":base_transfer" ] +} diff --git a/base_sdk/transfer/@ohos.transfer.ets b/base_sdk/transfer/@ohos.transfer.ets new file mode 100644 index 00000000..90c119a0 --- /dev/null +++ b/base_sdk/transfer/@ohos.transfer.ets @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2025 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 { staticRegisterMap, dynamicRegisterMap, CallbackUrl } from './register.ets'; +import { BusinessError } from '@ohos.base'; +import { registerMain } from './kitRegister/registerMain.ets'; + +registerMain(); + +type Any = Object | undefined | null; +const transferErrorCodeId = 10200067; + +const staticCBCache = new Map(); +const dynamicCBCache = new Map(); +const staticRegisterMapRef = staticRegisterMap; +const dynamicRegisterMapRef = dynamicRegisterMap; + +export namespace transfer { + + export function transferStatic(input: Any, inputName: string): Object { + + if (!staticRegisterMapRef.has(inputName)) { + throw new BusinessError(transferErrorCodeId, + new Error(`Transfer Error. The input name is not supported!`)); + } + let cb: CallbackUrl = staticRegisterMapRef.get(inputName)!; + if (cb.filePath === '') { + return cb.staticMethod!(input); + } + + let method: Method | undefined; + if (staticCBCache.has(inputName)) { + method = staticCBCache.get(inputName); + } else { + method = getMethod(cb.filePath, cb.className, cb.methodName); + staticCBCache.set(inputName, method); + } + return method!.invoke(null, [input]) as Object; + } + + export function transferDynamic(input: Object, inputName: string): Any { + if (!dynamicRegisterMapRef.has(inputName)) { + throw new BusinessError(transferErrorCodeId, + new Error(`Transfer Error. The input name is not supported!`)); + } + let cb: CallbackUrl = dynamicRegisterMapRef.get(inputName)!; + if (cb.filePath === '') { + return cb.dynamicMethod!(input) ; + } + + let method: Method | undefined; + if (dynamicCBCache.has(inputName)) { + method = dynamicCBCache.get(inputName); + } else { + method = getMethod(cb.filePath, cb.className, cb.methodName); + dynamicCBCache.set(inputName, method); + } + return method!.invoke(null, [input]) as Any; + } + + function getMethod(filePath: string, className: string, methodName: string): Method { + className = filePath + '.' + className; + let linker = Class.ofCaller().getLinker(); + let classType: ClassType | undefined = linker.getType(className) as ClassType; + if (!classType) { + throw new BusinessError(transferErrorCodeId, + new Error(`Transfer Error. The class ${className} is not found!`)); + } + for (let i = 0; i < classType!.getMethodsNum(); i++) { + if (methodName === classType!.getMethod(i).getName()) { + return classType!.getMethod(i); + } + } + throw new BusinessError(transferErrorCodeId, + new Error(`Transfer Error. The method ${methodName} is not found!`)); + } +} diff --git a/base_sdk/transfer/kitRegister/arkts.ets b/base_sdk/transfer/kitRegister/arkts.ets new file mode 100644 index 00000000..9e492bf6 --- /dev/null +++ b/base_sdk/transfer/kitRegister/arkts.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerArkTS() { + registerStaticCB('InteropTransferHelper', InteropTransferHelper.transferArrayBufferToStatic); + registerDynamicCB('InteropTransferHelper', InteropTransferHelper.transferArrayBufferToDynamic); +} diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets new file mode 100644 index 00000000..ce29fcb3 --- /dev/null +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2025 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 { registerArkTS } from './arkts.ets'; + +export function registerMain(){ + registerArkTS(); +} \ No newline at end of file diff --git a/base_sdk/transfer/register.ets b/base_sdk/transfer/register.ets new file mode 100644 index 00000000..45e90e9e --- /dev/null +++ b/base_sdk/transfer/register.ets @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2025 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. + */ +type Any = Object | undefined | null; + +export interface CallbackUrl { + key: string; + filePath: string; + className: string; + methodName: string; + staticMethod?: (input: Any) => Object; + dynamicMethod?: (input: Object) => Any; +} + +export const staticRegisterMap = new Map(); +export const dynamicRegisterMap = new Map(); + +export function registerStaticCB(key: string, filePath: string, className: string, methodName: string) { + let callbackUrl: CallbackUrl = { + key: key, + filePath: filePath, + className: className, + methodName: methodName + }; + staticRegisterMap.set(key, callbackUrl); +} + +export function registerDynamicCB(key: string, filePath: string, className: string, methodName: string) { + let callbackUrl: CallbackUrl = { + key: key, + filePath: filePath, + className: className, + methodName: methodName + }; + dynamicRegisterMap.set(key, callbackUrl); +} + +export function registerStaticCB(key: string, staticMethod: (input: Any) => Object) { + let callbackUrl: CallbackUrl = { + key: key, + filePath: '', + className: '', + methodName: '', + staticMethod: staticMethod + }; + staticRegisterMap.set(key, callbackUrl); +} + +export function registerDynamicCB(key: string, dynamicMethod: (input: Object) => Any) { + let callbackUrl: CallbackUrl = { + key: key, + filePath: '', + className: '', + methodName: '', + dynamicMethod: dynamicMethod + }; + dynamicRegisterMap.set(key, callbackUrl); +} + + diff --git a/bundle.json b/bundle.json index 77f5f349..a113f587 100644 --- a/bundle.json +++ b/bundle.json @@ -73,6 +73,7 @@ "build": { "sub_component": [ "//commonlibrary/ets_utils/base_sdk:base_sdk_ets", + "//commonlibrary/ets_utils/base_sdk:base_transfer_ets", "//commonlibrary/ets_utils/js_api_module/uri:uri_packages", "//commonlibrary/ets_utils/js_api_module/url:url_packages", "//commonlibrary/ets_utils/js_api_module/convertxml:convertxml_packages", -- Gitee From 67448b3eb1171a288b0ff59da75a3abaf314c804 Mon Sep 17 00:00:00 2001 From: Robert Sipka Date: Tue, 17 Jun 2025 15:16:42 +0200 Subject: [PATCH 02/33] 'Any' keyword should not be used as identifier Issue: #ICFSPK Internal issue: 26477 Change-Id: If7e506077556d0d7943d6937fdceebd12abe85b7 Signed-off-by: Robert Sipka --- base_sdk/transfer/@ohos.transfer.ets | 1 - base_sdk/transfer/register.ets | 1 - 2 files changed, 2 deletions(-) diff --git a/base_sdk/transfer/@ohos.transfer.ets b/base_sdk/transfer/@ohos.transfer.ets index 90c119a0..6f7937c6 100644 --- a/base_sdk/transfer/@ohos.transfer.ets +++ b/base_sdk/transfer/@ohos.transfer.ets @@ -18,7 +18,6 @@ import { registerMain } from './kitRegister/registerMain.ets'; registerMain(); -type Any = Object | undefined | null; const transferErrorCodeId = 10200067; const staticCBCache = new Map(); diff --git a/base_sdk/transfer/register.ets b/base_sdk/transfer/register.ets index 45e90e9e..09ba267b 100644 --- a/base_sdk/transfer/register.ets +++ b/base_sdk/transfer/register.ets @@ -12,7 +12,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -type Any = Object | undefined | null; export interface CallbackUrl { key: string; -- Gitee From 1fd7c2d929acd4b9d0e2724eda6cf0b79e7b3c12 Mon Sep 17 00:00:00 2001 From: Denis Slynko Date: Thu, 29 May 2025 12:00:14 +0300 Subject: [PATCH 03/33] [ArkTS] Fix Class.ofCaller signature Issue: #ICAJX5 Signed-off-by: Denis Slynko --- base_sdk/transfer/@ohos.transfer.ets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_sdk/transfer/@ohos.transfer.ets b/base_sdk/transfer/@ohos.transfer.ets index 6f7937c6..2bd36cfb 100644 --- a/base_sdk/transfer/@ohos.transfer.ets +++ b/base_sdk/transfer/@ohos.transfer.ets @@ -70,7 +70,7 @@ export namespace transfer { function getMethod(filePath: string, className: string, methodName: string): Method { className = filePath + '.' + className; - let linker = Class.ofCaller().getLinker(); + let linker = Class.ofCaller()!.getLinker(); let classType: ClassType | undefined = linker.getType(className) as ClassType; if (!classType) { throw new BusinessError(transferErrorCodeId, -- Gitee From d275fa0ad337b10040a9da27d3831b3ef703e8eb Mon Sep 17 00:00:00 2001 From: cheerful_ricky Date: Sun, 29 Jun 2025 17:01:24 +0800 Subject: [PATCH 04/33] register transfer callback Signed-off-by: cheerful_ricky --- base_sdk/BUILD.gn | 1 + .../transfer/kitRegister/basicServicesKit.ets | 23 +++++++++++++++++++ .../transfer/kitRegister/registerMain.ets | 2 ++ 3 files changed, 26 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/basicServicesKit.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index b560b4d8..06c8bac6 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -38,6 +38,7 @@ generate_static_abc("base_transfer") { "./transfer/register.ets", "./transfer/kitRegister/arkts.ets", "./transfer/kitRegister/registerMain.ets", + "./transfer/kitRegister/basicServicesKit.ets", ] is_boot_abc = "True" device_dst_file = "/system/framework/base_transfer.abc" diff --git a/base_sdk/transfer/kitRegister/basicServicesKit.ets b/base_sdk/transfer/kitRegister/basicServicesKit.ets new file mode 100644 index 00000000..d589f846 --- /dev/null +++ b/base_sdk/transfer/kitRegister/basicServicesKit.ets @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerCommonEventManager() { + registerStaticCB('CommonEventManager.CommonEventSubscriber', 'commonEvent/commonEventSubscriber', 'CommonEventSubscriberInner', 'transferStatic'); + registerDynamicCB('CommonEventManager.CommonEventSubscriber', 'commonEvent/commonEventSubscriber', 'CommonEventSubscriberInner', 'transferDynamic'); + + registerStaticCB('StaticSubscriberExtensionContext', '@ohos.application.StaticSubscriberExtensionContext', 'StaticSubscriberExtensionContext', 'transferStatic'); + registerDynamicCB('StaticSubscriberExtensionContext', '@ohos.application.StaticSubscriberExtensionContext', 'StaticSubscriberExtensionContext', 'transferDynamic'); +} diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index ce29fcb3..99e5ad50 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -13,7 +13,9 @@ * limitations under the License. */ import { registerArkTS } from './arkts.ets'; +import { registerCommonEventManager } from './basicServicesKit.ets' export function registerMain(){ registerArkTS(); + registerCommonEventManager(); } \ No newline at end of file -- Gitee From fef87f9121d7da1c6562f591524d9591cd43b655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=81=A5?= Date: Mon, 14 Jul 2025 14:35:11 +0800 Subject: [PATCH 05/33] =?UTF-8?q?transfer=E5=8A=A8=E9=9D=99=E6=80=81?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=20Signed-off-by:=20=E5=AD=99=E5=81=A5=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base_sdk/BUILD.gn | 1 + .../transfer/kitRegister/registerMain.ets | 2 ++ .../transfer/kitRegister/resourceManager.ets | 20 +++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/resourceManager.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index b560b4d8..77308056 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -38,6 +38,7 @@ generate_static_abc("base_transfer") { "./transfer/register.ets", "./transfer/kitRegister/arkts.ets", "./transfer/kitRegister/registerMain.ets", + "./transfer/kitRegister/resourceManager.ets", ] is_boot_abc = "True" device_dst_file = "/system/framework/base_transfer.abc" diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index ce29fcb3..d6bd7b56 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -13,7 +13,9 @@ * limitations under the License. */ import { registerArkTS } from './arkts.ets'; +import { registerResourceManager } from './resourceManager.ets'; export function registerMain(){ registerArkTS(); + registerResourceManager(); } \ No newline at end of file diff --git a/base_sdk/transfer/kitRegister/resourceManager.ets b/base_sdk/transfer/kitRegister/resourceManager.ets new file mode 100644 index 00000000..5ceedec8 --- /dev/null +++ b/base_sdk/transfer/kitRegister/resourceManager.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerResourceManager() { + registerStaticCB('resourceManager.ResourceManager', "@ohos.resourceManager", "resourceManager.ResourceManager", "transferStatic"); + registerDynamicCB('resourceManager.ResourceManager', "@ohos.resourceManager", "resourceManager.ResourceManager", "transferDynamic"); +} -- Gitee From 18f2a0e741be667f83a6fe5ca20797f15a1012b4 Mon Sep 17 00:00:00 2001 From: wangzhiyusss Date: Mon, 14 Jul 2025 16:36:22 +0000 Subject: [PATCH 06/33] update base_sdk/ets/@ohos.base.ets. Signed-off-by: wangzhiyusss --- base_sdk/ets/@ohos.base.ets | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/base_sdk/ets/@ohos.base.ets b/base_sdk/ets/@ohos.base.ets index cd88297a..b2576542 100644 --- a/base_sdk/ets/@ohos.base.ets +++ b/base_sdk/ets/@ohos.base.ets @@ -14,7 +14,7 @@ */ export class BusinessError extends Error { - code: number; + code: int; data?: T; constructor() { @@ -22,12 +22,12 @@ export class BusinessError extends Error { this.code = 0; } - constructor(code: number, error: Error) { + constructor(code: int, error: Error) { super(error.name, error.message, new ErrorOptions(error.cause)); this.code = code; } - constructor(code: number, data: T, error: Error) { + constructor(code: int, data: T, error: Error) { super(error.name, error.message, new ErrorOptions(error.cause)); this.code = code; this.data = data; -- Gitee From 8c7a579ba8ed1cb5697cb5860e720139e9c3c86b Mon Sep 17 00:00:00 2001 From: xiongjun_gitee11 Date: Tue, 15 Jul 2025 11:11:31 +0800 Subject: [PATCH 07/33] add arkweb transfer register Signed-off-by: xiongjun_gitee11 --- base_sdk/BUILD.gn | 1 + base_sdk/transfer/kitRegister/arkweb.ets | 32 +++++++++++++++++++ .../transfer/kitRegister/registerMain.ets | 2 ++ 3 files changed, 35 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/arkweb.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index 06c8bac6..a127a1cd 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -37,6 +37,7 @@ generate_static_abc("base_transfer") { "./transfer/@ohos.transfer.ets", "./transfer/register.ets", "./transfer/kitRegister/arkts.ets", + "./transfer/kitRegister/arkweb.ets", "./transfer/kitRegister/registerMain.ets", "./transfer/kitRegister/basicServicesKit.ets", ] diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets new file mode 100644 index 00000000..a7912c47 --- /dev/null +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerArkWeb() { + registerStaticCB('ArkWeb.FileSelectorParam', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorParamStatic'); + registerDynamicCB('ArkWeb.FileSelectorParam', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorParamDynamic'); + + registerStaticCB('ArkWeb.JsResult', 'arkui.component.web', 'ArkWebTransfer', 'transferJsResultStatic'); + registerDynamicCB('ArkWeb.JsResult', 'arkui.component.web', 'ArkWebTransfer', 'transferJsResultDynamic'); + + registerStaticCB('ArkWeb.FileSelectorResult', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorResultStatic'); + registerDynamicCB('ArkWeb.FileSelectorResult', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorResultDynamic'); + + registerStaticCB('ArkWeb.WebContextMenuParam', 'arkui.component.web', 'ArkWebTransfer', 'transferWebContextMenuParamStatic'); + registerDynamicCB('ArkWeb.WebContextMenuParam', 'arkui.component.web', 'ArkWebTransfer', 'transferWebContextMenuParamDynamic'); + + registerStaticCB('ArkWeb.WebContextMenuResult', 'arkui.component.web', 'ArkWebTransfer', 'transferWebContextMenuResultStatic'); + registerDynamicCB('ArkWeb.WebContextMenuResult', 'arkui.component.web', 'ArkWebTransfer', 'transferWebContextMenuResultDynamic'); +} diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index 99e5ad50..7f588f63 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -13,9 +13,11 @@ * limitations under the License. */ import { registerArkTS } from './arkts.ets'; +import { registerArkWeb } from './arkweb.ets'; import { registerCommonEventManager } from './basicServicesKit.ets' export function registerMain(){ registerArkTS(); + registerArkWeb(); registerCommonEventManager(); } \ No newline at end of file -- Gitee From 39cbd5bedbe78f089cb3ae07c285d78035f4d76f Mon Sep 17 00:00:00 2001 From: oh_ci Date: Tue, 15 Jul 2025 12:28:27 +0000 Subject: [PATCH 08/33] update .gitee/PULL_REQUEST_TEMPLATE.zh-CN.md. Signed-off-by: oh_ci --- .gitee/PULL_REQUEST_TEMPLATE.zh-CN.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md b/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md index 4d478ebc..25dbe4da 100644 --- a/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md +++ b/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md @@ -60,7 +60,7 @@ - 是否同步合入interface仓的相关d.ts(需求合入用同一个issue) - [ ] 已同步 - [ ] 不涉及 -### L0新增用例自检结果 -- [ ] 是,有新增L0用例,且完成自检 -- [ ] 否 +### 是否已执行L0用例 +- [ ] 已验证 +- [ ] 不涉及。如不涉及,请写明理由 ## 六:将上述测试的截图贴到下面 -- Gitee From 95f47eb05df127c501254c9da8ef281bb329f86d Mon Sep 17 00:00:00 2001 From: chenguanhao Date: Wed, 16 Jul 2025 19:11:45 +0800 Subject: [PATCH 09/33] arkweb transfer Signed-off-by: chenguanhao --- base_sdk/transfer/kitRegister/arkweb.ets | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index a7912c47..b97ea7e9 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -29,4 +29,25 @@ export function registerArkWeb() { registerStaticCB('ArkWeb.WebContextMenuResult', 'arkui.component.web', 'ArkWebTransfer', 'transferWebContextMenuResultStatic'); registerDynamicCB('ArkWeb.WebContextMenuResult', 'arkui.component.web', 'ArkWebTransfer', 'transferWebContextMenuResultDynamic'); + + registerStaticCB('ArkWeb.HttpAuthHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferHttpAuthHandlerToStatic'); + registerDynamicCB('ArkWeb.HttpAuthHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferHttpAuthHandlerToDynamic'); + + registerStaticCB('ArkWeb.WebResourceResponse', 'arkui.component.web', 'ArkWebTransfer', 'transferWebResourceReponseToStatic'); + registerDynamicCB('ArkWeb.WebResourceResponse', 'arkui.component.web', 'ArkWebTransfer', 'transferWebResourceReponseToDynamic'); + + registerStaticCB('ArkWeb.WebResourceRequest', 'arkui.component.web', 'ArkWebTransfer', 'transferWebResourceRequestToStatic'); + registerDynamicCB('ArkWeb.WebResourceRequest', 'arkui.component.web', 'ArkWebTransfer', 'transferWebResourceRequestToDynamic'); + + registerStaticCB('ArkWeb.ConsoleMessage', 'arkui.component.web', 'ArkWebTransfer', 'transferConsoleMessageToStatic'); + registerDynamicCB('ArkWeb.ConsoleMessage', 'arkui.component.web', 'ArkWebTransfer', 'transferConsoleMessageToDynamic'); + + registerStaticCB('ArkWeb.DataResubmissionHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferDataResubmissionHandlerToStatic'); + registerDynamicCB('ArkWeb.DataResubmissionHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferDataResubmissionHandlerToDynamic'); + + registerStaticCB('ArkWeb.ClientAuthenticationHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferClientAuthenticationHandlerToStatic'); + registerDynamicCB('ArkWeb.ClientAuthenticationHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferClientAuthenticationHandlerToDynamic'); + + registerStaticCB('ArkWeb.SslErrorHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferSslErrorHandlerToStatic'); + registerDynamicCB('ArkWeb.SslErrorHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferSslErrorHandlerToDynamic'); } -- Gitee From 7e4c3138c4c7803cf13ba54d25a7a8dff10c7339 Mon Sep 17 00:00:00 2001 From: hxf233333 Date: Wed, 16 Jul 2025 19:46:15 +0800 Subject: [PATCH 10/33] feat: add transferJsGeolocation Signed-off-by: hxf233333 --- base_sdk/transfer/kitRegister/arkweb.ets | 3 +++ 1 file changed, 3 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index a7912c47..b34fc213 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -18,6 +18,9 @@ export function registerArkWeb() { registerStaticCB('ArkWeb.FileSelectorParam', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorParamStatic'); registerDynamicCB('ArkWeb.FileSelectorParam', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorParamDynamic'); + registerStaticCB('ArkWeb.JsGeolocation', 'arkui.component.web', 'ArkWebTransfer', 'transferJsGeolocationStatic'); + registerDynamicCB('ArkWeb.JsGeolocation', 'arkui.component.web', 'ArkWebTransfer', 'transferJsGeolocationDynamic'); + registerStaticCB('ArkWeb.JsResult', 'arkui.component.web', 'ArkWebTransfer', 'transferJsResultStatic'); registerDynamicCB('ArkWeb.JsResult', 'arkui.component.web', 'ArkWebTransfer', 'transferJsResultDynamic'); -- Gitee From 802bf4b15d13a21c8d9fbfe59b5882b9f2317168 Mon Sep 17 00:00:00 2001 From: zhaowenpu Date: Wed, 16 Jul 2025 11:57:22 +0000 Subject: [PATCH 11/33] 1 Signed-off-by: zhaowenpu --- base_sdk/transfer/kitRegister/arkweb.ets | 3 +++ 1 file changed, 3 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index a7912c47..83a42e50 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -15,6 +15,9 @@ import { registerStaticCB, registerDynamicCB } from '../register.ets'; export function registerArkWeb() { + registerStaticCB('ArkWeb.ScreenCaptureHandler', 'arkui.component.web', 'ScreenCaptureHandler', 'transferScreenCaptureHandlerStatic'); + registerDynamicCB('ArkWeb.ScreenCaptureHandler', 'arkui.component.web', 'ScreenCaptureHandler', 'transferScreenCaptureHandlerDynamic'); + registerStaticCB('ArkWeb.FileSelectorParam', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorParamStatic'); registerDynamicCB('ArkWeb.FileSelectorParam', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorParamDynamic'); -- Gitee From 4cb718a3ece93ad44b08256d0b972a59dc50d60b Mon Sep 17 00:00:00 2001 From: zhaowenpu Date: Wed, 16 Jul 2025 13:28:59 +0000 Subject: [PATCH 12/33] 2 Signed-off-by: zhaowenpu --- base_sdk/transfer/kitRegister/arkweb.ets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index 83a42e50..aefc36b3 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -15,8 +15,8 @@ import { registerStaticCB, registerDynamicCB } from '../register.ets'; export function registerArkWeb() { - registerStaticCB('ArkWeb.ScreenCaptureHandler', 'arkui.component.web', 'ScreenCaptureHandler', 'transferScreenCaptureHandlerStatic'); - registerDynamicCB('ArkWeb.ScreenCaptureHandler', 'arkui.component.web', 'ScreenCaptureHandler', 'transferScreenCaptureHandlerDynamic'); + registerStaticCB('ArkWeb.ScreenCaptureHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferScreenCaptureHandlerStatic'); + registerDynamicCB('ArkWeb.ScreenCaptureHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferScreenCaptureHandlerDynamic'); registerStaticCB('ArkWeb.FileSelectorParam', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorParamStatic'); registerDynamicCB('ArkWeb.FileSelectorParam', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorParamDynamic'); -- Gitee From 18feb4679da1101788494c554da6c36012b96430 Mon Sep 17 00:00:00 2001 From: liuxiao_310 Date: Thu, 17 Jul 2025 00:44:31 +0800 Subject: [PATCH 13/33] web transfer permission,controllerHandler,keyboardController add register Signed-off-by: liuxiao_310 --- base_sdk/transfer/kitRegister/arkweb.ets | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index ae833b11..b63baecd 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -53,4 +53,13 @@ export function registerArkWeb() { registerStaticCB('ArkWeb.SslErrorHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferSslErrorHandlerToStatic'); registerDynamicCB('ArkWeb.SslErrorHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferSslErrorHandlerToDynamic'); + + registerStaticCB('ArkWeb.PermissionRequest', 'arkui.component.web', 'ArkWebTransfer', 'transferPermissionRequestStatic'); + registerDynamicCB('ArkWeb.PermissionRequest', 'arkui.component.web', 'ArkWebTransfer', 'transferPermissionRequestDynamic'); + + registerStaticCB('ArkWeb.WebKeyboardController', 'arkui.component.web', 'ArkWebTransfer', 'transferWebKeyboardControllerStatic'); + registerDynamicCB('ArkWeb.WebKeyboardController', 'arkui.component.web', 'ArkWebTransfer', 'transferWebKeyboardControllerDynamic'); + + registerStaticCB('ArkWeb.ControllerHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferControllerHandlerStatic'); + registerDynamicCB('ArkWeb.ControllerHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferControllerHandlerDynamic'); } -- Gitee From 8633186d4bc1d4d2fda82269948043b859232941 Mon Sep 17 00:00:00 2001 From: zhanzehui Date: Thu, 17 Jul 2025 01:14:36 +0800 Subject: [PATCH 14/33] eventresult transfer Signed-off-by: zhanzehui --- base_sdk/transfer/kitRegister/arkweb.ets | 3 +++ 1 file changed, 3 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index ae833b11..c190f1bf 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -24,6 +24,9 @@ export function registerArkWeb() { registerStaticCB('ArkWeb.JsResult', 'arkui.component.web', 'ArkWebTransfer', 'transferJsResultStatic'); registerDynamicCB('ArkWeb.JsResult', 'arkui.component.web', 'ArkWebTransfer', 'transferJsResultDynamic'); + registerStaticCB('ArkWeb.EventResult', 'arkui.component.web', 'ArkWebTransfer', 'transferEventResultStatic'); + registerDynamicCB('ArkWeb.EventResult', 'arkui.component.web', 'ArkWebTransfer', 'transferEventResultDynamic'); + registerStaticCB('ArkWeb.FileSelectorResult', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorResultStatic'); registerDynamicCB('ArkWeb.FileSelectorResult', 'arkui.component.web', 'ArkWebTransfer', 'transferFileSelectorResultDynamic'); -- Gitee From fae36891f1bb316b38e800d63ddf471c1cff8a9a Mon Sep 17 00:00:00 2001 From: yangzk Date: Fri, 6 Jun 2025 16:59:12 +0800 Subject: [PATCH 15/33] Description: transfer UIAbilityContext IssueNo: Sig: SIG_ApplicationFramework Feature or Bugfix: Feature Binary Source: No Signed-off-by: yangzk Change-Id: I1894fe716cf1fe96ac7d804e82d78eaa7a24893c --- base_sdk/BUILD.gn | 1 + base_sdk/transfer/kitRegister/abilitykit.ets | 20 +++++++++++++++++++ .../transfer/kitRegister/registerMain.ets | 3 +++ 3 files changed, 24 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/abilitykit.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index a127a1cd..83674650 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -36,6 +36,7 @@ generate_static_abc("base_transfer") { files = [ "./transfer/@ohos.transfer.ets", "./transfer/register.ets", + "./transfer/kitRegister/abilitykit.ets", "./transfer/kitRegister/arkts.ets", "./transfer/kitRegister/arkweb.ets", "./transfer/kitRegister/registerMain.ets", diff --git a/base_sdk/transfer/kitRegister/abilitykit.ets b/base_sdk/transfer/kitRegister/abilitykit.ets new file mode 100644 index 00000000..e35eab21 --- /dev/null +++ b/base_sdk/transfer/kitRegister/abilitykit.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerAbilityKit() { + registerStaticCB('AbilityKit.UIAbilityContext', 'application.UIAbilityContext', 'UIAbilityContext', 'transferStatic'); + registerDynamicCB('AbilityKit.UIAbilityContext', 'application.UIAbilityContext', 'UIAbilityContext', 'transferDynamic'); +} diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index 7f588f63..81f2e2c5 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -12,12 +12,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { registerArkTS } from './arkts.ets'; +import { registerAbilityKit } from './abilitykit.ets'; import { registerArkWeb } from './arkweb.ets'; import { registerCommonEventManager } from './basicServicesKit.ets' export function registerMain(){ registerArkTS(); + registerAbilityKit(); registerArkWeb(); registerCommonEventManager(); } \ No newline at end of file -- Gitee From 303719a291df7de07c05eb2d116467101122ec25 Mon Sep 17 00:00:00 2001 From: "zhangyafei.echo" Date: Tue, 17 Jun 2025 10:46:06 +0800 Subject: [PATCH 16/33] Description:add applicationcontext abilitystagecontext and context transfer Sig:SIG_ApplicationFramework Feature or BugFix: Feature Binary Source: No Signed-off-by: zhangyafei.echo Change-Id: Ic0b565be8811352502f2335785ec3d4554ca8458 --- base_sdk/transfer/kitRegister/abilitykit.ets | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/base_sdk/transfer/kitRegister/abilitykit.ets b/base_sdk/transfer/kitRegister/abilitykit.ets index e35eab21..03550f35 100644 --- a/base_sdk/transfer/kitRegister/abilitykit.ets +++ b/base_sdk/transfer/kitRegister/abilitykit.ets @@ -17,4 +17,13 @@ import { registerStaticCB, registerDynamicCB } from '../register.ets'; export function registerAbilityKit() { registerStaticCB('AbilityKit.UIAbilityContext', 'application.UIAbilityContext', 'UIAbilityContext', 'transferStatic'); registerDynamicCB('AbilityKit.UIAbilityContext', 'application.UIAbilityContext', 'UIAbilityContext', 'transferDynamic'); + + registerStaticCB('AbilityKit.Context', 'application.Context', 'Context', 'transferStatic'); + registerDynamicCB('AbilityKit.Context', 'application.Context', 'Context', 'transferDynamic'); + + registerStaticCB('AbilityKit.ApplicationContext', 'application.ApplicationContext', 'ApplicationContext', 'transferStatic'); + registerDynamicCB('AbilityKit.ApplicationContext', 'application.ApplicationContext', 'ApplicationContext', 'transferDynamic'); + + registerStaticCB('AbilityKit.AbilityStageContext', 'application.AbilityStageContext', 'AbilityStageContext', 'transferStatic'); + registerDynamicCB('AbilityKit.AbilityStageContext', 'application.AbilityStageContext', 'AbilityStageContext', 'transferDynamic'); } -- Gitee From c8f489cf196ab161f1c40e1a32b90d6b7b931721 Mon Sep 17 00:00:00 2001 From: xuqian Date: Sat, 12 Jul 2025 12:09:18 +0800 Subject: [PATCH 17/33] os account transfer Signed-off-by: xuqian Change-Id: Ibaa79f2c9e0052ac8301259b1dbc50e594b8dfdc --- base_sdk/BUILD.gn | 1 + base_sdk/transfer/kitRegister/osAccount.ets | 20 +++++++++++++++++++ .../transfer/kitRegister/registerMain.ets | 2 ++ 3 files changed, 23 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/osAccount.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index 83674650..6d585e9a 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -41,6 +41,7 @@ generate_static_abc("base_transfer") { "./transfer/kitRegister/arkweb.ets", "./transfer/kitRegister/registerMain.ets", "./transfer/kitRegister/basicServicesKit.ets", + "./transfer/kitRegister/osAccount.ets", ] is_boot_abc = "True" device_dst_file = "/system/framework/base_transfer.abc" diff --git a/base_sdk/transfer/kitRegister/osAccount.ets b/base_sdk/transfer/kitRegister/osAccount.ets new file mode 100644 index 00000000..425aa0e3 --- /dev/null +++ b/base_sdk/transfer/kitRegister/osAccount.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerOsAccount() { + registerStaticCB('BasicServicesKit.IInputData', '@ohos.account.transfer.osAccount', 'Transfer', 'iInputDataTransferStatic'); + registerDynamicCB('BasicServicesKit.IInputData', '@ohos.account.transfer.osAccount', 'Transfer', 'iInputDataTransferDynamic'); +} diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index 81f2e2c5..54503391 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -15,12 +15,14 @@ import { registerArkTS } from './arkts.ets'; import { registerAbilityKit } from './abilitykit.ets'; +import { registerOsAccount } from './osAccount.ets'; import { registerArkWeb } from './arkweb.ets'; import { registerCommonEventManager } from './basicServicesKit.ets' export function registerMain(){ registerArkTS(); registerAbilityKit(); + registerOsAccount(); registerArkWeb(); registerCommonEventManager(); } \ No newline at end of file -- Gitee From 4aa86abb3031b2a09aa569f8c4dc590322ed1d29 Mon Sep 17 00:00:00 2001 From: xi-heqiong Date: Mon, 21 Jul 2025 10:32:35 +0800 Subject: [PATCH 18/33] 0721_transfer Signed-off-by: xi-heqiong Change-Id: Ib2726275b21b7db0848b1ba791491b891ed7fb11 --- base_sdk/BUILD.gn | 1 + base_sdk/transfer/kitRegister/arkui.ets | 32 +++++++++++++++++++ .../transfer/kitRegister/registerMain.ets | 2 ++ 3 files changed, 35 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/arkui.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index 83674650..40626192 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -37,6 +37,7 @@ generate_static_abc("base_transfer") { "./transfer/@ohos.transfer.ets", "./transfer/register.ets", "./transfer/kitRegister/abilitykit.ets", + "./transfer/kitRegister/arkui.ets", "./transfer/kitRegister/arkts.ets", "./transfer/kitRegister/arkweb.ets", "./transfer/kitRegister/registerMain.ets", diff --git a/base_sdk/transfer/kitRegister/arkui.ets b/base_sdk/transfer/kitRegister/arkui.ets new file mode 100644 index 00000000..b041098c --- /dev/null +++ b/base_sdk/transfer/kitRegister/arkui.ets @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerArkUI() { + registerStaticCB("ArkUI.NavDestinationInfo", "@ohos.arkui.observer", "uiObserver.NavDestinationInfoImpl", "transferStatic"); + registerDynamicCB("ArkUI.NavDestinationInfo", "@ohos.arkui.observer", "uiObserver.NavDestinationInfoImpl", "transferDynamic"); + + registerStaticCB("ArkUI.NavigationInfo", "@ohos.arkui.observer", "uiObserver.NavigationInfoImpl", "transferStatic"); + registerDynamicCB("ArkUI.NavigationInfo", "@ohos.arkui.observer", "uiObserver.NavigationInfoImpl", "transferDynamic"); + + registerStaticCB("ArkUI.RouterPageInfo", "@ohos.arkui.observer", "uiObserver.RouterPageInfo", "transferStatic"); + registerDynamicCB("ArkUI.RouterPageInfo", "@ohos.arkui.observer", "uiObserver.RouterPageInfo", "transferDynamic"); + + registerStaticCB("ArkUI.Matrix4", "@ohos.matrix4", "matrix4.Matrix4TransitInner", "matrixTransferStatic"); + registerDynamicCB("ArkUI.Matrix4", "@ohos.matrix4", "matrix4.Matrix4TransitInner", "matrixTransferDynamic"); + + registerStaticCB("ArkUI.Animator", "@ohos.animator", "AnimatorResultInner", "animatorTransferStatic"); + registerDynamicCB("ArkUI.Animator", "@ohos.animator", "AnimatorResultInner", "animatorTransferDynamic"); +} \ No newline at end of file diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index 81f2e2c5..5d4f75da 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -14,12 +14,14 @@ */ import { registerArkTS } from './arkts.ets'; +import { registerArkUI } from './arkui.ets'; import { registerAbilityKit } from './abilitykit.ets'; import { registerArkWeb } from './arkweb.ets'; import { registerCommonEventManager } from './basicServicesKit.ets' export function registerMain(){ registerArkTS(); + registerArkUI(); registerAbilityKit(); registerArkWeb(); registerCommonEventManager(); -- Gitee From 876dd44c4434f2b93183dec5b80a9400330da2c5 Mon Sep 17 00:00:00 2001 From: wangzhen Date: Tue, 22 Jul 2025 21:12:04 +0800 Subject: [PATCH 19/33] Caller/Callee transfer Signed-off-by: wangzhen Change-Id: I502fcdd8ccab975ea94e59971a67237986b5d45a --- base_sdk/transfer/kitRegister/abilitykit.ets | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/base_sdk/transfer/kitRegister/abilitykit.ets b/base_sdk/transfer/kitRegister/abilitykit.ets index 03550f35..d51e6bb0 100644 --- a/base_sdk/transfer/kitRegister/abilitykit.ets +++ b/base_sdk/transfer/kitRegister/abilitykit.ets @@ -26,4 +26,10 @@ export function registerAbilityKit() { registerStaticCB('AbilityKit.AbilityStageContext', 'application.AbilityStageContext', 'AbilityStageContext', 'transferStatic'); registerDynamicCB('AbilityKit.AbilityStageContext', 'application.AbilityStageContext', 'AbilityStageContext', 'transferDynamic'); + + registerStaticCB('AbilityKit.Caller', 'application.Caller', 'CallerImpl', 'transferStatic'); + registerDynamicCB('AbilityKit.Caller', 'application.Caller', 'CallerImpl', 'transferDynamic'); + + registerStaticCB('AbilityKit.Callee', 'application.Callee', 'CalleeImpl', 'transferStatic'); + registerDynamicCB('AbilityKit.Callee', 'application.Callee', 'CalleeImpl', 'transferDynamic'); } -- Gitee From 1be31ed39a9069d5d2bf393776e998460b417f24 Mon Sep 17 00:00:00 2001 From: wujinhui Date: Sat, 26 Jul 2025 09:37:02 +0800 Subject: [PATCH 20/33] =?UTF-8?q?arkui=20=E8=A1=A5=E5=85=85=20transfer=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wujinhui --- base_sdk/transfer/kitRegister/arkui.ets | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkui.ets b/base_sdk/transfer/kitRegister/arkui.ets index b041098c..12f08fb1 100644 --- a/base_sdk/transfer/kitRegister/arkui.ets +++ b/base_sdk/transfer/kitRegister/arkui.ets @@ -29,4 +29,28 @@ export function registerArkUI() { registerStaticCB("ArkUI.Animator", "@ohos.animator", "AnimatorResultInner", "animatorTransferStatic"); registerDynamicCB("ArkUI.Animator", "@ohos.animator", "AnimatorResultInner", "animatorTransferDynamic"); + + registerStaticCB("ArkUI.FrameNode", "arkui.handwritten.transfer.FrameNodeTransfer", "FrameNodeTransfer", "transferStatic"); + registerDynamicCB("ArkUI.FrameNode", "arkui.handwritten.transfer.FrameNodeTransfer", "FrameNodeTransfer", "transferDynamic"); + + registerStaticCB("ArkUI.UIContext", "arkui.handwritten.transfer.UIContextTransfer", "UIContextTransfer", "transferStatic"); + registerDynamicCB("ArkUI.UIContext", "arkui.handwritten.transfer.UIContextTransfer", "UIContextTransfer", "transferDynamic"); + + registerStaticCB("ArkUI.LengthMetrics", "arkui.handwritten.transfer.LengthMetricsTransfer", "LengthMetricsTransfer", "transferStatic"); + registerDynamicCB("ArkUI.LengthMetrics", "arkui.handwritten.transfer.LengthMetricsTransfer", "LengthMetricsTransfer", "transferDynamic"); + + registerStaticCB("ArkUI.ShapeClip", "arkui.handwritten.transfer.ShapeClipTransfer", "ShapeClipTransfer", "transferStatic"); + registerDynamicCB("ArkUI.ShapeClip", "arkui.handwritten.transfer.ShapeClipTransfer", "ShapeClipTransfer", "transferDynamic"); + + registerStaticCB("ArkUI.ColorMetrics", "arkui.handwritten.transfer.ColorMetricsTransfer", "ColorMetricsTransfer", "transferStatic"); + registerDynamicCB("ArkUI.ColorMetrics", "arkui.handwritten.transfer.ColorMetricsTransfer", "ColorMetricsTransfer", "transferDynamic"); + + registerStaticCB("ArkUI.ShapeMask", "arkui.handwritten.transfer.ShapeMaskTransfer", "ShapeMaskTransfer", "transferStatic"); + registerDynamicCB("ArkUI.ShapeMask", "arkui.handwritten.transfer.ShapeMaskTransfer", "ShapeMaskTransfer", "transferDynamic"); + + registerStaticCB("Global.Resource", "arkui.handwritten.transfer.ResourceTransfer", "ResourceTransfer", "transferStatic"); + registerDynamicCB("Global.Resource", "arkui.handwritten.transfer.ResourceTransfer", "ResourceTransfer", "transferDynamic"); + + registerStaticCB("ArkUI.RenderNode", "arkui.handwritten.transfer.RenderNodeTransfer", "RenderNodeTransfer", "transferStatic"); + registerDynamicCB("ArkUI.RenderNode", "arkui.handwritten.transfer.RenderNodeTransfer", "RenderNodeTransfer", "transferDynamic"); } \ No newline at end of file -- Gitee From 0fd6030cd01cec25b3313b98c55bfd897efd62c0 Mon Sep 17 00:00:00 2001 From: zenix_zxy Date: Tue, 22 Jul 2025 19:48:42 +0800 Subject: [PATCH 21/33] add regesiter Signed-off-by: zenix_zxy Change-Id: I07ef75ae4f5b74cee403ef87f96cdc160414fd3e --- base_sdk/transfer/kitRegister/arkui.ets | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkui.ets b/base_sdk/transfer/kitRegister/arkui.ets index 12f08fb1..2dee5e0a 100644 --- a/base_sdk/transfer/kitRegister/arkui.ets +++ b/base_sdk/transfer/kitRegister/arkui.ets @@ -53,4 +53,34 @@ export function registerArkUI() { registerStaticCB("ArkUI.RenderNode", "arkui.handwritten.transfer.RenderNodeTransfer", "RenderNodeTransfer", "transferStatic"); registerDynamicCB("ArkUI.RenderNode", "arkui.handwritten.transfer.RenderNodeTransfer", "RenderNodeTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.TouchEvent', "arkui.component.common", "TouchEventTransfer", "transferStatic"); + registerDynamicCB('ArkUI.TouchEvent', "arkui.component.common", "TouchEventTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.MouseEvent', "arkui.component.common", "MouseEventTransfer", "transferStatic"); + registerDynamicCB('ArkUI.MouseEvent', "arkui.component.common", "MouseEventTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.AxisEvent', "arkui.component.common", "AxisEventTransfer", "transferStatic"); + registerDynamicCB('ArkUI.AxisEvent', "arkui.component.common", "AxisEventTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.ClickEvent', "arkui.component.common", "ClickEventTransfer", "transferStatic"); + registerDynamicCB('ArkUI.ClickEvent', "arkui.component.common", "ClickEventTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.HoverEvent', "arkui.component.common", "HoverEventTransfer", "transferStatic"); + registerDynamicCB('ArkUI.HoverEvent', "arkui.component.common", "HoverEventTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.DragEvent', "arkui.component.common", "DragEventTransfer", "transferStatic"); + registerDynamicCB('ArkUI.DragEvent', "arkui.component.common", "DragEventTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.KeyEvent', "arkui.component.common", "KeyEventTransfer", "transferStatic"); + registerDynamicCB('ArkUI.KeyEvent', "arkui.component.common", "KeyEventTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.TouchTestInfo', "arkui.component.common", "TouchTestInfoTransfer", "transferStatic"); + registerDynamicCB('ArkUI.TouchTestInfo', "arkui.component.common", "TouchTestInfoTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.EventTargetInfo', "arkui.component.gesture", "EventTargetInfoTransfer", "transferStatic"); + registerDynamicCB('ArkUI.EventTargetInfo', "arkui.component.gesture", "EventTargetInfoTransfer", "transferDynamic"); + + registerStaticCB('ArkUI.ScrollableTargetInfo', "arkui.component.gesture", "ScrollableTargetInfoTransfer", "transferStatic"); + registerDynamicCB('ArkUI.ScrollableTargetInfo', "arkui.component.gesture", "ScrollableTargetInfoTransfer", "transferDynamic"); } \ No newline at end of file -- Gitee From ee3d9be95425da88d83ac3209d3d92156ffce31f Mon Sep 17 00:00:00 2001 From: zhuxiantao99 Date: Mon, 28 Jul 2025 16:37:23 +0800 Subject: [PATCH 22/33] rpc transfer Signed-off-by: zhuxiantao99 --- base_sdk/BUILD.gn | 1 + .../transfer/kitRegister/registerMain.ets | 2 ++ base_sdk/transfer/kitRegister/rpc.ets | 20 +++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/rpc.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index 0a9037a6..1ed193dc 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -43,6 +43,7 @@ generate_static_abc("base_transfer") { "./transfer/kitRegister/registerMain.ets", "./transfer/kitRegister/basicServicesKit.ets", "./transfer/kitRegister/osAccount.ets", + "./transfer/kitRegister/rpc.ets", ] is_boot_abc = "True" device_dst_file = "/system/framework/base_transfer.abc" diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index 5c206569..8f9b6869 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -19,6 +19,7 @@ import { registerAbilityKit } from './abilitykit.ets'; import { registerOsAccount } from './osAccount.ets'; import { registerArkWeb } from './arkweb.ets'; import { registerCommonEventManager } from './basicServicesKit.ets' +import { registerRpc } from './rpc.ets'; export function registerMain(){ registerArkTS(); @@ -27,4 +28,5 @@ export function registerMain(){ registerOsAccount(); registerArkWeb(); registerCommonEventManager(); + registerRpc(); } \ No newline at end of file diff --git a/base_sdk/transfer/kitRegister/rpc.ets b/base_sdk/transfer/kitRegister/rpc.ets new file mode 100644 index 00000000..fc191e55 --- /dev/null +++ b/base_sdk/transfer/kitRegister/rpc.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../rpc.ets'; + +export function registerRpc() { + registerStaticCB('rpc.MessageSequence', '@ohos.rpc', 'rpc.MessageSequence', 'transferStatic'); + registerDynamicCB('rpc.MessageSequence', '@ohos.rpc', 'rpc.MessageSequence', 'transferDynamic'); +} \ No newline at end of file -- Gitee From c0c243ddd274ee379ecad417e5745f254efb9e2f Mon Sep 17 00:00:00 2001 From: clamdown Date: Mon, 28 Jul 2025 09:23:52 +0000 Subject: [PATCH 23/33] update base_sdk/transfer/kitRegister/rpc.ets. Signed-off-by: clamdown --- base_sdk/transfer/kitRegister/rpc.ets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_sdk/transfer/kitRegister/rpc.ets b/base_sdk/transfer/kitRegister/rpc.ets index fc191e55..e9e731a9 100644 --- a/base_sdk/transfer/kitRegister/rpc.ets +++ b/base_sdk/transfer/kitRegister/rpc.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { registerStaticCB, registerDynamicCB } from '../rpc.ets'; +import { registerStaticCB, registerDynamicCB } from '../register.ets'; export function registerRpc() { registerStaticCB('rpc.MessageSequence', '@ohos.rpc', 'rpc.MessageSequence', 'transferStatic'); -- Gitee From 49301b4e5a309c3a3ee71763721aaa264a9277ba Mon Sep 17 00:00:00 2001 From: chenguanhao Date: Mon, 28 Jul 2025 20:27:14 +0800 Subject: [PATCH 24/33] webview transfer Signed-off-by: chenguanhao --- base_sdk/transfer/kitRegister/arkweb.ets | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index 7c2f143b..1ab8d405 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -68,4 +68,10 @@ export function registerArkWeb() { registerStaticCB('ArkWeb.ControllerHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferControllerHandlerStatic'); registerDynamicCB('ArkWeb.ControllerHandler', 'arkui.component.web', 'ArkWebTransfer', 'transferControllerHandlerDynamic'); + + registerStaticCB('ArkWeb.BackForwardList', '@ohos.web.webview', 'webview.BackForwardListinner', 'transferBackForwardListToStatic'); + registerDynamicCB('ArkWeb.BackForwardList', '@ohos.web.webview', 'webview.BackForwardListinner', 'transferBackForwardListToDynamic'); + + registerStaticCB('ArkWeb.WebMessagePort', '@ohos.web.webview', 'webview.WebMessagePortInner', 'transferWebMessagePortToStatitc'); + registerDynamicCB('ArkWeb.WebMessagePort', '@ohos.web.webview', 'webview.WebMessagePortInner', 'transferWebMessagePortToDynamic'); } -- Gitee From 6e85117298e7bb5f87473d1285379a1d21bef52b Mon Sep 17 00:00:00 2001 From: chenguanhao Date: Tue, 29 Jul 2025 20:55:35 +0800 Subject: [PATCH 25/33] webview transfer register Signed-off-by: chenguanhao --- base_sdk/transfer/kitRegister/arkweb.ets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index 1ab8d405..09c148c6 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -72,6 +72,6 @@ export function registerArkWeb() { registerStaticCB('ArkWeb.BackForwardList', '@ohos.web.webview', 'webview.BackForwardListinner', 'transferBackForwardListToStatic'); registerDynamicCB('ArkWeb.BackForwardList', '@ohos.web.webview', 'webview.BackForwardListinner', 'transferBackForwardListToDynamic'); - registerStaticCB('ArkWeb.WebMessagePort', '@ohos.web.webview', 'webview.WebMessagePortInner', 'transferWebMessagePortToStatitc'); + registerStaticCB('ArkWeb.WebMessagePort', '@ohos.web.webview', 'webview.WebMessagePortInner', 'transferWebMessagePortToStatic'); registerDynamicCB('ArkWeb.WebMessagePort', '@ohos.web.webview', 'webview.WebMessagePortInner', 'transferWebMessagePortToDynamic'); } -- Gitee From 6c0a04c40952dc4856651b59979d79cc1302325b Mon Sep 17 00:00:00 2001 From: wujinhui Date: Wed, 30 Jul 2025 18:47:30 +0800 Subject: [PATCH 26/33] bug fix code check Signed-off-by: wujinhui --- base_sdk/transfer/kitRegister/arkui.ets | 92 ++++++++++++------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/base_sdk/transfer/kitRegister/arkui.ets b/base_sdk/transfer/kitRegister/arkui.ets index 2dee5e0a..6a557d92 100644 --- a/base_sdk/transfer/kitRegister/arkui.ets +++ b/base_sdk/transfer/kitRegister/arkui.ets @@ -15,72 +15,72 @@ import { registerStaticCB, registerDynamicCB } from '../register.ets'; export function registerArkUI() { - registerStaticCB("ArkUI.NavDestinationInfo", "@ohos.arkui.observer", "uiObserver.NavDestinationInfoImpl", "transferStatic"); - registerDynamicCB("ArkUI.NavDestinationInfo", "@ohos.arkui.observer", "uiObserver.NavDestinationInfoImpl", "transferDynamic"); + registerStaticCB('ArkUI.NavDestinationInfo', '@ohos.arkui.observer', 'uiObserver.NavDestinationInfoImpl', 'transferStatic'); + registerDynamicCB('ArkUI.NavDestinationInfo', '@ohos.arkui.observer', 'uiObserver.NavDestinationInfoImpl', 'transferDynamic'); - registerStaticCB("ArkUI.NavigationInfo", "@ohos.arkui.observer", "uiObserver.NavigationInfoImpl", "transferStatic"); - registerDynamicCB("ArkUI.NavigationInfo", "@ohos.arkui.observer", "uiObserver.NavigationInfoImpl", "transferDynamic"); + registerStaticCB('ArkUI.NavigationInfo', '@ohos.arkui.observer', 'uiObserver.NavigationInfoImpl', 'transferStatic'); + registerDynamicCB('ArkUI.NavigationInfo', '@ohos.arkui.observer', 'uiObserver.NavigationInfoImpl', 'transferDynamic'); - registerStaticCB("ArkUI.RouterPageInfo", "@ohos.arkui.observer", "uiObserver.RouterPageInfo", "transferStatic"); - registerDynamicCB("ArkUI.RouterPageInfo", "@ohos.arkui.observer", "uiObserver.RouterPageInfo", "transferDynamic"); + registerStaticCB('ArkUI.RouterPageInfo', '@ohos.arkui.observer', 'uiObserver.RouterPageInfo', 'transferStatic'); + registerDynamicCB('ArkUI.RouterPageInfo', '@ohos.arkui.observer', 'uiObserver.RouterPageInfo', 'transferDynamic'); - registerStaticCB("ArkUI.Matrix4", "@ohos.matrix4", "matrix4.Matrix4TransitInner", "matrixTransferStatic"); - registerDynamicCB("ArkUI.Matrix4", "@ohos.matrix4", "matrix4.Matrix4TransitInner", "matrixTransferDynamic"); + registerStaticCB('ArkUI.Matrix4', '@ohos.matrix4', 'matrix4.Matrix4TransitInner', 'matrixTransferStatic'); + registerDynamicCB('ArkUI.Matrix4', '@ohos.matrix4', 'matrix4.Matrix4TransitInner', 'matrixTransferDynamic'); - registerStaticCB("ArkUI.Animator", "@ohos.animator", "AnimatorResultInner", "animatorTransferStatic"); - registerDynamicCB("ArkUI.Animator", "@ohos.animator", "AnimatorResultInner", "animatorTransferDynamic"); + registerStaticCB('ArkUI.Animator', '@ohos.animator', 'AnimatorResultInner', 'animatorTransferStatic'); + registerDynamicCB('ArkUI.Animator', '@ohos.animator', 'AnimatorResultInner', 'animatorTransferDynamic'); - registerStaticCB("ArkUI.FrameNode", "arkui.handwritten.transfer.FrameNodeTransfer", "FrameNodeTransfer", "transferStatic"); - registerDynamicCB("ArkUI.FrameNode", "arkui.handwritten.transfer.FrameNodeTransfer", "FrameNodeTransfer", "transferDynamic"); + registerStaticCB('ArkUI.FrameNode', 'arkui.handwritten.transfer.FrameNodeTransfer', 'FrameNodeTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.FrameNode', 'arkui.handwritten.transfer.FrameNodeTransfer', 'FrameNodeTransfer', 'transferDynamic'); - registerStaticCB("ArkUI.UIContext", "arkui.handwritten.transfer.UIContextTransfer", "UIContextTransfer", "transferStatic"); - registerDynamicCB("ArkUI.UIContext", "arkui.handwritten.transfer.UIContextTransfer", "UIContextTransfer", "transferDynamic"); + registerStaticCB('ArkUI.UIContext', 'arkui.handwritten.transfer.UIContextTransfer', 'UIContextTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.UIContext', 'arkui.handwritten.transfer.UIContextTransfer', 'UIContextTransfer', 'transferDynamic'); - registerStaticCB("ArkUI.LengthMetrics", "arkui.handwritten.transfer.LengthMetricsTransfer", "LengthMetricsTransfer", "transferStatic"); - registerDynamicCB("ArkUI.LengthMetrics", "arkui.handwritten.transfer.LengthMetricsTransfer", "LengthMetricsTransfer", "transferDynamic"); + registerStaticCB('ArkUI.LengthMetrics', 'arkui.handwritten.transfer.LengthMetricsTransfer', 'LengthMetricsTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.LengthMetrics', 'arkui.handwritten.transfer.LengthMetricsTransfer', 'LengthMetricsTransfer', 'transferDynamic'); - registerStaticCB("ArkUI.ShapeClip", "arkui.handwritten.transfer.ShapeClipTransfer", "ShapeClipTransfer", "transferStatic"); - registerDynamicCB("ArkUI.ShapeClip", "arkui.handwritten.transfer.ShapeClipTransfer", "ShapeClipTransfer", "transferDynamic"); + registerStaticCB('ArkUI.ShapeClip', 'arkui.handwritten.transfer.ShapeClipTransfer', 'ShapeClipTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.ShapeClip', 'arkui.handwritten.transfer.ShapeClipTransfer', 'ShapeClipTransfer', 'transferDynamic'); - registerStaticCB("ArkUI.ColorMetrics", "arkui.handwritten.transfer.ColorMetricsTransfer", "ColorMetricsTransfer", "transferStatic"); - registerDynamicCB("ArkUI.ColorMetrics", "arkui.handwritten.transfer.ColorMetricsTransfer", "ColorMetricsTransfer", "transferDynamic"); + registerStaticCB('ArkUI.ColorMetrics', 'arkui.handwritten.transfer.ColorMetricsTransfer', 'ColorMetricsTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.ColorMetrics', 'arkui.handwritten.transfer.ColorMetricsTransfer', 'ColorMetricsTransfer', 'transferDynamic'); - registerStaticCB("ArkUI.ShapeMask", "arkui.handwritten.transfer.ShapeMaskTransfer", "ShapeMaskTransfer", "transferStatic"); - registerDynamicCB("ArkUI.ShapeMask", "arkui.handwritten.transfer.ShapeMaskTransfer", "ShapeMaskTransfer", "transferDynamic"); + registerStaticCB('ArkUI.ShapeMask', 'arkui.handwritten.transfer.ShapeMaskTransfer', 'ShapeMaskTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.ShapeMask', 'arkui.handwritten.transfer.ShapeMaskTransfer', 'ShapeMaskTransfer', 'transferDynamic'); - registerStaticCB("Global.Resource", "arkui.handwritten.transfer.ResourceTransfer", "ResourceTransfer", "transferStatic"); - registerDynamicCB("Global.Resource", "arkui.handwritten.transfer.ResourceTransfer", "ResourceTransfer", "transferDynamic"); + registerStaticCB('Global.Resource', 'arkui.handwritten.transfer.ResourceTransfer', 'ResourceTransfer', 'transferStatic'); + registerDynamicCB('Global.Resource', 'arkui.handwritten.transfer.ResourceTransfer', 'ResourceTransfer', 'transferDynamic'); - registerStaticCB("ArkUI.RenderNode", "arkui.handwritten.transfer.RenderNodeTransfer", "RenderNodeTransfer", "transferStatic"); - registerDynamicCB("ArkUI.RenderNode", "arkui.handwritten.transfer.RenderNodeTransfer", "RenderNodeTransfer", "transferDynamic"); + registerStaticCB('ArkUI.RenderNode', 'arkui.handwritten.transfer.RenderNodeTransfer', 'RenderNodeTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.RenderNode', 'arkui.handwritten.transfer.RenderNodeTransfer', 'RenderNodeTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.TouchEvent', "arkui.component.common", "TouchEventTransfer", "transferStatic"); - registerDynamicCB('ArkUI.TouchEvent', "arkui.component.common", "TouchEventTransfer", "transferDynamic"); + registerStaticCB('ArkUI.TouchEvent', 'arkui.component.common', 'TouchEventTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.TouchEvent', 'arkui.component.common', 'TouchEventTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.MouseEvent', "arkui.component.common", "MouseEventTransfer", "transferStatic"); - registerDynamicCB('ArkUI.MouseEvent', "arkui.component.common", "MouseEventTransfer", "transferDynamic"); + registerStaticCB('ArkUI.MouseEvent', 'arkui.component.common', 'MouseEventTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.MouseEvent', 'arkui.component.common', 'MouseEventTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.AxisEvent', "arkui.component.common", "AxisEventTransfer", "transferStatic"); - registerDynamicCB('ArkUI.AxisEvent', "arkui.component.common", "AxisEventTransfer", "transferDynamic"); + registerStaticCB('ArkUI.AxisEvent', 'arkui.component.common', 'AxisEventTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.AxisEvent', 'arkui.component.common', 'AxisEventTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.ClickEvent', "arkui.component.common", "ClickEventTransfer", "transferStatic"); - registerDynamicCB('ArkUI.ClickEvent', "arkui.component.common", "ClickEventTransfer", "transferDynamic"); + registerStaticCB('ArkUI.ClickEvent', 'arkui.component.common', 'ClickEventTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.ClickEvent', 'arkui.component.common', 'ClickEventTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.HoverEvent', "arkui.component.common", "HoverEventTransfer", "transferStatic"); - registerDynamicCB('ArkUI.HoverEvent', "arkui.component.common", "HoverEventTransfer", "transferDynamic"); + registerStaticCB('ArkUI.HoverEvent', 'arkui.component.common', 'HoverEventTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.HoverEvent', 'arkui.component.common', 'HoverEventTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.DragEvent', "arkui.component.common", "DragEventTransfer", "transferStatic"); - registerDynamicCB('ArkUI.DragEvent', "arkui.component.common", "DragEventTransfer", "transferDynamic"); + registerStaticCB('ArkUI.DragEvent', 'arkui.component.common', 'DragEventTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.DragEvent', 'arkui.component.common', 'DragEventTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.KeyEvent', "arkui.component.common", "KeyEventTransfer", "transferStatic"); - registerDynamicCB('ArkUI.KeyEvent', "arkui.component.common", "KeyEventTransfer", "transferDynamic"); + registerStaticCB('ArkUI.KeyEvent', 'arkui.component.common', 'KeyEventTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.KeyEvent', 'arkui.component.common', 'KeyEventTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.TouchTestInfo', "arkui.component.common", "TouchTestInfoTransfer", "transferStatic"); - registerDynamicCB('ArkUI.TouchTestInfo', "arkui.component.common", "TouchTestInfoTransfer", "transferDynamic"); + registerStaticCB('ArkUI.TouchTestInfo', 'arkui.component.common', 'TouchTestInfoTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.TouchTestInfo', 'arkui.component.common', 'TouchTestInfoTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.EventTargetInfo', "arkui.component.gesture", "EventTargetInfoTransfer", "transferStatic"); - registerDynamicCB('ArkUI.EventTargetInfo', "arkui.component.gesture", "EventTargetInfoTransfer", "transferDynamic"); + registerStaticCB('ArkUI.EventTargetInfo', 'arkui.component.gesture', 'EventTargetInfoTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.EventTargetInfo', 'arkui.component.gesture', 'EventTargetInfoTransfer', 'transferDynamic'); - registerStaticCB('ArkUI.ScrollableTargetInfo', "arkui.component.gesture", "ScrollableTargetInfoTransfer", "transferStatic"); - registerDynamicCB('ArkUI.ScrollableTargetInfo', "arkui.component.gesture", "ScrollableTargetInfoTransfer", "transferDynamic"); + registerStaticCB('ArkUI.ScrollableTargetInfo', 'arkui.component.gesture', 'ScrollableTargetInfoTransfer', 'transferStatic'); + registerDynamicCB('ArkUI.ScrollableTargetInfo', 'arkui.component.gesture', 'ScrollableTargetInfoTransfer', 'transferDynamic'); } \ No newline at end of file -- Gitee From 8d51ca464ae26455a905f2de6867a9154b1455b8 Mon Sep 17 00:00:00 2001 From: tanliang Date: Wed, 30 Jul 2025 18:31:46 +0800 Subject: [PATCH 27/33] =?UTF-8?q?=E7=AA=97=E5=8F=A3WindowStage=E6=94=AF?= =?UTF-8?q?=E6=8C=81transfer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: tanliang --- base_sdk/BUILD.gn | 1 + .../transfer/kitRegister/registerMain.ets | 2 ++ base_sdk/transfer/kitRegister/window.ets | 20 +++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/window.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index 1ed193dc..83c0b849 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -44,6 +44,7 @@ generate_static_abc("base_transfer") { "./transfer/kitRegister/basicServicesKit.ets", "./transfer/kitRegister/osAccount.ets", "./transfer/kitRegister/rpc.ets", + "./transfer/kitRegister/window.ets", ] is_boot_abc = "True" device_dst_file = "/system/framework/base_transfer.abc" diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index 8f9b6869..fe97810d 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -15,6 +15,7 @@ import { registerArkTS } from './arkts.ets'; import { registerArkUI } from './arkui.ets'; +import { registerWindow } from './window.ets'; import { registerAbilityKit } from './abilitykit.ets'; import { registerOsAccount } from './osAccount.ets'; import { registerArkWeb } from './arkweb.ets'; @@ -24,6 +25,7 @@ import { registerRpc } from './rpc.ets'; export function registerMain(){ registerArkTS(); registerArkUI(); + registerWindow(); registerAbilityKit(); registerOsAccount(); registerArkWeb(); diff --git a/base_sdk/transfer/kitRegister/window.ets b/base_sdk/transfer/kitRegister/window.ets new file mode 100644 index 00000000..8378648f --- /dev/null +++ b/base_sdk/transfer/kitRegister/window.ets @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerWindow() { + registerStaticCB('window.WindowStage', '@ohos.window', 'window.WindowStageInternal', 'transferStatic'); + registerDynamicCB('window.WindowStage', '@ohos.window', 'window.WindowStageInternal', 'transferDynamic'); +} -- Gitee From 6fb610732f61bd46e74bea1a23001dac6621f3ce Mon Sep 17 00:00:00 2001 From: wangzhaoyong Date: Mon, 28 Jul 2025 11:56:10 +0800 Subject: [PATCH 28/33] worker taskpool support interop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: [新需求]: taskpool/worker support interop https://gitee.com/openharmony/commonlibrary_ets_utils/issues/ICP5ON Signed-off-by: wangzhaoyong Change-Id: I55ef6c3abcd808206992129ab61e568ac8572e2d --- bundle.json | 3 +- .../common/helper/concurrent_helper.cpp | 2 +- .../helper/hybrid_concurrent_helper.cpp | 54 ++++++++++++++++ .../common/helper/hybrid_concurrent_helper.h | 37 +++++++++++ js_concurrent_module/taskpool/BUILD.gn | 8 +++ .../taskpool/task_manager.cpp | 47 ++++++++++++++ js_concurrent_module/taskpool/task_manager.h | 4 ++ js_concurrent_module/taskpool/test/BUILD.gn | 3 + js_concurrent_module/taskpool/worker.cpp | 7 +++ js_concurrent_module/taskpool/worker.h | 6 ++ js_concurrent_module/worker/BUILD.gn | 24 +++++-- js_concurrent_module/worker/test/BUILD.gn | 8 +++ js_concurrent_module/worker/worker.cpp | 63 +++++++++++++++++++ js_concurrent_module/worker/worker.h | 10 +++ 14 files changed, 270 insertions(+), 6 deletions(-) create mode 100644 js_concurrent_module/common/helper/hybrid_concurrent_helper.cpp create mode 100644 js_concurrent_module/common/helper/hybrid_concurrent_helper.h diff --git a/bundle.json b/bundle.json index a113f587..21129c8a 100644 --- a/bundle.json +++ b/bundle.json @@ -66,7 +66,8 @@ "icu", "openssl", "libxml2", - "typescript" + "typescript", + "runtime_core" ], "third_party": [] }, diff --git a/js_concurrent_module/common/helper/concurrent_helper.cpp b/js_concurrent_module/common/helper/concurrent_helper.cpp index 3eef1990..151dacc6 100644 --- a/js_concurrent_module/common/helper/concurrent_helper.cpp +++ b/js_concurrent_module/common/helper/concurrent_helper.cpp @@ -95,4 +95,4 @@ bool ConcurrentHelper::IsModerateMemory() return false; #endif } -} // namespace Commonlibrary::Concurrent::TaskPoolModule \ No newline at end of file +} // namespace Commonlibrary::Concurrent::Common::Helper \ No newline at end of file diff --git a/js_concurrent_module/common/helper/hybrid_concurrent_helper.cpp b/js_concurrent_module/common/helper/hybrid_concurrent_helper.cpp new file mode 100644 index 00000000..41e51ef3 --- /dev/null +++ b/js_concurrent_module/common/helper/hybrid_concurrent_helper.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2025 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. + */ + +#include "hybrid_concurrent_helper.h" +#include "tools/log.h" +#include "parameters.h" + +namespace Commonlibrary::Concurrent::Common::Helper { +std::atomic_bool globalEnableConcurrencyInteropFlag = false; +ani_vm* globalAniVm = nullptr; +std::once_flag g_globalAniVmInitFlag; + +ani_vm* ANIHelper::GetAniVm() +{ + std::call_once(g_globalAniVmInitFlag, &InitializeAniVm); + return globalAniVm; +} + +void ANIHelper::InitializeAniVm() +{ + const int flag = OHOS::system::GetIntParameter("persist.commonlibrary.concurrencysupportinterop", 0); + globalEnableConcurrencyInteropFlag = (flag != 0); + const std::string logMsg = globalEnableConcurrencyInteropFlag + ? "worker and taskpool support interop." + : "worker and taskpool do not support interop."; + HILOG_INFO("ANIHelper:: %{public}s", logMsg.c_str()); + if (!globalEnableConcurrencyInteropFlag) { + return; + } + ani_size res = 0; + ani_status status = ANI_GetCreatedVMs(&globalAniVm, 1, &res); + if (status != ANI_OK) { + HILOG_ERROR("ANIHelper:: ANI_GetCreatedVMs failed."); + globalAniVm = nullptr; + } +} + +bool ANIHelper::IsConcurrencySupportInterop() +{ + return globalEnableConcurrencyInteropFlag; +} +} // Commonlibrary::Concurrent::Common::Helper \ No newline at end of file diff --git a/js_concurrent_module/common/helper/hybrid_concurrent_helper.h b/js_concurrent_module/common/helper/hybrid_concurrent_helper.h new file mode 100644 index 00000000..32171a42 --- /dev/null +++ b/js_concurrent_module/common/helper/hybrid_concurrent_helper.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2025 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. + */ + +#ifndef JS_CONCURRENT_MODULE_COMMON_HELPER_HYBRID_CONCURRENT_HELPER_H +#define JS_CONCURRENT_MODULE_COMMON_HELPER_HYBRID_CONCURRENT_HELPER_H + +#include +#include "ani.h" + +namespace Commonlibrary::Concurrent::Common::Helper { +extern std::atomic_bool globalEnableConcurrencyInteropFlag; +extern ani_vm* globalAniVm; +extern std::once_flag g_globalAniVmInitFlag; + +class ANIHelper { +public: + ANIHelper() = delete; + ~ANIHelper() = delete; + + static ani_vm* GetAniVm(); + static void InitializeAniVm(); + static bool IsConcurrencySupportInterop(); +}; +} // namespace Commonlibrary::Concurrent::Common::Helper +#endif // JS_CONCURRENT_MODULE_COMMON_HELPER_HYBRID_CONCURRENT_HELPER_H \ No newline at end of file diff --git a/js_concurrent_module/taskpool/BUILD.gn b/js_concurrent_module/taskpool/BUILD.gn index 04007d06..36a709f7 100644 --- a/js_concurrent_module/taskpool/BUILD.gn +++ b/js_concurrent_module/taskpool/BUILD.gn @@ -96,6 +96,7 @@ ohos_shared_library("taskpool") { "ENABLE_TASKPOOL_EVENTHANDLER", "ENABLE_TASKPOOL_FFRT", "ENABLE_TASKPOOL_HISYSEVENT", + "ENABLE_CONCURRENCY_INTEROP", ] external_deps += [ "bundle_framework:appexecfwk_base", @@ -107,7 +108,10 @@ ohos_shared_library("taskpool") { "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", + "runtime_core:ani", + "runtime_core:libarkruntime", ] + sources += [ "../common/helper/hybrid_concurrent_helper.cpp" ] } if (is_ohos && is_standard_system && !is_arkui_x && @@ -163,6 +167,7 @@ ohos_source_set("taskpool_static") { "ENABLE_TASKPOOL_EVENTHANDLER", "ENABLE_TASKPOOL_FFRT", "ENABLE_TASKPOOL_HISYSEVENT", + "ENABLE_CONCURRENCY_INTEROP", ] external_deps += [ "bundle_framework:appexecfwk_base", @@ -174,7 +179,10 @@ ohos_source_set("taskpool_static") { "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", + "runtime_core:ani", + "runtime_core:libarkruntime", ] + sources += [ "../common/helper/hybrid_concurrent_helper.cpp" ] } if (is_arkui_x) { diff --git a/js_concurrent_module/taskpool/task_manager.cpp b/js_concurrent_module/taskpool/task_manager.cpp index 90f72b96..fc7c9c5f 100644 --- a/js_concurrent_module/taskpool/task_manager.cpp +++ b/js_concurrent_module/taskpool/task_manager.cpp @@ -922,6 +922,11 @@ void TaskManager::InitTaskManager(napi_env env) #if defined(ENABLE_TASKPOOL_EVENTHANDLER) mainThreadHandler_ = std::make_shared( OHOS::AppExecFwk::EventRunner::GetMainEventRunner()); +#endif +#if defined(ENABLE_CONCURRENCY_INTEROP) + if (reinterpret_cast(env)->IsMainThread() && ANIHelper::GetAniVm() == nullptr) { + HILOG_INFO("taskpool:: get aniVm is null in main thread."); + } #endif auto mainThreadEngine = NativeEngine::GetMainThreadEngine(); if (mainThreadEngine == nullptr) { @@ -1697,4 +1702,46 @@ bool TaskManager::IsPerformIdle() const { return isPerformIdle_; } + +#if defined(ENABLE_CONCURRENCY_INTEROP) +void TaskManager::AttachWorkerToAniVm(Worker* worker) +{ + if (!ANIHelper::IsConcurrencySupportInterop()) { + return; + } + // attach worker env to 1.2vm + std::string interop = "--interop=enable"; + ani_option interopEnabled {interop.data(), (void *)worker->workerEnv_}; + ani_options aniArgs {1, &interopEnabled}; + auto* aniVm = ANIHelper::GetAniVm(); + if (aniVm == nullptr) { + HILOG_ERROR("taskpool:: aviVm is null."); + return; + } + ani_status status = aniVm->AttachCurrentThread(&aniArgs, ANI_VERSION_1, &worker->aniEnv_); + if (status != ANI_OK || worker->aniEnv_ == nullptr) { + HILOG_ERROR("taskpool:: AttachCurrentThread failed."); + } +} + +void TaskManager::DetachWorkerFromAniVm(Worker* worker) +{ + if (!ANIHelper::IsConcurrencySupportInterop()) { + return; + } + // detach worker from 1.2vm + auto* aniVm = ANIHelper::GetAniVm(); + if (aniVm == nullptr) { + HILOG_ERROR("taskpool:: DetachWorkerFromAniVm aviVm is null."); + return; + } + ani_status status = aniVm->DetachCurrentThread(); + if (status != ANI_OK) { + HILOG_ERROR("taskpool:: DetachCurrentThread failed."); + } + delete worker->aniEnv_; + worker->aniEnv_ = nullptr; +} +#endif + } // namespace Commonlibrary::Concurrent::TaskPoolModule \ No newline at end of file diff --git a/js_concurrent_module/taskpool/task_manager.h b/js_concurrent_module/taskpool/task_manager.h index 2d8eb173..0c6d13d6 100644 --- a/js_concurrent_module/taskpool/task_manager.h +++ b/js_concurrent_module/taskpool/task_manager.h @@ -156,6 +156,10 @@ public: void SetIsPerformIdle(bool performIdle); bool IsPerformIdle() const; + // for taskpool support interop + void AttachWorkerToAniVm(Worker* worker); + void DetachWorkerFromAniVm(Worker* worker); + private: TaskManager(); ~TaskManager(); diff --git a/js_concurrent_module/taskpool/test/BUILD.gn b/js_concurrent_module/taskpool/test/BUILD.gn index 2bbb5248..50a8bd4c 100644 --- a/js_concurrent_module/taskpool/test/BUILD.gn +++ b/js_concurrent_module/taskpool/test/BUILD.gn @@ -56,10 +56,13 @@ ohos_unittest("test_taskpool_unittest") { defines = [ "ENABLE_TASKPOOL_FFRT", "ENABLE_TASKPOOL_HISYSEVENT", + "ENABLE_CONCURRENCY_INTEROP", ] external_deps += [ "ffrt:libffrt", "hisysevent:libhisysevent", + "runtime_core:ani", + "runtime_core:libarkruntime", ] } } diff --git a/js_concurrent_module/taskpool/worker.cpp b/js_concurrent_module/taskpool/worker.cpp index cc1a19b5..2425cdfa 100644 --- a/js_concurrent_module/taskpool/worker.cpp +++ b/js_concurrent_module/taskpool/worker.cpp @@ -102,6 +102,10 @@ void Worker::ReleaseWorkerHandles(const uv_async_t* req) if (loop != nullptr) { uv_stop(loop); } + +#if defined(ENABLE_CONCURRENCY_INTEROP) + TaskManager::GetInstance().DetachWorkerFromAniVm(worker); +#endif } bool Worker::CheckFreeConditions() @@ -226,6 +230,9 @@ void Worker::ExecuteInThread(const void* data) HILOG_ERROR("taskpool:: worker create runtime failed"); return; } +#if defined(ENABLE_CONCURRENCY_INTEROP) + TaskManager::GetInstance().AttachWorkerToAniVm(worker); +#endif auto workerEngine = reinterpret_cast(worker->workerEnv_); // mark worker env is taskpoolThread workerEngine->MarkTaskPoolThread(); diff --git a/js_concurrent_module/taskpool/worker.h b/js_concurrent_module/taskpool/worker.h index 97850b34..51ee15d4 100644 --- a/js_concurrent_module/taskpool/worker.h +++ b/js_concurrent_module/taskpool/worker.h @@ -21,6 +21,9 @@ #if defined(ENABLE_TASKPOOL_FFRT) #include "cpp/task.h" #endif +#if defined(ENABLE_CONCURRENCY_INTEROP) +#include "helper/hybrid_concurrent_helper.h" +#endif #include "helper/concurrent_helper.h" #include "helper/error_helper.h" #include "helper/napi_helper.h" @@ -226,6 +229,9 @@ private: #if defined(ENABLE_TASKPOOL_HISYSEVENT) std::atomic reportCount_ = 0; #endif +#if defined(ENABLE_CONCURRENCY_INTEROP) + ani_env* aniEnv_ = nullptr; +#endif }; } // namespace Commonlibrary::Concurrent::TaskPoolModule #endif // JS_CONCURRENT_MODULE_TASKPOOL_WORKER_H \ No newline at end of file diff --git a/js_concurrent_module/worker/BUILD.gn b/js_concurrent_module/worker/BUILD.gn index 4fe2a072..d4b30002 100644 --- a/js_concurrent_module/worker/BUILD.gn +++ b/js_concurrent_module/worker/BUILD.gn @@ -83,8 +83,16 @@ ohos_shared_library("worker") { } if (is_ohos && is_standard_system && !is_arkui_x) { - defines += [ "ENABLE_WORKER_EVENTHANDLER" ] - external_deps += [ "eventhandler:libeventhandler" ] + defines += [ + "ENABLE_WORKER_EVENTHANDLER", + "ENABLE_CONCURRENCY_INTEROP", + ] + external_deps += [ + "eventhandler:libeventhandler", + "runtime_core:ani", + "runtime_core:libarkruntime", + ] + sources += [ "../common/helper/hybrid_concurrent_helper.cpp" ] } if (is_ohos && is_standard_system && defined(global_parts_info) && @@ -171,8 +179,16 @@ ohos_source_set("worker_static") { } if (is_ohos && is_standard_system && !is_arkui_x) { - defines += [ "ENABLE_WORKER_EVENTHANDLER" ] - external_deps += [ "eventhandler:libeventhandler" ] + defines += [ + "ENABLE_WORKER_EVENTHANDLER", + "ENABLE_CONCURRENCY_INTEROP" + ] + external_deps += [ + "eventhandler:libeventhandler", + "runtime_core:ani", + "runtime_core:libarkruntime", + ] + sources += [ "../common/helper/hybrid_concurrent_helper.cpp" ] } if (is_ohos && is_standard_system && defined(global_parts_info) && diff --git a/js_concurrent_module/worker/test/BUILD.gn b/js_concurrent_module/worker/test/BUILD.gn index b23476f7..fa895ff5 100644 --- a/js_concurrent_module/worker/test/BUILD.gn +++ b/js_concurrent_module/worker/test/BUILD.gn @@ -47,6 +47,14 @@ ohos_unittest("test_worker_unittest") { "libuv:uv", "napi:ace_napi", ] + + if (is_ohos && is_standard_system && !is_arkui_x) { + defines = [ "ENABLE_CONCURRENCY_INTEROP" ] + external_deps += [ + "runtime_core:ani", + "runtime_core:libarkruntime", + ] + } } group("unittest") { diff --git a/js_concurrent_module/worker/worker.cpp b/js_concurrent_module/worker/worker.cpp index b7317e31..c66b4d85 100644 --- a/js_concurrent_module/worker/worker.cpp +++ b/js_concurrent_module/worker/worker.cpp @@ -119,6 +119,12 @@ napi_value Worker::InitWorker(napi_env env, napi_value exports) InitPriorityObject(env, exports); +#if defined(ENABLE_CONCURRENCY_INTEROP) + if (reinterpret_cast(env)->IsMainThread() && ANIHelper::GetAniVm() == nullptr) { + HILOG_INFO("worker:: get aniVm is null in main thread."); + } +#endif + return InitPort(env, exports); } @@ -358,6 +364,13 @@ napi_value Worker::Constructor(napi_env env, napi_callback_info cbinfo, bool lim CloseHelp::DeletePointer(script, true); return nullptr; } + +#if defined(ENABLE_CONCURRENCY_INTEROP) + if (reinterpret_cast(env)->IsMainThread() && ANIHelper::GetAniVm() == nullptr) { + HILOG_ERROR("worker:: get aniVm is null in main thread."); + } +#endif + worker->StartExecuteInThread(env, script); return thisVar; } @@ -1464,6 +1477,11 @@ void Worker::ExecuteInThread(const void* data) worker->EraseWorker(); return; } + +#if defined(ENABLE_CONCURRENCY_INTEROP) + worker->AttachWorkerEnvToAniVm(); +#endif + reinterpret_cast(workerEnv)->RegisterNapiUncaughtExceptionHandler( [workerEnv, worker] (napi_value exception) -> void { if (!NativeEngine::IsAlive(reinterpret_cast(workerEnv))) { @@ -2500,6 +2518,11 @@ void Worker::ReleaseWorkerThreadContent() // 3. clear message send to worker thread workerMessageQueue_.Clear(workerEnv_); workerGlobalCallQueue_.Clear(workerEnv_); + +#if defined(ENABLE_CONCURRENCY_INTEROP) + DetachWorkerFromAniVm(); +#endif + CloseHelp::DeletePointer(reinterpret_cast(workerEnv_), false); workerEnv_ = nullptr; } @@ -2809,4 +2832,44 @@ void Worker::HostOnAllErrorsInner() HandleHostException(); } } + +#if defined(ENABLE_CONCURRENCY_INTEROP) +void Worker::AttachWorkerEnvToAniVm() +{ + if (!ANIHelper::IsConcurrencySupportInterop()) { + return; + } + std::string interop = "--interop=enable"; + ani_option interopEnabled {interop.data(), (void *)workerEnv_}; + ani_options aniArgs {1, &interopEnabled}; + auto* aniVm = ANIHelper::GetAniVm(); + if (aniVm == nullptr) { + HILOG_ERROR("worker:: AttachWorkerEnvToAniVm aviVm is null"); + return; + } + ani_status status = aniVm->AttachCurrentThread(&aniArgs, ANI_VERSION_1, &aniEnv_); + if (status != ANI_OK || aniEnv_ == nullptr) { + HILOG_ERROR("worker:: AttachCurrentThread failed."); + } +} + +void Worker::DetachWorkerFromAniVm() +{ + if (!ANIHelper::IsConcurrencySupportInterop()) { + return; + } + auto* aniVm = ANIHelper::GetAniVm(); + if (aniVm == nullptr) { + HILOG_ERROR("worker:: aviVm is null when DetachWorkerFromAniVm."); + return; + } + ani_status status = aniVm->DetachCurrentThread(); + if (status != ANI_OK) { + HILOG_ERROR("worker:: DetachCurrentThread failed."); + } + delete aniEnv_; + aniEnv_ = nullptr; +} +#endif + } // namespace Commonlibrary::Concurrent::WorkerModule diff --git a/js_concurrent_module/worker/worker.h b/js_concurrent_module/worker/worker.h index d7694500..edfb7af2 100644 --- a/js_concurrent_module/worker/worker.h +++ b/js_concurrent_module/worker/worker.h @@ -21,6 +21,9 @@ #include #include +#if defined(ENABLE_CONCURRENCY_INTEROP) +#include "helper/hybrid_concurrent_helper.h" +#endif #include "helper/napi_helper.h" #include "helper/object_helper.h" #include "message_queue.h" @@ -587,6 +590,9 @@ private: void ClearHostMessage(napi_env env); + void AttachWorkerEnvToAniVm(); + void DetachWorkerFromAniVm(); + #if !defined(WINDOWS_PLATFORM) && !defined(MAC_PLATFORM) static void HandleDebuggerTask(const uv_async_t* req); void DebuggerOnPostTask(std::function&& task); @@ -661,6 +667,10 @@ private: WorkerPriority workerPriority_ = WorkerPriority::INVALID; std::function qosUpdatedCallback_; +#if defined(ENABLE_CONCURRENCY_INTEROP) + ani_env* aniEnv_ = nullptr; +#endif + friend class WorkersTest; }; -- Gitee From ee36e4df1a4cef7a401d473b9e7ce2e9dd5bb2fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=81=A5?= Date: Sat, 2 Aug 2025 10:32:36 +0800 Subject: [PATCH 29/33] =?UTF-8?q?transfer=E5=8A=A8=E9=9D=99=E6=80=81?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=20Signed-off-by:=20=E5=AD=99=E5=81=A5=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base_sdk/transfer/kitRegister/resourceManager.ets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base_sdk/transfer/kitRegister/resourceManager.ets b/base_sdk/transfer/kitRegister/resourceManager.ets index 396f0973..fd4b947e 100644 --- a/base_sdk/transfer/kitRegister/resourceManager.ets +++ b/base_sdk/transfer/kitRegister/resourceManager.ets @@ -15,6 +15,6 @@ import { registerStaticCB, registerDynamicCB } from '../register.ets'; export function registerResourceManager() { - registerStaticCB('LocalizationKit.ResourceManager', '@ohos.resourceManager', 'resourceManager', 'transferStatic'); - registerDynamicCB('LocalizationKit.ResourceManager', '@ohos.resourceManager', 'resourceManager', 'transferDynamic'); + registerStaticCB('LocalizationKit.ResourceManager', '@ohos.resourceManager', 'resourceManager', 'transferToStaticResource'); + registerDynamicCB('LocalizationKit.ResourceManager', '@ohos.resourceManager', 'resourceManager', 'transferToDynamicResource'); } -- Gitee From fa6c16f16c9c1142abc91cfed80a501afd441d95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E6=B5=A9?= Date: Thu, 7 Aug 2025 15:55:20 +0800 Subject: [PATCH 30/33] graphics3d support transfer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 何浩 --- base_sdk/BUILD.gn | 1 + .../transfer/kitRegister/registerMain.ets | 2 ++ base_sdk/transfer/kitRegister/scene3d.ets | 30 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/scene3d.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index 1dde1ca6..7ed1ba71 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -46,6 +46,7 @@ generate_static_abc("base_transfer") { "./transfer/kitRegister/osAccount.ets", "./transfer/kitRegister/rpc.ets", "./transfer/kitRegister/window.ets", + "./transfer/kitRegister/scene3d.ets", ] is_boot_abc = "True" device_dst_file = "/system/framework/base_transfer.abc" diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index e9ea0494..90df262c 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -22,6 +22,7 @@ import { registerArkWeb } from './arkweb.ets'; import { registerCommonEventManager } from './basicServicesKit.ets' import { registerResourceManager } from './resourceManager.ets'; import { registerRpc } from './rpc.ets'; +import { registerScene3D } from './scene3d.ets'; export function registerMain(){ registerArkTS(); @@ -33,4 +34,5 @@ export function registerMain(){ registerCommonEventManager(); registerResourceManager(); registerRpc(); + registerScene3D(); } \ No newline at end of file diff --git a/base_sdk/transfer/kitRegister/scene3d.ets b/base_sdk/transfer/kitRegister/scene3d.ets new file mode 100644 index 00000000..c67ed788 --- /dev/null +++ b/base_sdk/transfer/kitRegister/scene3d.ets @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerScene3D() { + registerStaticCB('ArkGraphics3D.Scene', 'graphics3d.Scene', 'Transfer', 'sceneTransferStatic'); + registerDynamicCB('ArkGraphics3D.Scene', 'graphics3d.Scene', 'Transfer', 'sceneTransferDynamic'); + registerStaticCB('ArkGraphics3D.SceneResourceFactory', 'graphics3d.Scene', 'Transfer', 'sceneResourceFactoryTransferStatic'); + registerDynamicCB('ArkGraphics3D.SceneResourceFactory', 'graphics3d.Scene', 'Transfer', 'sceneResourceFactoryTransferDynamic'); + registerStaticCB('ArkGraphics3D.Camera', 'graphics3d.SceneNodes', 'Transfer', 'cameraTransferStatic'); + registerDynamicCB('ArkGraphics3D.Camera', 'graphics3d.SceneNodes', 'Transfer', 'cameraTransferDynamic'); + registerStaticCB('ArkGraphics3D.Node', 'graphics3d.SceneNodes', 'Transfer', 'nodeTransferStatic'); + registerDynamicCB('ArkGraphics3D.Node', 'graphics3d.SceneNodes', 'Transfer', 'nodeTransferDynamic'); + registerStaticCB('ArkGraphics3D.Animation', 'graphics3d.SceneResources', 'Transfer', 'animationTransferStatic'); + registerDynamicCB('ArkGraphics3D.Animation', 'graphics3d.SceneResources', 'Transfer', 'animationTransferDynamic'); + registerStaticCB('ArkGraphics3D.Environment', 'graphics3d.SceneResources', 'Transfer', 'environmentTransferStatic'); + registerDynamicCB('ArkGraphics3D.Environment', 'graphics3d.SceneResources', 'Transfer', 'environmentTransferDynamic'); +} -- Gitee From 1767c04e76c89053474a3138a2bd38fc45a0fbce Mon Sep 17 00:00:00 2001 From: zhaona45 Date: Fri, 8 Aug 2025 17:01:15 +0800 Subject: [PATCH 31/33] Register imageKit transfer Signed-off-by: zhaona45 Change-Id: Ib491ff6344563aa17f48a0c31438385b83e95f7f --- base_sdk/BUILD.gn | 1 + base_sdk/transfer/kitRegister/imageKit.ets | 35 +++++++++++++++++++ .../transfer/kitRegister/registerMain.ets | 2 ++ 3 files changed, 38 insertions(+) create mode 100644 base_sdk/transfer/kitRegister/imageKit.ets diff --git a/base_sdk/BUILD.gn b/base_sdk/BUILD.gn index 7ed1ba71..4beb4207 100644 --- a/base_sdk/BUILD.gn +++ b/base_sdk/BUILD.gn @@ -47,6 +47,7 @@ generate_static_abc("base_transfer") { "./transfer/kitRegister/rpc.ets", "./transfer/kitRegister/window.ets", "./transfer/kitRegister/scene3d.ets", + "./transfer/kitRegister/imageKit.ets", ] is_boot_abc = "True" device_dst_file = "/system/framework/base_transfer.abc" diff --git a/base_sdk/transfer/kitRegister/imageKit.ets b/base_sdk/transfer/kitRegister/imageKit.ets new file mode 100644 index 00000000..9789dcdb --- /dev/null +++ b/base_sdk/transfer/kitRegister/imageKit.ets @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2025 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 { registerStaticCB, registerDynamicCB } from '../register.ets'; + +export function registerImageKit() { + registerStaticCB('ImageKit.ImageSource', '@ohos.multimedia.image', 'image', 'imageSourceTransferStatic'); + registerDynamicCB('ImageKit.ImageSource', '@ohos.multimedia.image', 'image', 'imageSourceTransferDynamic'); + + registerStaticCB('ImageKit.ImagePacker', '@ohos.multimedia.image', 'image', 'imagePackerTransferStatic'); + registerDynamicCB('ImageKit.ImagePacker', '@ohos.multimedia.image', 'image', 'imagePackerTransferDynamic'); + + registerStaticCB('ImageKit.Picture', '@ohos.multimedia.image', 'image', 'pictureTransferStatic'); + registerDynamicCB('ImageKit.Picture', '@ohos.multimedia.image', 'image', 'pictureTransferDynamic'); + + registerStaticCB('ImageKit.AuxiliaryPicture', '@ohos.multimedia.image', 'image', 'auxiliaryPictureTransferStatic'); + registerDynamicCB('ImageKit.AuxiliaryPicture', '@ohos.multimedia.image', 'image', 'auxiliaryPictureTransferDynamic'); + + registerStaticCB('ImageKit.ImageReceiver', '@ohos.multimedia.image', 'image', 'imageReceiverTransferStatic'); + registerDynamicCB('ImageKit.ImageReceiver', '@ohos.multimedia.image', 'image', 'imageReceiverTransferDynamic'); + + registerStaticCB('ImageKit.ImageCreator', '@ohos.multimedia.image', 'image', 'imageCreatorTransferStatic'); + registerDynamicCB('ImageKit.ImageCreator', '@ohos.multimedia.image', 'image', 'imageCreatorTransferDynamic'); +} diff --git a/base_sdk/transfer/kitRegister/registerMain.ets b/base_sdk/transfer/kitRegister/registerMain.ets index 90df262c..66a39d9f 100644 --- a/base_sdk/transfer/kitRegister/registerMain.ets +++ b/base_sdk/transfer/kitRegister/registerMain.ets @@ -23,6 +23,7 @@ import { registerCommonEventManager } from './basicServicesKit.ets' import { registerResourceManager } from './resourceManager.ets'; import { registerRpc } from './rpc.ets'; import { registerScene3D } from './scene3d.ets'; +import { registerImageKit } from './imageKit.ets'; export function registerMain(){ registerArkTS(); @@ -35,4 +36,5 @@ export function registerMain(){ registerResourceManager(); registerRpc(); registerScene3D(); + registerImageKit(); } \ No newline at end of file -- Gitee From 499fc4602a068ab9cd269d3a34777e3192ffcd48 Mon Sep 17 00:00:00 2001 From: wangzilin Date: Sat, 9 Aug 2025 11:43:31 +0800 Subject: [PATCH 32/33] transfer window class Signed-off-by: wangzilin --- base_sdk/transfer/kitRegister/window.ets | 2 ++ 1 file changed, 2 insertions(+) diff --git a/base_sdk/transfer/kitRegister/window.ets b/base_sdk/transfer/kitRegister/window.ets index 8378648f..55e42e87 100644 --- a/base_sdk/transfer/kitRegister/window.ets +++ b/base_sdk/transfer/kitRegister/window.ets @@ -17,4 +17,6 @@ import { registerStaticCB, registerDynamicCB } from '../register.ets'; export function registerWindow() { registerStaticCB('window.WindowStage', '@ohos.window', 'window.WindowStageInternal', 'transferStatic'); registerDynamicCB('window.WindowStage', '@ohos.window', 'window.WindowStageInternal', 'transferDynamic'); + registerStaticCB('window.Window', '@ohos.window', 'window.WindowInternal', 'transferStatic'); + registerDynamicCB('window.Window', '@ohos.window', 'window.WindowInternal', 'transferDynamic'); } -- Gitee From 41f63a5acc60a32680decdc24c0cc9f915b51349 Mon Sep 17 00:00:00 2001 From: zhangyao Date: Sat, 9 Aug 2025 19:26:36 +0800 Subject: [PATCH 33/33] Description: MediaTransfer IssueNo:https://gitee.com/openharmony/web_webview/issues/ICS6Q3 Feature or Bugfix: Feature Binary Source:No Signed-off-by: zhangyao --- base_sdk/transfer/kitRegister/arkweb.ets | 3 +++ 1 file changed, 3 insertions(+) diff --git a/base_sdk/transfer/kitRegister/arkweb.ets b/base_sdk/transfer/kitRegister/arkweb.ets index 09c148c6..2339b280 100644 --- a/base_sdk/transfer/kitRegister/arkweb.ets +++ b/base_sdk/transfer/kitRegister/arkweb.ets @@ -74,4 +74,7 @@ export function registerArkWeb() { registerStaticCB('ArkWeb.WebMessagePort', '@ohos.web.webview', 'webview.WebMessagePortInner', 'transferWebMessagePortToStatic'); registerDynamicCB('ArkWeb.WebMessagePort', '@ohos.web.webview', 'webview.WebMessagePortInner', 'transferWebMessagePortToDynamic'); + + registerStaticCB('ArkWeb.NativeMediaPlayerHandler', '@ohos.web.webview', 'webview.NativeMediaPlayerHandlerinner', 'transferNativeMediaPlayerHandlerToStatic'); + registerDynamicCB('ArkWeb.NativeMediaPlayerHandler', '@ohos.web.webview', 'webview.NativeMediaPlayerHandlerinner', 'transferNativeMediaPlayerHandlerToDynamic'); } -- Gitee