diff --git a/services/backup_sa/include/module_external/bms_adapter.h b/services/backup_sa/include/module_external/bms_adapter.h index 72fd55d180718a2afc07da53f1a1d104cf07494e..13a7be7a1d9c0cee9d48144bd1334a1bd9de0e3c 100644 --- a/services/backup_sa/include/module_external/bms_adapter.h +++ b/services/backup_sa/include/module_external/bms_adapter.h @@ -80,6 +80,8 @@ public: static void CreatBackupEnv(const std::vector &bundleNameList, int32_t userId); + static std::vector GetBundleInfosForAppendBundles( + const std::vector &incrementalDataList, int32_t userId); private: static bool GetCurBundleExtenionInfo(AppExecFwk::BundleInfo &installedBundle, const std::string &bundleName, std::vector &extensionInfos, sptr bms, diff --git a/services/backup_sa/src/module_external/bms_adapter.cpp b/services/backup_sa/src/module_external/bms_adapter.cpp index db61d1369df9f603bb34ee63e919d8b4d3da22b3..12a70dd621a57bcf50a390f592dfa4f1eecfaf0d 100644 --- a/services/backup_sa/src/module_external/bms_adapter.cpp +++ b/services/backup_sa/src/module_external/bms_adapter.cpp @@ -681,4 +681,41 @@ void BundleMgrAdapter::CreatBackupEnv(const std::vector &bundl } HILOGI("CreatBackupEnv end"); } -} // namespace OHOS::FileManagement::Backup + +std::vector BundleMgrAdapter::GetBundleInfosForAppendBundles( + const std::vector &incrementalDataList, int32_t userId) +{ + vector bundleInfos; + auto bms = GetBundleManager(); + for (const auto &bundleIncData : incrementalDataList) { + auto bundleName = bundleIncData.bundleName; + HILOGE("Current bundle name is:%{public}s", bundleName.c_str()); + AppExecFwk::BundleInfo installedBundle; + std::vector extensionInfos; + bool getBundleSuccess = GetCurBundleExtenionInfo(installedBundle, bundleName, extensionInfos, bms, userId); + if (!getBundleSuccess) { + HILOGE("Failed to get bundle info from bms, bundleName:%{public}s", bundleName.c_str()); + continue; + } + struct BJsonEntityCaps::BundleBackupConfigPara backupPara; + if (!GetBackupExtConfig(extensionInfos, backupPara)) { + HILOGE("No backup extension ability found, bundleName:%{public}s", bundleName.c_str()); + continue; + } + bundleInfos.emplace_back(BJsonEntityCaps::BundleInfo {installedBundle.name, installedBundle.appIndex, + installedBundle.versionCode, + installedBundle.versionName, 0, 0, + backupPara.allToBackup, backupPara.fullBackupOnly, + backupPara.extensionName, + backupPara.restoreDeps, backupPara.supportScene, + backupPara.extraInfo}); + } + for (const auto &info : incrementalDataList) { + if (SAUtils::IsSABundleName(info.bundleName)) { + HILOGE("Current SA name is:%{public}s", info.bundleName.c_str()); + GetBundleInfoForSA(info.bundleName, bundleInfos); + } + } + return bundleInfos; +} +} // namespace OHOS::FileManagement::Backup \ No newline at end of file diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index b48c7a195d793454391edaf9eaa53ce8fdd1b28e..3cf203c75cc763398c104cc56ebb018698477bac 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -851,7 +851,8 @@ ErrCode Service::AppendBundlesBackupSession(const vector &bundleName return ret; } auto bundleDetails = MakeDetailList(bundleNames); - auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundleDetails, session_->GetSessionUserId()); + auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppendBundles(bundleDetails, + session_->GetSessionUserId()); std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, false, bundleNames); AppendBundles(supportBackupNames); SetCurrentBackupSessProperties(supportBackupNames, session_->GetSessionUserId(), backupInfos, false); @@ -894,7 +895,8 @@ ErrCode Service::AppendBundlesDetailsBackupSession(const vector &bun BJsonUtil::BuildBundleInfos(bundleNames, bundleInfos, bundleNamesOnly, session_->GetSessionUserId(), isClearDataFlags); auto bundleDetails = MakeDetailList(bundleNames); - auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundleDetails, session_->GetSessionUserId()); + auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppendBundles(bundleDetails, + session_->GetSessionUserId()); std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, false, bundleNames); AppendBundles(supportBackupNames); HandleCurGroupBackupInfos(backupInfos, bundleNameDetailMap, isClearDataFlags); diff --git a/services/backup_sa/src/module_ipc/service_incremental.cpp b/services/backup_sa/src/module_ipc/service_incremental.cpp index b867846522e5af35d3451de5785143b58a0c6897..1ec3061e6605c1c09c73e1fcaa81f3dbf13630e0 100644 --- a/services/backup_sa/src/module_ipc/service_incremental.cpp +++ b/services/backup_sa/src/module_ipc/service_incremental.cpp @@ -393,7 +393,7 @@ ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vectorDecreaseSessionCnt(__PRETTY_FUNCTION__); return ret; } - auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundlesToBackup, + auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppendBundles(bundlesToBackup, session_->GetSessionUserId()); std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, true, bundleNames); AppendBundles(supportBackupNames); @@ -439,7 +439,7 @@ ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector> bundleNameDetailMap = BJsonUtil::BuildBundleInfos(bundleNames, infos, bundleNamesOnly, session_->GetSessionUserId(), isClearDataFlags); - auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppend(bundlesToBackup, + auto backupInfos = BundleMgrAdapter::GetBundleInfosForAppendBundles(bundlesToBackup, session_->GetSessionUserId()); std::vector supportBackupNames = GetSupportBackupBundleNames(backupInfos, true, bundleNames); AppendBundles(supportBackupNames); @@ -836,7 +836,7 @@ void Service::SetCurrentBackupSessProperties(const vector &bundleNames, void Service::SetBundleIncDataInfo(const std::vector& bundlesToBackup, - std::vector& supportBundleNames) + std::vector &supportBundleNames) { for (const auto &bundleInfo : bundlesToBackup) { std::string bundleName = bundleInfo.bundleName; diff --git a/services/backup_sa/src/module_ipc/svc_session_manager.cpp b/services/backup_sa/src/module_ipc/svc_session_manager.cpp index ec982c0cc2606f53c7a74e5d71470d93da4c6797..a0aafce1c82f441b6bf2acd6d64b9562b00365d6 100644 --- a/services/backup_sa/src/module_ipc/svc_session_manager.cpp +++ b/services/backup_sa/src/module_ipc/svc_session_manager.cpp @@ -16,6 +16,7 @@ #include "module_ipc/svc_session_manager.h" #include +#include #include #include #include @@ -865,6 +866,8 @@ void SvcSessionManager::SetBundleDataSize(const std::string &bundleName, int64_t return; } it->second.dataSize = dataSize; + HILOGI("Set bundle data size end, bundlename = %{public}s , datasize = %{public}" PRId64 "", + bundleName.c_str(), dataSize); } uint32_t SvcSessionManager::CalAppProcessTime(const std::string &bundleName) diff --git a/tests/mock/module_external/bms_adapter_mock.cpp b/tests/mock/module_external/bms_adapter_mock.cpp index 0b6954c1dbce00a5742732723c49c56fbdca4cdf..83f98eace9c6da9f8e7640efded5c3e332d45bcd 100644 --- a/tests/mock/module_external/bms_adapter_mock.cpp +++ b/tests/mock/module_external/bms_adapter_mock.cpp @@ -117,4 +117,14 @@ int64_t BundleMgrAdapter::GetBundleDataSize(const std::string &bundleName, int32 } void BundleMgrAdapter::CreatBackupEnv(const std::vector &bundleNameList, int32_t userId) {} + +vector BundleMgrAdapter::GetBundleInfosForAppendBundles( + const vector &incrementalDataList, int32_t userId) +{ + vector bundleInfos; + bundleInfos.emplace_back( + BJsonEntityCaps::BundleInfo {"com.example.app2backup", 0, {}, {}, 0, 0, true, false, + "com.example.app2backup"}); + return bundleInfos; +} } // namespace OHOS::FileManagement::Backup diff --git a/tests/mock/module_external/include/bms_adapter_mock.h b/tests/mock/module_external/include/bms_adapter_mock.h index 364172921d50e5829f04ebea19229e197a27127c..fc3642d1ab5a7612d67687a10501abbbd2c90628 100644 --- a/tests/mock/module_external/include/bms_adapter_mock.h +++ b/tests/mock/module_external/include/bms_adapter_mock.h @@ -40,6 +40,8 @@ public: virtual std::vector GetBundleInfosForIndex(const vector&, int32_t) = 0; virtual int64_t GetBundleDataSize(const std::string&, int32_t) = 0; virtual void CreatBackupEnv(const std::vector&, int32_t) = 0; + virtual std::vector + GetBundleInfosForAppendBundles(const std::vector&, int32_t) = 0; public: BBundleMgrAdapter() = default; virtual ~BBundleMgrAdapter() = default; @@ -67,6 +69,8 @@ public: MOCK_METHOD((std::vector), GetBundleInfosForIndex, (const vector&, int32_t)); MOCK_METHOD(int64_t, GetBundleDataSize, (const std::string&, int32_t)); MOCK_METHOD(void, CreatBackupEnv, (const std::vector&, int32_t)); + MOCK_METHOD((std::vector), GetBundleInfosForAppendBundles, + ((const std::vector&), int32_t)); }; } // namespace OHOS::FileManagement::Backup #endif // OHOS_FILEMGMT_BACKUP_BMS_ADAPTER_MOCK_H diff --git a/tests/mock/module_external/src/bms_adapter_mock.cpp b/tests/mock/module_external/src/bms_adapter_mock.cpp index e7dd3d0aff01580913c143c88673fde7ce6cec4a..6ebc156ae8b5acfa6e8aab03fe1f7b2b55cf6a32 100644 --- a/tests/mock/module_external/src/bms_adapter_mock.cpp +++ b/tests/mock/module_external/src/bms_adapter_mock.cpp @@ -89,4 +89,10 @@ int64_t BundleMgrAdapter::GetBundleDataSize(const std::string &bundleName, int32 void BundleMgrAdapter::CreatBackupEnv(const std::vector &bundleNameList, int32_t userId) {} +vector BundleMgrAdapter::GetBundleInfosForAppendBundles( + const vector &incrementalDataList, int32_t userId) +{ + return BBundleMgrAdapter::bms->GetBundleInfosForAppendBundles(incrementalDataList, userId); +} + } // namespace OHOS::FileManagement::Backup \ No newline at end of file diff --git a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp index b63452aac02b5720f9925deb37d9def0db739056..4a6ed74b6034ced346761e87124f4c754614c92e 100644 --- a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp @@ -605,7 +605,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppendBundlesIncremental service->isOccupyingSession_ = false; vector bundleInfos; EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); - EXPECT_CALL(*bms, GetBundleInfosForAppend(_, _)).WillOnce(Return(bundleInfos)); + EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(bundleInfos)); EXPECT_EQ(service->AppendBundlesIncrementalBackupSession({}), BError(BError::Codes::OK).GetCode()); } catch (...) { EXPECT_TRUE(false); @@ -643,7 +643,7 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppendBundlesIncremental vector bundleInfos; EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); EXPECT_CALL(*jsonUtil, BuildBundleInfos(_, _, _, _, _)).WillOnce(Return(bundleNameDetailMap)); - EXPECT_CALL(*bms, GetBundleInfosForAppend(_, _)).WillOnce(Return(bundleInfos)); + EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(bundleInfos)); ret = service->AppendBundlesIncrementalBackupSession({}, {}); EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode()); } catch (...) { diff --git a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp index 5df07ad2bfa747b504ab5f40d957f4d15e37466a..30ea8f00e5c1e5cec0398a7b15db3dda470dd73e 100644 --- a/tests/unittests/backup_sa/module_ipc/service_other_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_other_test.cpp @@ -1063,7 +1063,7 @@ HWTEST_F(ServiceTest, SUB_Service_AppendBundlesBackupSession_0200, TestSize.Leve EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL)); EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); - EXPECT_CALL(*bms, GetBundleInfosForAppend(_, _)).WillOnce(Return(bundleInfos)); + EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(bundleInfos)); EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false)); auto ret = service->AppendBundlesBackupSession(bundleNames); EXPECT_EQ(ret, BError(BError::Codes::OK)); @@ -1131,7 +1131,7 @@ HWTEST_F(ServiceTest, SUB_Service_AppendBundlesDetailsBackupSession_0200, TestSi EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID)); EXPECT_CALL(*jsonUtil, BuildBundleInfos(_, _, _, _, _)).WillOnce(Return(bundleNameDetailMap)); EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)); - EXPECT_CALL(*bms, GetBundleInfosForAppend(_, _)).WillOnce(Return(infos)); + EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(infos)); EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false)); auto ret = service->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos); EXPECT_EQ(ret, BError(BError::Codes::OK));