diff --git a/frameworks/native/ability/native/BUILD.gn b/frameworks/native/ability/native/BUILD.gn index daafb4b1ac5cb59d5fa2a3c593dd079ad4d302ac..805b9856967948ed1a569f9aa10ef36caa2031cd 100644 --- a/frameworks/native/ability/native/BUILD.gn +++ b/frameworks/native/ability/native/BUILD.gn @@ -302,6 +302,7 @@ ohos_shared_library("abilitykit_native") { public_configs = [ ":ability_public_config", "${ability_runtime_native_path}/ability:ability_context_public_config", + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config", "${ability_runtime_innerkits_path}/wantagent:wantagent_innerkits_public_config", ] diff --git a/interfaces/inner_api/ability_manager/BUILD.gn b/interfaces/inner_api/ability_manager/BUILD.gn index 0c0c0c6e71d4461e463cde9b0e2eadeb85344e7c..caf2c54e7127a11ce0bc0eaaaca213d988c0e551 100644 --- a/interfaces/inner_api/ability_manager/BUILD.gn +++ b/interfaces/inner_api/ability_manager/BUILD.gn @@ -11,8 +11,28 @@ # See the License for the specific language governing permissions and # limitations under the License. +import("//build/config/components/idl_tool/idl.gni") import("//build/ohos.gni") import("//foundation/ability/ability_runtime/ability_runtime.gni") +idl_gen_interface("ability_manager_interface") { + sources = [ + "idl/ISystemAbilityTokenCallback.idl", + ] + sources_common = [ + + ] + log_domainid = "0xD001336" + log_tag = "AbilityMgr" + subsystem_name = "ability" + part_name = "ability_runtime" +} + +config("ability_manager_idl_config") { + include_dirs = [ + "${ability_runtime_innerkits_path}/dataobs_manager/include", + "${target_gen_dir}", + ] +} config("ability_manager_public_config") { visibility = [ ":*" ] @@ -39,6 +59,7 @@ config("ability_manager_public_config") { "${ability_runtime_path}/interfaces/kits/native/appkit/dfr", "${ability_runtime_path}/interfaces/kits/native/appkit", "${ability_runtime_innerkits_path}/dataobs_manager/include", + "${target_gen_dir}", ] defines = [] @@ -61,10 +82,166 @@ config("ability_manager_public_config") { } } +ohos_source_set("ability_manager_proxy") { + sanitize = { + integer_overflow = true + ubsan = true + boundary_sanitize = true + cfi = true + cfi_cross_dso = true + cfi_vcall_icall_only = true + debug = false + } + + output_values = get_target_outputs(":ability_manager_interface") + source_values = [ + "*system_ability_token_callback_proxy.cpp.cpp", + ] + sources = filter_include(output_values, source_values) + + public_configs = [ + ":ability_manager_idl_config", + "${ability_runtime_services_path}/abilitymgr:abilityms_config", + ] + + public_deps = [ ":ability_connect_callback_stub" ] + + deps = [ + ":ability_manager_interface", + ":ability_start_options", + ":ability_start_setting", + ":mission_info", + ":process_options", + ":start_window_option", + "${ability_runtime_innerkits_path}/app_manager:app_manager", + "${ability_runtime_path}/utils/global/freeze:freeze_util", + "${ability_runtime_services_path}/abilitymgr:wantagent_manager", + ] + + external_deps = [ + "bundle_framework:libappexecfwk_common", + "c_utils:utils", + "common_event_service:cesfwk_innerkits", + "eventhandler:libeventhandler", + "hilog:libhilog", + "hisysevent:libhisysevent", + "hitrace:hitrace_meter", + "ipc:ipc_core", + "ipc:ipc_napi", + "jsoncpp:jsoncpp", + "relational_store:native_dataability", + "samgr:samgr_proxy", + ] + + if (host_cpu != "arm64") { + external_deps += [ "relational_store:native_rdb" ] + } + + public_external_deps = [ + "ability_base:base", + "ability_base:configuration", + "ability_base:session_info", + "ability_base:want", + "ability_base:zuri", + "background_task_mgr:bgtaskmgr_innerkits", + "bundle_framework:appexecfwk_base", + "bundle_framework:appexecfwk_core", + "init:libbegetutil", + "jsoncpp:jsoncpp", + "relational_store:native_dataability", + "relational_store:native_rdb", + ] + + subsystem_name = "ability" + part_name = "ability_runtime" +} + +ohos_source_set("ability_manager_stub") { + sanitize = { + integer_overflow = true + ubsan = true + boundary_sanitize = true + cfi = true + cfi_cross_dso = true + cfi_vcall_icall_only = true + debug = false + } + + output_values = get_target_outputs(":ability_manager_interface") + source_values = [ + "*system_ability_token_callback_stub.cpp", + ] + sources = filter_include(output_values, source_values) + + public_configs = [ + ":ability_manager_idl_config", + "${ability_runtime_services_path}/abilitymgr:abilityms_config", + ] + + public_deps = [ ":ability_connect_callback_stub" ] + + deps = [ + ":ability_manager_interface", + ":ability_start_options", + ":ability_start_setting", + ":mission_info", + ":process_options", + ":start_window_option", + "${ability_runtime_innerkits_path}/app_manager:app_manager", + "${ability_runtime_path}/utils/global/freeze:freeze_util", + "${ability_runtime_services_path}/abilitymgr:wantagent_manager", + ] + + external_deps = [ + "bundle_framework:libappexecfwk_common", + "c_utils:utils", + "common_event_service:cesfwk_innerkits", + "eventhandler:libeventhandler", + "hilog:libhilog", + "hisysevent:libhisysevent", + "hitrace:hitrace_meter", + "ipc:ipc_core", + "ipc:ipc_napi", + "jsoncpp:jsoncpp", + "relational_store:native_dataability", + "samgr:samgr_proxy", + ] + + if (host_cpu != "arm64") { + external_deps += [ "relational_store:native_rdb" ] + } + + public_external_deps = [ + "ability_base:base", + "ability_base:configuration", + "ability_base:session_info", + "ability_base:want", + "ability_base:zuri", + "background_task_mgr:bgtaskmgr_innerkits", + "bundle_framework:appexecfwk_base", + "bundle_framework:appexecfwk_core", + "init:libbegetutil", + "jsoncpp:jsoncpp", + "relational_store:native_dataability", + "relational_store:native_rdb", + ] + + subsystem_name = "ability" + part_name = "ability_runtime" +} + ohos_shared_library("ability_manager") { + sanitize = { + integer_overflow = true + ubsan = true + boundary_sanitize = true + cfi = true + cfi_cross_dso = true + cfi_vcall_icall_only = true + debug = false + } use_exceptions = true branch_protector_ret = "pac_ret" - sources = [ "${ability_runtime_native_path}/ability/native/data_ability_operation.cpp", "${ability_runtime_native_path}/ability/native/data_ability_operation_builder.cpp", @@ -100,7 +277,6 @@ ohos_shared_library("ability_manager") { "${ability_runtime_services_path}/abilitymgr/src/remote_mission_listener_stub.cpp", "${ability_runtime_services_path}/abilitymgr/src/remote_on_listener_proxy.cpp", "${ability_runtime_services_path}/abilitymgr/src/remote_on_listener_stub.cpp", - "${ability_runtime_services_path}/abilitymgr/src/system_ability_token_callback_stub.cpp", "${ability_runtime_services_path}/abilitymgr/src/ui_extension/ui_extension_ability_connect_info.cpp", "${ability_runtime_services_path}/abilitymgr/src/ui_extension/ui_extension_host_info.cpp", "${ability_runtime_services_path}/abilitymgr/src/ui_extension/ui_extension_session_info.cpp", @@ -125,12 +301,15 @@ ohos_shared_library("ability_manager") { public_configs = [ ":ability_manager_public_config", + ":ability_manager_idl_config", "${ability_runtime_services_path}/abilitymgr:abilityms_config", ] public_deps = [ ":ability_connect_callback_stub" ] deps = [ + ":ability_manager_proxy", + ":ability_manager_stub", ":ability_start_options", ":ability_start_setting", ":mission_info", @@ -300,7 +479,10 @@ ohos_shared_library("ability_start_setting") { "${ability_runtime_services_path}/abilitymgr/src/ability_start_setting.cpp", ] - public_configs = [ ":ability_manager_public_config" ] + public_configs = [ + ":ability_manager_public_config", + "${ability_runtime_path}/utils/server/startup:startup_util_config", + ] external_deps = [ "c_utils:utils" ] public_external_deps = [ @@ -405,7 +587,11 @@ ohos_shared_library("ability_connect_callback_stub") { sources = [ "${ability_runtime_services_path}/abilitymgr/src/ability_connect_callback_stub.cpp" ] - public_configs = [ ":ability_manager_public_config" ] + public_configs = [ + ":ability_manager_public_config", + ":ability_manager_idl_config", + "${ability_runtime_path}/utils/server/startup:startup_util_config", + ] external_deps = [ "c_utils:utils", diff --git a/interfaces/inner_api/ability_manager/include/system_ability_token_callback_stub.h b/interfaces/inner_api/ability_manager/idl/ISystemAbilityTokenCallback.idl similarity index 41% rename from interfaces/inner_api/ability_manager/include/system_ability_token_callback_stub.h rename to interfaces/inner_api/ability_manager/idl/ISystemAbilityTokenCallback.idl index ed230fdf38d4e7a8fdb307cde7cadf6edcbd96fa..9836ce1221263c5bb0bffc36b2fd3976ba58dd69 100644 --- a/interfaces/inner_api/ability_manager/include/system_ability_token_callback_stub.h +++ b/interfaces/inner_api/ability_manager/idl/ISystemAbilityTokenCallback.idl @@ -1,36 +1,20 @@ -/* - * Copyright (c) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OHOS_ABILITY_RUNTIME_SYSTEM_ABILITY_TOKEN_CALLBACK_STUB_H -#define OHOS_ABILITY_RUNTIME_SYSTEM_ABILITY_TOKEN_CALLBACK_STUB_H - -#include "iremote_object.h" -#include "iremote_stub.h" -#include "system_ability_token_callback.h" - -namespace OHOS { -namespace AAFwk { -class SystemAbilityTokenCallbackStub : public IRemoteStub { -public: - SystemAbilityTokenCallbackStub() = default; - ~SystemAbilityTokenCallbackStub() = default; - - int32_t OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override; -private: - DISALLOW_COPY_AND_MOVE(SystemAbilityTokenCallbackStub); -}; -} // namespace AAFwk -} // namespace OHOS -#endif // OHOS_ABILITY_RUNTIME_SYSTEM_ABILITY_TOKEN_CALLBACK_STUB_H +/* + * 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. + */ +sequenceable OHOS.AAFwk.Want; + +interface OHOS.AAFwk.ISystemAbilityTokenCallback { + int SendResult([in] Want want, [in] int callerUid, [in] int requestCode, + [in] unsigned int accessToken, [in] int resultCode); +} \ No newline at end of file diff --git a/interfaces/inner_api/ability_manager/include/system_ability_token_callback.h b/interfaces/inner_api/ability_manager/include/system_ability_token_callback.h deleted file mode 100644 index b1d7eedaf85241819d5daebb5319f8a65ec48add..0000000000000000000000000000000000000000 --- a/interfaces/inner_api/ability_manager/include/system_ability_token_callback.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2022 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OHOS_ABILITY_RUNTIME_SYSTEM_ABILITY_TOKEN_CALLBACK_H -#define OHOS_ABILITY_RUNTIME_SYSTEM_ABILITY_TOKEN_CALLBACK_H - -#include "iremote_broker.h" -#include "iremote_object.h" -#include "want.h" - -namespace OHOS { -namespace AAFwk { -class ISystemAbilityTokenCallback : public OHOS::IRemoteBroker { -public: - DECLARE_INTERFACE_DESCRIPTOR(u"ohos.aafwk.ISystemAbilityTokenCallback"); - - /** - * @brief When the remote device send result back to system ability, AbilityMs notify the listener. - * - * @param want, want of caller. - * @param callerUid, uid of caller. - * @param deviceId, requestCode of caller. - * @param deviceId, accessToken of caller . - * @param deviceId, resultCode of caller. - */ - virtual int32_t SendResult(OHOS::AAFwk::Want& want, int32_t callerUid, int32_t requestCode, - uint32_t accessToken, int32_t resultCode) = 0; - - enum { - SEND_RESULT = 1, - }; -}; -} // namespace AAFwk -} // namespace OHOS -#endif // OHOS_ABILITY_RUNTIME_SYSTEM_ABILITY_TOKEN_CALLBACK_H diff --git a/interfaces/inner_api/app_manager/BUILD.gn b/interfaces/inner_api/app_manager/BUILD.gn index 99c5ec887c546bf0f622b0218d8e4253a822c75d..519daf4f1abf8b2b6752fadc80ddc9606431b138 100644 --- a/interfaces/inner_api/app_manager/BUILD.gn +++ b/interfaces/inner_api/app_manager/BUILD.gn @@ -126,6 +126,7 @@ ohos_shared_library("app_manager") { public_configs = [ ":appmgr_core_config", ":appmgr_sdk_config", + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config", ] defines = [ "AMS_LOG_TAG = \"AppexecfwkCore\"" ] diff --git a/interfaces/inner_api/extension_manager/BUILD.gn b/interfaces/inner_api/extension_manager/BUILD.gn index 2a0d85fb821d0fcbf9b261e096a6474f40bd6026..a9e78090dc0dc3f2454aa076fac9ba89b190111f 100755 --- a/interfaces/inner_api/extension_manager/BUILD.gn +++ b/interfaces/inner_api/extension_manager/BUILD.gn @@ -44,7 +44,10 @@ ohos_shared_library("extension_manager") { ] configs = [ ":extension_manager_config" ] - public_configs = [ ":extension_manager_public_config" ] + public_configs = [ + ":extension_manager_public_config", + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config", + ] public_deps = [ "${ability_runtime_innerkits_path}/ability_manager:ability_connect_callback_stub" ] diff --git a/interfaces/inner_api/wantagent/BUILD.gn b/interfaces/inner_api/wantagent/BUILD.gn index a9f3008821ce8144f55e241721e9ab01b90077d1..b501ae1fe0a67e41407234c01f4f31a879192518 100644 --- a/interfaces/inner_api/wantagent/BUILD.gn +++ b/interfaces/inner_api/wantagent/BUILD.gn @@ -64,7 +64,10 @@ ohos_shared_library("wantagent_innerkits") { "src/want_agent_info.cpp", ] - public_configs = [ ":wantagent_innerkits_public_config" ] + public_configs = [ + ":wantagent_innerkits_public_config", + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config", + ] deps = [ "${ability_runtime_innerkits_path}/ability_manager:ability_start_options", diff --git a/services/abilitymgr/BUILD.gn b/services/abilitymgr/BUILD.gn index af8b5ab776e4cd7ae6d4871348f1cf10fc7f9e1a..f2d01449f5926746ed8c9696af2b90839e11fced 100644 --- a/services/abilitymgr/BUILD.gn +++ b/services/abilitymgr/BUILD.gn @@ -119,6 +119,7 @@ ohos_shared_library("abilityms") { configs = [ ":abilityms_config", ":abilityms_exception_config", + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config", ] include_dirs = [ "${ability_runtime_services_path}/appdfr/include", @@ -307,6 +308,8 @@ ohos_shared_library("wantagent_manager") { "${ability_runtime_innerkits_path}/error_utils:ability_runtime_error_util", ] + configs = [ "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config" ] + external_deps = [ "ability_base:want", "c_utils:utils", @@ -416,6 +419,8 @@ ohos_shared_library("mission_list") { "src/task_data_persistence_mgr.cpp", ] + configs = [ "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config" ] + deps = [ ":abilityms", "${ability_runtime_innerkits_path}/ability_manager:ability_manager", diff --git a/services/abilitymgr/src/ability_record.cpp b/services/abilitymgr/src/ability_record.cpp index 29664d57d0ab76fd27bb7b51113002e5a8ce5694..f3d9afde1122feda08c16ff307c343f38d2a973d 100644 --- a/services/abilitymgr/src/ability_record.cpp +++ b/services/abilitymgr/src/ability_record.cpp @@ -41,7 +41,7 @@ #include "res_sched_util.h" #include "scene_board_judgement.h" #include "startup_util.h" -#include "system_ability_token_callback.h" +#include "isystem_ability_token_callback.h" #include "ui_extension_utils.h" #ifdef SUPPORT_UPMS #include "uri_permission_manager_client.h" @@ -73,7 +73,7 @@ const std::string DMS_PROCESS_NAME = "distributedsched"; const std::string DMS_MISSION_ID = "dmsMissionId"; const std::string DMS_SRC_NETWORK_ID = "dmsSrcNetworkId"; const std::string ABILITY_OWNER_USERID = "AbilityMS_Owner_UserId"; -const std::u16string SYSTEM_ABILITY_TOKEN_CALLBACK = u"ohos.aafwk.ISystemAbilityTokenCallback"; +const std::u16string SYSTEM_ABILITY_TOKEN_CALLBACK = u"OHOS.AAFwk.ISystemAbilityTokenCallback"; const std::string SHOW_ON_LOCK_SCREEN = "ShowOnLockScreen"; #ifdef WITH_DLP const std::string DLP_BUNDLE_NAME = "com.ohos.dlpmanager"; @@ -2082,7 +2082,6 @@ void SystemAbilityCallerRecord::SendResultToSystemAbility(int requestCode, callerUid = IPCSkeleton::GetCallingUid(); accessToken = IPCSkeleton::GetCallingTokenID(); } - TAG_LOGI(AAFwkTag::ABILITYMGR, "Try to SendResult"); if (callerToken == nullptr) { TAG_LOGE(AAFwkTag::ABILITYMGR, "null callerToken"); return; @@ -2114,7 +2113,8 @@ void SystemAbilityCallerRecord::SendResultToSystemAbility(int requestCode, } MessageParcel reply; MessageOption option(MessageOption::TF_SYNC); - int result = callerToken->SendRequest(ISystemAbilityTokenCallback::SEND_RESULT, data, reply, option); + int result = callerToken->SendRequest( + static_cast(ISystemAbilityTokenCallbackIpcCode::COMMAND_SEND_RESULT), data, reply, option); if (result != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "error: %{public}d", result); } diff --git a/services/abilitymgr/src/system_ability_token_callback_stub.cpp b/services/abilitymgr/src/system_ability_token_callback_stub.cpp deleted file mode 100644 index 31359605389b844a1d59141015ca2c6b439dd48d..0000000000000000000000000000000000000000 --- a/services/abilitymgr/src/system_ability_token_callback_stub.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2022-2024 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 "system_ability_token_callback_stub.h" - -#include "hilog_tag_wrapper.h" - -namespace OHOS { -namespace AAFwk { -namespace { -const std::u16string SYSTEM_ABILITY_TOKEN_CALLBACK_INTERFACE_TOKEN = u"ohos.aafwk.ISystemAbilityTokenCallback"; -} -int32_t SystemAbilityTokenCallbackStub::OnRemoteRequest(uint32_t code, - MessageParcel &data, MessageParcel &reply, MessageOption &option) -{ - if (data.ReadInterfaceToken() != SYSTEM_ABILITY_TOKEN_CALLBACK_INTERFACE_TOKEN) { - TAG_LOGE(AAFwkTag::ABILITYMGR, "OnRemoteRequest::ReadInterfaceToken error"); - return ERR_PERMISSION_DENIED; - } - switch (code) { - case SEND_RESULT: { - std::shared_ptr want(data.ReadParcelable()); - if (want == nullptr) { - TAG_LOGE(AAFwkTag::ABILITYMGR, "SEND_RESULT want readParcelable failed"); - return ERR_NULL_OBJECT; - } - int32_t callerUid = data.ReadInt32(); - int32_t requestCode = data.ReadInt32(); - uint32_t accessToken = data.ReadUint32(); - int32_t resultCode = data.ReadInt32(); - return SendResult(*want, callerUid, requestCode, accessToken, resultCode); - } - default: { - return IPCObjectStub::OnRemoteRequest(code, data, reply, option); - } - } -} -} // namespace AAFwk -} // namespace OHOS diff --git a/services/appmgr/BUILD.gn b/services/appmgr/BUILD.gn index ade83eb7a01b176365192a96036d9f218c33b6cb..b5d9da775e38efdf907fe810e0260b34b1931ad4 100644 --- a/services/appmgr/BUILD.gn +++ b/services/appmgr/BUILD.gn @@ -99,7 +99,10 @@ ohos_shared_library("libappms") { defines += [ "ABILITY_PLATFORM_CHECK_PERMISSION" ] } - configs = [ ":appmgr_config" ] + configs = [ + ":appmgr_config", + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config", + ] cflags = [] if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] diff --git a/test/fuzztest/systemabilitytokencallbackstub_fuzzer/systemabilitytokencallbackstub_fuzzer.cpp b/test/fuzztest/systemabilitytokencallbackstub_fuzzer/systemabilitytokencallbackstub_fuzzer.cpp index d8e8db3cfccb5462f8c1b3461ff6981ad6077918..cfa662bc0bad349297fa8c92a11569f93a067851 100644 --- a/test/fuzztest/systemabilitytokencallbackstub_fuzzer/systemabilitytokencallbackstub_fuzzer.cpp +++ b/test/fuzztest/systemabilitytokencallbackstub_fuzzer/systemabilitytokencallbackstub_fuzzer.cpp @@ -27,7 +27,7 @@ using namespace OHOS::AAFwk; namespace OHOS { namespace { constexpr size_t U32_AT_SIZE = 4; -const std::u16string ABILITYMGR_INTERFACE_TOKEN = u"ohos.aafwk.ISystemAbilityTokenCallback"; +const std::u16string ABILITYMGR_INTERFACE_TOKEN = u"OHOS.AAFwk.ISystemAbilityTokenCallback"; } class SystemAbilityTokenCallbackStubFuzzTest : public SystemAbilityTokenCallbackStub { @@ -35,10 +35,11 @@ public: SystemAbilityTokenCallbackStubFuzzTest() = default; virtual ~SystemAbilityTokenCallbackStubFuzzTest() {} - int32_t SendResult(OHOS::AAFwk::Want& want, int32_t callerUid, int32_t requestCode, - uint32_t accessToken, int32_t resultCode) override + ErrCode SendResult( + const Want& want, int32_t callerUid, int32_t requestCode, + uint32_t accessToken, int32_t resultCode, int32_t& funcResult) { - return 0; + return ERR_OK; } }; diff --git a/test/unittest/ability_manager_service_thirteenth_test/mock/src/mock_ability_record.cpp b/test/unittest/ability_manager_service_thirteenth_test/mock/src/mock_ability_record.cpp index 64eef0fb446d0fc9be7974e49dddb795e0923a80..d5cb0ca968c78222861b1cbc532d9c228b8873f8 100644 --- a/test/unittest/ability_manager_service_thirteenth_test/mock/src/mock_ability_record.cpp +++ b/test/unittest/ability_manager_service_thirteenth_test/mock/src/mock_ability_record.cpp @@ -40,7 +40,7 @@ #include "res_sched_util.h" #include "scene_board_judgement.h" #include "startup_util.h" -#include "system_ability_token_callback.h" +#include "isystem_ability_token_callback.h" #include "ui_extension_utils.h" #ifdef SUPPORT_UPMS #include "uri_permission_manager_client.h" @@ -75,7 +75,7 @@ const std::string DMS_PROCESS_NAME = "distributedsched"; const std::string DMS_MISSION_ID = "dmsMissionId"; const std::string DMS_SRC_NETWORK_ID = "dmsSrcNetworkId"; const std::string ABILITY_OWNER_USERID = "AbilityMS_Owner_UserId"; -const std::u16string SYSTEM_ABILITY_TOKEN_CALLBACK = u"ohos.aafwk.ISystemAbilityTokenCallback"; +const std::u16string SYSTEM_ABILITY_TOKEN_CALLBACK = u"OHOS.AAFwk.ISystemAbilityTokenCallback"; const std::string SHOW_ON_LOCK_SCREEN = "ShowOnLockScreen"; #ifdef WITH_DLP const std::string DLP_BUNDLE_NAME = "com.ohos.dlpmanager"; @@ -950,7 +950,6 @@ void SystemAbilityCallerRecord::SendResultToSystemAbility(int requestCode, callerUid = IPCSkeleton::GetCallingUid(); accessToken = IPCSkeleton::GetCallingTokenID(); } - TAG_LOGI(AAFwkTag::ABILITYMGR, "Try to SendResult"); if (callerToken == nullptr) { TAG_LOGE(AAFwkTag::ABILITYMGR, "null callerToken"); return; @@ -982,7 +981,8 @@ void SystemAbilityCallerRecord::SendResultToSystemAbility(int requestCode, } MessageParcel reply; MessageOption option(MessageOption::TF_SYNC); - int result = callerToken->SendRequest(ISystemAbilityTokenCallback::SEND_RESULT, data, reply, option); + int result = callerToken->SendRequest( + static_cast(ISystemAbilityTokenCallbackIpcCode::COMMAND_SEND_RESULT), data, reply, option); if (result != ERR_OK) { TAG_LOGE(AAFwkTag::ABILITYMGR, "error: %{public}d", result); } diff --git a/test/unittest/system_ability_token_callback_stub_test/BUILD.gn b/test/unittest/system_ability_token_callback_stub_test/BUILD.gn index 3abba1b25aa2037abeccf05ad60dffd5da386149..50bff60d20b227656ea71f4532d4c621fab59aa6 100644 --- a/test/unittest/system_ability_token_callback_stub_test/BUILD.gn +++ b/test/unittest/system_ability_token_callback_stub_test/BUILD.gn @@ -22,17 +22,20 @@ ohos_unittest("system_ability_token_callback_stub_test") { include_dirs = [] sources = [ - "${ability_runtime_services_path}/abilitymgr/src/system_ability_token_callback_stub.cpp", "system_ability_token_callback_stub_test.cpp", ] - configs = [ "${ability_runtime_services_path}/abilitymgr:abilityms_config" ] + configs = [ + "${ability_runtime_services_path}/abilitymgr:abilityms_config", + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config", + ] cflags = [] if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] } deps = [ "${ability_runtime_innerkits_path}/ability_manager:ability_manager", + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_stub", "${ability_runtime_native_path}/ability/native:abilitykit_native", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:perm_verification", diff --git a/test/unittest/system_ability_token_callback_stub_test/mock_system_ability_token_callback_stub.h b/test/unittest/system_ability_token_callback_stub_test/mock_system_ability_token_callback_stub.h index 904d2e9cc5ba7358ca31dc23d60fa9ce2eae3e1a..da83490ae02883571895327aa040903bb2386c1a 100644 --- a/test/unittest/system_ability_token_callback_stub_test/mock_system_ability_token_callback_stub.h +++ b/test/unittest/system_ability_token_callback_stub_test/mock_system_ability_token_callback_stub.h @@ -26,8 +26,8 @@ public: MockSystemAbilityTokenCallbackStub() = default; virtual ~MockSystemAbilityTokenCallbackStub() = default; - MOCK_METHOD5(SendResult, int32_t(OHOS::AAFwk::Want& want, int32_t callerUid, int32_t requestCode, - uint32_t accessToken, int32_t resultCode)); + MOCK_METHOD6(SendResult, ErrCode(const Want& want, int32_t callerUid, int32_t requestCode, + uint32_t accessToken, int32_t resultCode, int32_t& funcResult)); }; } // namespace AAFwk } // namespace OHOS diff --git a/test/unittest/system_ability_token_callback_stub_test/system_ability_token_callback_stub_test.cpp b/test/unittest/system_ability_token_callback_stub_test/system_ability_token_callback_stub_test.cpp index 0da364715921c2160fb0f8138134e326016eb028..3c0ca4680da1bb202715a93c146fc74b6c609544 100644 --- a/test/unittest/system_ability_token_callback_stub_test/system_ability_token_callback_stub_test.cpp +++ b/test/unittest/system_ability_token_callback_stub_test/system_ability_token_callback_stub_test.cpp @@ -23,7 +23,7 @@ using namespace testing; namespace OHOS { namespace AAFwk { namespace { -const std::u16string SYSTEM_ABILITY_TOKEN_CALLBACK_INTERFACE_TOKEN = u"ohos.aafwk.ISystemAbilityTokenCallback"; +const std::u16string SYSTEM_ABILITY_TOKEN_CALLBACK_INTERFACE_TOKEN = u"OHOS.AAFwk.ISystemAbilityTokenCallback"; } class SystemAbilityTokenCallbackStubTest : public testing::Test { @@ -85,7 +85,8 @@ HWTEST_F(SystemAbilityTokenCallbackStubTest, SystemAbilityTokenCallbackStubTest_ MessageParcel data; MessageParcel reply; MessageOption option; - int res = stub_->OnRemoteRequest(ISystemAbilityTokenCallback::SEND_RESULT, data, reply, option); + int res = stub_->OnRemoteRequest( + static_cast(ISystemAbilityTokenCallbackIpcCode::COMMAND_SEND_RESULT), data, reply, option); EXPECT_EQ(res, ERR_PERMISSION_DENIED); } @@ -105,9 +106,10 @@ HWTEST_F(SystemAbilityTokenCallbackStubTest, SystemAbilityTokenCallbackStubTest_ MessageOption option; WriteInterfaceToken(data); data.WriteParcelable(nullptr); - int res = stub_->OnRemoteRequest(ISystemAbilityTokenCallback::SEND_RESULT, data, reply, option); + int res = stub_->OnRemoteRequest( + static_cast(ISystemAbilityTokenCallbackIpcCode::COMMAND_SEND_RESULT), data, reply, option); - EXPECT_EQ(res, ERR_NULL_OBJECT); + EXPECT_EQ(res, ERR_INVALID_DATA); } /* @@ -126,8 +128,9 @@ HWTEST_F(SystemAbilityTokenCallbackStubTest, SystemAbilityTokenCallbackStubTest_ Want want; WriteInterfaceToken(data); data.WriteParcelable(&want); - EXPECT_CALL(*stub_, SendResult(_, _, _, _, _)).Times(1).WillOnce(Return(0)); - int res = stub_->OnRemoteRequest(ISystemAbilityTokenCallback::SEND_RESULT, data, reply, option); + EXPECT_CALL(*stub_, SendResult(_, _, _, _, _, _)).Times(1).WillOnce(Return(0)); + int res = stub_->OnRemoteRequest( + static_cast(ISystemAbilityTokenCallbackIpcCode::COMMAND_SEND_RESULT), data, reply, option); EXPECT_EQ(res, NO_ERROR); } diff --git a/test/unittest/ui_extension_context_test/BUILD.gn b/test/unittest/ui_extension_context_test/BUILD.gn index 29c903dc6cd04b61200be528ea670e2cc5ea6bcc..b79abe1726a0c1b0fb2ee4cf6a6f66d1c78e3738 100644 --- a/test/unittest/ui_extension_context_test/BUILD.gn +++ b/test/unittest/ui_extension_context_test/BUILD.gn @@ -40,6 +40,7 @@ ohos_unittest("ui_extension_context_test") { "${ability_runtime_native_path}/ability/native:ui_extension", "${ability_runtime_native_path}/appkit:app_context", "${ability_runtime_native_path}/appkit:appkit_native", + "${ability_runtime_native_path}/ability:ability_context_native", ] external_deps = [ diff --git a/test/unittest/ui_extension_context_test/ui_extension_context_test.cpp b/test/unittest/ui_extension_context_test/ui_extension_context_test.cpp index 607a4ce3d47e344854de6bb2c007c251b14b75a3..9fe7f53bbd24a5f0fbcaa59413182889d43df2cc 100644 --- a/test/unittest/ui_extension_context_test/ui_extension_context_test.cpp +++ b/test/unittest/ui_extension_context_test/ui_extension_context_test.cpp @@ -700,5 +700,95 @@ HWTEST_F(UIExtensionContextTest, RequestComponentTerminate_0200, TestSize.Level1 context->SetWindow(window); context->RequestComponentTerminate(); } + +/** + * @tc.number: StartAbilityByType_0100 + * @tc.name: UIExtensionContext StartAbilityByType + * @tc.desc: UIExtensionContext StartAbilityByType. + */ +HWTEST_F(UIExtensionContextTest, StartAbilityByType_0100, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "StartAbilityByType_0100 start"); + + std::string type; + AAFwk::WantParams wantParam; + std::shared_ptr uiExtensionCallbacks{nullptr}; + + auto context = std::make_shared(); + auto result = context->StartAbilityByType(type, wantParam, uiExtensionCallbacks); + EXPECT_EQ(result, ERR_INVALID_VALUE); + + TAG_LOGI(AAFwkTag::TEST, "StartAbilityByType_0100 end"); +} + + /** + * @tc.number: StartAbilityByType_0200 + * @tc.name: UIExtensionContext StartAbilityByType + * @tc.desc: UIExtensionContext StartAbilityByType. + */ +HWTEST_F(UIExtensionContextTest, StartAbilityByType_0200, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "StartAbilityByType_0200 start"); + + std::string type; + AAFwk::WantParams wantParam; + napi_env env; + std::shared_ptr uiExtensionCallbacks = std::make_shared(env); + + auto context = std::make_shared(); + context->SetWindow(nullptr); + auto result = context->StartAbilityByType(type, wantParam, uiExtensionCallbacks); + EXPECT_EQ(result, ERR_INVALID_VALUE); + + TAG_LOGI(AAFwkTag::TEST, "StartAbilityByType_0200 end"); +} + + /** + * @tc.number: StartAbilityByType_0300 + * @tc.name: UIExtensionContext StartAbilityByType + * @tc.desc: UIExtensionContext StartAbilityByType. + */ +HWTEST_F(UIExtensionContextTest, StartAbilityByType_0300, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "StartAbilityByType_0300 start"); + + std::string type; + AAFwk::WantParams wantParam; + napi_env env; + std::shared_ptr uiExtensionCallbacks = std::make_shared(env); + sptr window = new MockWindow(); + + auto context = std::make_shared(); + context->SetWindow(window); + auto result = context->StartAbilityByType(type, wantParam, uiExtensionCallbacks); + EXPECT_EQ(result, ERR_INVALID_VALUE); + + TAG_LOGI(AAFwkTag::TEST, "StartAbilityByType_0300 end"); +} + + /** + * @tc.number: StartAbilityByType_0400 + * @tc.name: UIExtensionContext StartAbilityByType + * @tc.desc: UIExtensionContext StartAbilityByType. + */ +HWTEST_F(UIExtensionContextTest, StartAbilityByType_0400, TestSize.Level1) +{ + TAG_LOGI(AAFwkTag::TEST, "StartAbilityByType_0400 start"); + + std::string type; + AAFwk::WantParams wantParam; + const std::string FLAG_AUTH_READ_URI_PERMISSION = "ability.want.params.uriPermissionFlag"; + wantParam.SetParam(FLAG_AUTH_READ_URI_PERMISSION, 0); + napi_env env; + std::shared_ptr uiExtensionCallbacks = std::make_shared(env); + sptr window = new MockWindow(); + + auto context = std::make_shared(); + context->SetWindow(window); + auto result = context->StartAbilityByType(type, wantParam, uiExtensionCallbacks); + EXPECT_EQ(result, ERR_INVALID_VALUE); + + TAG_LOGI(AAFwkTag::TEST, "StartAbilityByType_0400 end"); +} } // namespace AbilityRuntime } // namespace OHOS diff --git a/tools/aa/BUILD.gn b/tools/aa/BUILD.gn index 45ca82c63105416d77ab5fdd25320b54ce075741..ea7ab9146265798b11e3f3ecd7437317bd12e711 100644 --- a/tools/aa/BUILD.gn +++ b/tools/aa/BUILD.gn @@ -95,6 +95,10 @@ ohos_executable("aa") { cflags += [ "-DBINDER_IPC_32BIT" ] } + configs = [ + "${ability_runtime_innerkits_path}/ability_manager:ability_manager_idl_config", + ] + deps = [ ":tools_aa_source_set" ] external_deps = [