From 482c0b3e199afbf1c4b210bbad08ad45f30e498d Mon Sep 17 00:00:00 2001 From: lanhaoyu Date: Sun, 29 Jun 2025 18:47:13 +0800 Subject: [PATCH] add quick fix idl Signed-off-by: lanhaoyu --- interfaces/inner_api/quick_fix/BUILD.gn | 4 ++- .../include/quick_fix_manager_client.h | 2 +- .../src/quick_fix_manager_client.cpp | 12 +++------ .../include/quick_fix_manager_apply_task.h | 2 +- .../include/quick_fix_manager_service.h | 6 ++--- .../src/quick_fix_manager_apply_task.cpp | 21 +++++++++++---- .../include/mock_bundle_manager.h | 26 +++++++------------ .../quick_fix_manager_module_test.cpp | 2 +- .../include/mock_quick_fix_manager_stub.h | 2 +- .../quick_fix_manager_apply_task_test.cpp | 6 ++--- 10 files changed, 43 insertions(+), 40 deletions(-) diff --git a/interfaces/inner_api/quick_fix/BUILD.gn b/interfaces/inner_api/quick_fix/BUILD.gn index b11f4bcbae9..3b9c0437067 100644 --- a/interfaces/inner_api/quick_fix/BUILD.gn +++ b/interfaces/inner_api/quick_fix/BUILD.gn @@ -28,11 +28,13 @@ idl_gen_interface("quickfix_manager_interface") { log_tag = "QuickFixManagerService" } +gen_parent_dir = get_path_info(target_gen_dir, "dir") config("quickfix_config") { visibility = [ ":*" ] include_dirs = [ + ".", + "${gen_parent_dir}", "include", - "${target_gen_dir}", ] cflags = [] if (target_cpu == "arm") { diff --git a/interfaces/inner_api/quick_fix/include/quick_fix_manager_client.h b/interfaces/inner_api/quick_fix/include/quick_fix_manager_client.h index df72825797f..51d350eb28f 100644 --- a/interfaces/inner_api/quick_fix/include/quick_fix_manager_client.h +++ b/interfaces/inner_api/quick_fix/include/quick_fix_manager_client.h @@ -20,7 +20,7 @@ #include #include -#include "iquick_fix_manager.h" +#include "quick_fix/iquick_fix_manager.h" #include "singleton.h" #include "quick_fix_info.h" diff --git a/interfaces/inner_api/quick_fix/src/quick_fix_manager_client.cpp b/interfaces/inner_api/quick_fix/src/quick_fix_manager_client.cpp index 35e8b4d652f..499619a80b2 100644 --- a/interfaces/inner_api/quick_fix/src/quick_fix_manager_client.cpp +++ b/interfaces/inner_api/quick_fix/src/quick_fix_manager_client.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2024 Huawei Device Co., Ltd. + * Copyright (c) 2022-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 @@ -20,9 +20,10 @@ #include "hitrace_meter.h" #include "if_system_ability_manager.h" #include "iservice_registry.h" +#include "quick_fix/quick_fix_manager_client.h" +#include "quick_fix/quick_fix_manager_proxy.h" #include "quick_fix_error_utils.h" #include "quick_fix_load_callback.h" -#include "quick_fix_manager_proxy.h" #include "quick_fix_utils.h" #include "system_ability_definition.h" @@ -44,14 +45,9 @@ int32_t QuickFixManagerClient::ApplyQuickFix(const std::vector &qui return QUICK_FIX_CONNECT_FAILED; } - auto bundleQuickFixMgr = QuickFixUtil::GetBundleQuickFixMgrProxy(); - if (bundleQuickFixMgr == nullptr) { - return QUICK_FIX_CONNECT_FAILED; - } - TAG_LOGD(AAFwkTag::QUICKFIX, "hqf file number need to apply: %{public}zu", quickFixFiles.size()); std::vector destFiles; - auto copyRet = bundleQuickFixMgr->CopyFiles(quickFixFiles, destFiles); + auto copyRet = AppExecFwk::QuickFixManagerClient::GetInstance().CopyFiles(quickFixFiles, destFiles); if (copyRet != 0) { TAG_LOGE(AAFwkTag::QUICKFIX, "Copy files failed."); return (copyRet == ERR_BUNDLEMANAGER_QUICK_FIX_PERMISSION_DENIED) ? QUICK_FIX_VERIFY_PERMISSION_FAILED : diff --git a/services/quickfixmgr/include/quick_fix_manager_apply_task.h b/services/quickfixmgr/include/quick_fix_manager_apply_task.h index aa3baea1eb0..8ace6a1fbf3 100644 --- a/services/quickfixmgr/include/quick_fix_manager_apply_task.h +++ b/services/quickfixmgr/include/quick_fix_manager_apply_task.h @@ -17,10 +17,10 @@ #define OHOS_ABILITY_RUNTIME_QUICK_FIX_MANAGER_APPLY_TASK_H #include "app_mgr_interface.h" +#include "appexecfwk_core/iquick_fix_manager.h" #include "cJSON.h" #include "event_handler.h" #include "quick_fix_result_info.h" -#include "quick_fix/quick_fix_manager_interface.h" namespace OHOS { namespace AAFwk { diff --git a/services/quickfixmgr/include/quick_fix_manager_service.h b/services/quickfixmgr/include/quick_fix_manager_service.h index 59573e3e997..ddab23d0eb0 100644 --- a/services/quickfixmgr/include/quick_fix_manager_service.h +++ b/services/quickfixmgr/include/quick_fix_manager_service.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022-2023 Huawei Device Co., Ltd. + * Copyright (c) 2022-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 @@ -18,11 +18,11 @@ #include +#include "appexecfwk_core/iquick_fix_manager.h" #include "event_runner.h" #include "event_handler.h" -#include "quick_fix/quick_fix_manager_interface.h" +#include "quick_fix/quick_fix_manager_stub.h" #include "quick_fix_manager_apply_task.h" -#include "quick_fix_manager_stub.h" namespace OHOS { namespace AAFwk { diff --git a/services/quickfixmgr/src/quick_fix_manager_apply_task.cpp b/services/quickfixmgr/src/quick_fix_manager_apply_task.cpp index 7c72d1af32e..9d2471ddb96 100644 --- a/services/quickfixmgr/src/quick_fix_manager_apply_task.cpp +++ b/services/quickfixmgr/src/quick_fix_manager_apply_task.cpp @@ -412,7 +412,10 @@ void QuickFixManagerApplyTask::PostDeployQuickFixTask(const std::vectorbundleQfMgr_->DeployQuickFix(quickFixFiles, callback, isDebug, "", isReplace); + int32_t funcResult = -1; + auto ret = applyTask->bundleQfMgr_->DeployQuickFix( + quickFixFiles, callback, isDebug, "", isReplace, funcResult); + ret = (ret == 0) ? funcResult : ret; if (ret != 0) { TAG_LOGE(AAFwkTag::QUICKFIX, "failed: %{public}d", ret); applyTask->NotifyApplyStatus(QUICK_FIX_DEPLOY_FAILED); @@ -451,7 +454,9 @@ void QuickFixManagerApplyTask::PostSwitchQuickFixTask() return; } - auto ret = applyTask->bundleQfMgr_->SwitchQuickFix(applyTask->bundleName_, true, callback); + int32_t funcResult = -1; + auto ret = applyTask->bundleQfMgr_->SwitchQuickFix(applyTask->bundleName_, true, callback, funcResult); + ret = (ret == 0) ? funcResult : ret; if (ret != 0) { TAG_LOGE(AAFwkTag::QUICKFIX, "failed: %{public}d", ret); applyTask->NotifyApplyStatus(QUICK_FIX_SWICH_FAILED); @@ -490,7 +495,9 @@ void QuickFixManagerApplyTask::PostDeleteQuickFixTask() return; } - auto ret = applyTask->bundleQfMgr_->DeleteQuickFix(applyTask->bundleName_, callback); + int32_t funcResult = -1; + auto ret = applyTask->bundleQfMgr_->DeleteQuickFix(applyTask->bundleName_, callback, funcResult); + ret = (ret == 0) ? funcResult : ret; if (ret != 0) { TAG_LOGE(AAFwkTag::QUICKFIX, "delete quick fix failed: %{public}d", ret); applyTask->NotifyApplyStatus(QUICK_FIX_DELETE_FAILED); @@ -912,7 +919,9 @@ void QuickFixManagerApplyTask::PostRevokeQuickFixDeleteTask() } // call delete patch to bms - auto ret = bundleQfMgr_->DeleteQuickFix(bundleName_, callback); + int32_t funcResult = -1; + auto ret = bundleQfMgr_->DeleteQuickFix(bundleName_, callback, funcResult); + ret = (ret == 0) ? funcResult : ret; if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::QUICKFIX, "failed: %{public}d", ret); NotifyApplyStatus(QUICK_FIX_DELETE_FAILED); @@ -939,7 +948,9 @@ void QuickFixManagerApplyTask::HandleRevokeQuickFixAppStop() return; } - auto ret = bundleQfMgr_->SwitchQuickFix(bundleName_, false, callback); + int32_t funcResult = -1; + auto ret = bundleQfMgr_->SwitchQuickFix(bundleName_, false, callback, funcResult); + ret = (ret == 0) ? funcResult : ret; if (ret != ERR_OK) { TAG_LOGE(AAFwkTag::QUICKFIX, "failed: %{public}d", ret); NotifyApplyStatus(QUICK_FIX_SWICH_FAILED); diff --git a/test/mock/services_appmgr_test/include/mock_bundle_manager.h b/test/mock/services_appmgr_test/include/mock_bundle_manager.h index 78c15388e17..05dbfb9a6f4 100644 --- a/test/mock/services_appmgr_test/include/mock_bundle_manager.h +++ b/test/mock/services_appmgr_test/include/mock_bundle_manager.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Copyright (c) 2021-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 @@ -161,27 +161,21 @@ private: sptr quickFixManager_ = nullptr; }; -class QuickFixManagerHost : public IRemoteStub { +class QuickFixManagerStub : public IRemoteStub { public: int OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override; }; -class QuickFixManagerHostImpl : public QuickFixManagerHost { +class QuickFixManagerHostImpl : public QuickFixManagerStub { public: - MOCK_METHOD5(DeployQuickFix, ErrCode(const std::vector& bundleFilePaths, + MOCK_METHOD6(DeployQuickFix, ErrCode(const std::vector& bundleFilePaths, const sptr& statusCallback, bool isDebug, const std::string& targetPath, - bool isReplace)); - MOCK_METHOD3(SwitchQuickFix, ErrCode(const std::string& bundleName, bool enable, - const sptr& statusCallback)); - MOCK_METHOD2(DeleteQuickFix, ErrCode(const std::string& bundleName, - const sptr& statusCallback)); - MOCK_METHOD3(CreateFd, ErrCode(const std::string& fileName, int32_t& fd, std::string& path)); - - virtual ErrCode CopyFiles(const std::vector& sourceFiles, std::vector& destFiles) override - { - destFiles = sourceFiles; - return 0; - } + bool isReplace, int32_t& funcResult)); + MOCK_METHOD4(SwitchQuickFix, ErrCode(const std::string& bundleName, bool enable, + const sptr& statusCallback, int32_t& funcResult)); + MOCK_METHOD3(DeleteQuickFix, ErrCode(const std::string& bundleName, + const sptr& statusCallback, int32_t& funcResult)); + MOCK_METHOD4(CreateFd, ErrCode(const std::string& fileName, int32_t& fd, std::string& path, int32_t& funcResult)); }; } // namespace AppExecFwk } // namespace OHOS diff --git a/test/moduletest/quick_fix/quick_fix_manager_module_test/quick_fix_manager_module_test.cpp b/test/moduletest/quick_fix/quick_fix_manager_module_test/quick_fix_manager_module_test.cpp index 736c9a97eac..1920700b40f 100644 --- a/test/moduletest/quick_fix/quick_fix_manager_module_test/quick_fix_manager_module_test.cpp +++ b/test/moduletest/quick_fix/quick_fix_manager_module_test/quick_fix_manager_module_test.cpp @@ -20,7 +20,7 @@ #include "mock_quick_fix_util.h" #include "quick_fix_error_utils.h" #define private public -#include "quick_fix_manager_client.h" +#include "include/quick_fix_manager_client.h" #include "quick_fix_manager_service.h" #undef private #include "system_ability_definition.h" diff --git a/test/unittest/quick_fix/mock/include/mock_quick_fix_manager_stub.h b/test/unittest/quick_fix/mock/include/mock_quick_fix_manager_stub.h index 9dfdf9d9802..308976e1e91 100644 --- a/test/unittest/quick_fix/mock/include/mock_quick_fix_manager_stub.h +++ b/test/unittest/quick_fix/mock/include/mock_quick_fix_manager_stub.h @@ -17,7 +17,7 @@ #define OHOS_ABILITY_RUNTIME_MOCK_QUICK_FIX_MANAGER_STUB_H #include "gmock/gmock.h" -#include "quick_fix_manager_stub.h" +#include "quick_fix/quick_fix_manager_stub.h" namespace OHOS { namespace AAFwk { diff --git a/test/unittest/quick_fix/quick_fix_manager_service_test/quick_fix_manager_apply_task_test.cpp b/test/unittest/quick_fix/quick_fix_manager_service_test/quick_fix_manager_apply_task_test.cpp index 420c11ec78d..16d938285b5 100644 --- a/test/unittest/quick_fix/quick_fix_manager_service_test/quick_fix_manager_apply_task_test.cpp +++ b/test/unittest/quick_fix/quick_fix_manager_service_test/quick_fix_manager_apply_task_test.cpp @@ -147,7 +147,7 @@ HWTEST_F(QuickFixManagerApplyTaskTest, Run_0100, TestSize.Level1) quickFixMs_->eventHandler_, quickFixMs_); ASSERT_NE(applyTask, nullptr); - EXPECT_CALL(*bundleQfMgr_, DeployQuickFix(_, _, _, _, _)).Times(1); + EXPECT_CALL(*bundleQfMgr_, DeployQuickFix(_, _, _, _, _, _)).Times(1); std::vector quickFixFiles; applyTask->Run(quickFixFiles); WaitUntilTaskDone(quickFixMs_->eventHandler_); @@ -169,7 +169,7 @@ HWTEST_F(QuickFixManagerApplyTaskTest, HandlePatchDeployed_0100, TestSize.Level1 quickFixMs_->eventHandler_, quickFixMs_); ASSERT_NE(applyTask, nullptr); - EXPECT_CALL(*bundleQfMgr_, SwitchQuickFix(_, _, _)).Times(1); + EXPECT_CALL(*bundleQfMgr_, SwitchQuickFix(_, _, _, _)).Times(1); applyTask->HandlePatchDeployed(); WaitUntilTaskDone(quickFixMs_->eventHandler_); @@ -190,7 +190,7 @@ HWTEST_F(QuickFixManagerApplyTaskTest, HandlePatchSwitched_0100, TestSize.Level1 quickFixMs_->eventHandler_, quickFixMs_); ASSERT_NE(applyTask, nullptr); - EXPECT_CALL(*bundleQfMgr_, DeleteQuickFix(_, _)).Times(1); + EXPECT_CALL(*bundleQfMgr_, DeleteQuickFix(_, _, _)).Times(1); applyTask->HandlePatchSwitched(); WaitUntilTaskDone(quickFixMs_->eventHandler_); -- Gitee