From 915b05247ccfffde01ce438eb5b4f757b0672693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=8C=AF=E6=9D=B0?= Date: Thu, 28 Aug 2025 21:01:59 +0800 Subject: [PATCH] FinishOnProcessTask normally MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 吕振杰 --- .../backup_ext/src/sub_ext_extension.cpp | 44 +++++++++---------- .../backup_ext/ext_extension_sub_test.cpp | 12 ++++- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/frameworks/native/backup_ext/src/sub_ext_extension.cpp b/frameworks/native/backup_ext/src/sub_ext_extension.cpp index b05dc211d..0fe4ad092 100644 --- a/frameworks/native/backup_ext/src/sub_ext_extension.cpp +++ b/frameworks/native/backup_ext/src/sub_ext_extension.cpp @@ -296,26 +296,26 @@ std::function BackupExtExtension::OnRestoreExCallbac HILOGE("Appdone has been executed for the current application"); return; } - if (errCode == ERR_OK && !restoreRetInfo.empty()) { - auto spendTime = extensionPtr->GetOnStartTimeCost(); - if (spendTime >= BConstants::MAX_TIME_COST) { - std::stringstream ss; - ss << R"("spendTime": )"<< spendTime << "ms"; - AppRadar::Info info (extensionPtr->bundleName_, "", ss.str()); - AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::OnRestoreExCallback", - AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_ON_RESTORE, ERR_OK); - } - } - extensionPtr->FinishOnProcessTask(); extensionPtr->extension_->InvokeAppExtMethod(errCode, restoreRetInfo); if (errCode == ERR_OK) { if (restoreRetInfo.size()) { + auto spendTime = extensionPtr->GetOnStartTimeCost(); + if (spendTime >= BConstants::MAX_TIME_COST) { + std::stringstream ss; + ss << R"("spendTime": )"<< spendTime << "ms"; + AppRadar::Info info (extensionPtr->bundleName_, "", ss.str()); + AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::OnRestoreExCallback", + AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_ON_RESTORE, ERR_OK); + } HILOGI("Will notify restore result report"); + extensionPtr->FinishOnProcessTask(); extensionPtr->ReportAppStatistic("OnRestoreExCallback1", errCode); extensionPtr->AppResultReport(restoreRetInfo, BackupRestoreScenario::FULL_RESTORE); } return; } + HILOGE("Call extension onRestoreEx failed, errInfo = %{public}s", restoreRetInfo.c_str()); + extensionPtr->FinishOnProcessTask(); if (restoreRetInfo.empty()) { extensionPtr->AppDone(errCode); extensionPtr->DoClear(); @@ -363,25 +363,25 @@ std::function BackupExtExtension::IncreOnRestoreExCa HILOGE("Appdone has been executed for the current application"); return; } - if (errCode == ERR_OK && !restoreRetInfo.empty()) { - auto spendTime = extensionPtr->GetOnStartTimeCost(); - if (spendTime >= BConstants::MAX_TIME_COST) { - std::stringstream ss; - ss << R"("spendTime": )"<< spendTime << "ms"; - AppRadar::Info info (extensionPtr->bundleName_, "", ss.str()); - AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::IncreOnRestoreExCallback", - AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_ON_RESTORE, ERR_OK); - } - } - extensionPtr->FinishOnProcessTask(); extensionPtr->extension_->InvokeAppExtMethod(errCode, restoreRetInfo); if (errCode == ERR_OK) { if (restoreRetInfo.size()) { + auto spendTime = extensionPtr->GetOnStartTimeCost(); + if (spendTime >= BConstants::MAX_TIME_COST) { + std::stringstream ss; + ss << R"("spendTime": )"<< spendTime << "ms"; + AppRadar::Info info (extensionPtr->bundleName_, "", ss.str()); + AppRadar::GetInstance().RecordRestoreFuncRes(info, "BackupExtExtension::IncreOnRestoreExCallback", + AppRadar::GetInstance().GetUserId(), BizStageRestore::BIZ_STAGE_ON_RESTORE, ERR_OK); + } + extensionPtr->FinishOnProcessTask(); extensionPtr->ReportAppStatistic("IncreOnRestoreExCallback1", errCode); extensionPtr->AppResultReport(restoreRetInfo, BackupRestoreScenario::INCREMENTAL_RESTORE); } return; } + HILOGE("Call increment onRestoreEx failed, errInfo = %{public}s", restoreRetInfo.c_str()); + extensionPtr->FinishOnProcessTask(); if (restoreRetInfo.empty()) { extensionPtr->AppIncrementalDone(errCode); extensionPtr->DoClear(); diff --git a/tests/unittests/backup_ext/ext_extension_sub_test.cpp b/tests/unittests/backup_ext/ext_extension_sub_test.cpp index 284cf4744..93c61b6d4 100644 --- a/tests/unittests/backup_ext/ext_extension_sub_test.cpp +++ b/tests/unittests/backup_ext/ext_extension_sub_test.cpp @@ -394,7 +394,17 @@ HWTEST_F(ExtExtensionSubTest, Ext_Extension_Sub_OnRestoreExCallback_Test_0100, t restoreCallBack(errCode, restoreRetInfo); extExtension->isExecAppDone_.store(false); EXPECT_EQ(restoreRetInfo, "err"); - + + extExtension->isExecAppDone_.store(false); + restoreRetInfo = ""; + restoreCallBack = extExtension->OnRestoreExCallback(extExtension); + restoreCallBack(errCode, restoreRetInfo); + EXPECT_EQ(restoreRetInfo, ""); + + restoreRetInfo = "err"; + restoreCallBack = extExtension->OnRestoreExCallback(extExtension); + restoreCallBack(errCode, restoreRetInfo); + EXPECT_EQ(restoreRetInfo, "err"); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ExtExtensionSubTest-an exception occurred by construction."; -- Gitee