diff --git a/interfaces/inner_api/quick_fix/BUILD.gn b/interfaces/inner_api/quick_fix/BUILD.gn index b11f4bcbae9fcc38a8aa243262cf0c3cdbf91ee6..3b9c04370673b15c3a0dc482ca4be30e50c5adea 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 df72825797fe7be3e17e617c64d8501eb6a10dd4..51d350eb28f94c3fc8bfe9cef5f75b13a71a9121 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 35e8b4d652f2db95143f71610f56326934390edc..499619a80b26f4327ef37581b9526536532997e6 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 aa3baea1eb0840c56411d40d12a2257cea8ab31f..8ace6a1fbf37ff8db8139a13f16b2ca91c64082b 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 59573e3e997e8faaa2fd956e33c873a04eed994e..ddab23d0eb00f3b270050cce27b14610c1ea2495 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 7c72d1af32e1a492eec6db6787c42dab56994136..9d2471ddb96296badfbf97217bd939022a595327 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 78c15388e177f92387845f22850b8b587e653bae..05dbfb9a6f499d466ac480dfe2895f4eaf29b285 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 736c9a97eacaa398e489d4983f3fcfb8755566fd..1920700b40fc76d6797a03c97507bcd4db5ac275 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 9dfdf9d9802731ebe5b81f5b4cfb6f223b82c54f..308976e1e911f7f297357cd192533d68761dc518 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 420c11ec78dac55633b61fe2b66edb2270c3e284..16d938285b5d2e63e001ab67425c415c9aff4e0c 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_);