diff --git a/services/bundlemgr/include/base_bundle_installer.h b/services/bundlemgr/include/base_bundle_installer.h index 3bbe789c08e25ed161d9c9136cec423bf895674c..325ada4d9faa6961dfd39a1d3c6165480a347dc5 100644 --- a/services/bundlemgr/include/base_bundle_installer.h +++ b/services/bundlemgr/include/base_bundle_installer.h @@ -768,7 +768,7 @@ private: #endif void PrepareBundleDirQuota(const std::string &bundleName, const int32_t uid, const std::string &bundleDataDirPath, const int32_t limitSize) const; - void ParseSizeFromProvision(const std::string &bundleName, const int32_t uid, int32_t &sizeMb) const; + void ParseSizeFromProvision(int32_t &sizeMb) const; void VerifyDomain(); void ClearDomainVerifyStatus(const std::string &appIdentifier, const std::string &bundleName) const; bool IsRdDevice() const; diff --git a/services/bundlemgr/include/bundle_mgr_service_event_handler.h b/services/bundlemgr/include/bundle_mgr_service_event_handler.h index a2abd48e84cf2c9a1c2d6a9a9da8dc0a3946022b..2bc7a013e570543c20818dc67bfbca2e91819272 100644 --- a/services/bundlemgr/include/bundle_mgr_service_event_handler.h +++ b/services/bundlemgr/include/bundle_mgr_service_event_handler.h @@ -560,7 +560,7 @@ private: void PrepareBundleDirQuota(const std::string &bundleName, const int32_t uid, const std::string &bundleDataDirPath, const int32_t limitSize) const; - void ParseSizeFromProvision(const std::string &bundleName, const int32_t uid, int32_t &sizeMb) const; + void ParseSizeFromProvision(const std::string &bundleName, int32_t &sizeMb) const; void RefreshQuotaForAllUid(); void InnerProcessStockBundleRouterInfo(); diff --git a/services/bundlemgr/src/base_bundle_installer.cpp b/services/bundlemgr/src/base_bundle_installer.cpp index aef0430add4b6d49b9f90d615988c60e484da37a..041d813177ca2c44ceec49941aaaf55bcb0fb38b 100644 --- a/services/bundlemgr/src/base_bundle_installer.cpp +++ b/services/bundlemgr/src/base_bundle_installer.cpp @@ -3275,12 +3275,11 @@ void BaseBundleInstaller::PrepareBundleDirQuota(const std::string &bundleName, c } #endif // QUOTA_PARAM_SET_ENABLE #endif // STORAGE_SERVICE_ENABLE - ParseSizeFromProvision(bundleName, uid, atomicserviceDatasizeThreshold); + ParseSizeFromProvision(atomicserviceDatasizeThreshold); SendToStorageQuota(bundleName, uid, bundleDataDirPath, atomicserviceDatasizeThreshold); } -void BaseBundleInstaller::ParseSizeFromProvision( - const std::string &bundleName, const int32_t uid, int32_t &sizeMb) const +void BaseBundleInstaller::ParseSizeFromProvision(int32_t &sizeMb) const { std::string appServiceCapabilities = verifyRes_.GetProvisionInfo().appServiceCapabilities; if (appServiceCapabilities.empty()) { @@ -3291,11 +3290,6 @@ void BaseBundleInstaller::ParseSizeFromProvision( if (item.first != ServiceConstants::PERMISSION_MANAGE_STORAGE) { continue; } - if (BundlePermissionMgr::VerifyPermission(bundleName, ServiceConstants::PERMISSION_MANAGE_STORAGE, - uid / Constants::BASE_USER_RANGE) != Security::AccessToken::PermissionState::PERMISSION_GRANTED) { - APP_LOGW("no manage storage permission for %{public}s", bundleName.c_str()); - return; - } std::unordered_map storageMap = BundleUtil::ParseMapFromJson(item.second); auto it = storageMap.find(KEY_STORAGE_SIZE); if (it == storageMap.end()) { diff --git a/services/bundlemgr/src/bundle_mgr_service_event_handler.cpp b/services/bundlemgr/src/bundle_mgr_service_event_handler.cpp index 1ee18499784c4605beaae36f0aca2dd439c42497..749588f7fed027b9182a827369e702b3c5180de1 100644 --- a/services/bundlemgr/src/bundle_mgr_service_event_handler.cpp +++ b/services/bundlemgr/src/bundle_mgr_service_event_handler.cpp @@ -1977,11 +1977,11 @@ void BMSEventHandler::PrepareBundleDirQuota(const std::string &bundleName, const } #endif // QUOTA_PARAM_SET_ENABLE #endif // STORAGE_SERVICE_ENABLE - ParseSizeFromProvision(bundleName, uid, atomicserviceDatasizeThreshold); + ParseSizeFromProvision(bundleName, atomicserviceDatasizeThreshold); SendToStorageQuota(bundleName, uid, bundleDataDirPath, atomicserviceDatasizeThreshold); } -void BMSEventHandler::ParseSizeFromProvision(const std::string &bundleName, const int32_t uid, int32_t &sizeMb) const +void BMSEventHandler::ParseSizeFromProvision(const std::string &bundleName, int32_t &sizeMb) const { AppProvisionInfo provisionInfo; if (!DelayedSingleton::GetInstance()->GetAppProvisionInfo(bundleName, provisionInfo)) { @@ -1996,11 +1996,6 @@ void BMSEventHandler::ParseSizeFromProvision(const std::string &bundleName, cons if (item.first != ServiceConstants::PERMISSION_MANAGE_STORAGE) { continue; } - if (BundlePermissionMgr::VerifyPermission(bundleName, ServiceConstants::PERMISSION_MANAGE_STORAGE, - uid / Constants::BASE_USER_RANGE) != Security::AccessToken::PermissionState::PERMISSION_GRANTED) { - APP_LOGW("no manage storage permission for %{public}s", bundleName.c_str()); - return; - } std::unordered_map storageMap = BundleUtil::ParseMapFromJson(item.second); auto it = storageMap.find(KEY_STORAGE_SIZE); if (it == storageMap.end()) { diff --git a/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_permission_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_permission_test.cpp index 58dc2d7aed0ae6a2e86ac53878b77fffaecea75c..05deb2f31196798f658d1fba154ade8454a53ddb 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_permission_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_permission_test.cpp @@ -1219,47 +1219,4 @@ HWTEST_F(BmsBundleInstallerPermissionTest, ProcessArkStartupCache_0010, Function ErrCode ret = installer.ProcessArkStartupCache(ceateArk, 1, 100); EXPECT_EQ(ret, ERR_APPEXECFWK_INSTALLD_PERMISSION_DENIED); } - -/** -* @tc.number: ParseSizeFromProvision_0010 -* @tc.name: test arseSizeFromProvision -* @tc.desc: 1.Test arseSizeFromProvision -*/ -HWTEST_F(BmsBundleInstallerPermissionTest, ParseSizeFromProvision_0010, Function | MediumTest | Level1) -{ - BaseBundleInstaller installer; - int32_t sizeMb = 200; - std::string bundleName = "test"; - int32_t uid = 20020000; - Security::Verify::ProvisionInfo provisionInfo; - - provisionInfo.appServiceCapabilities = ""; - installer.verifyRes_.SetProvisionInfo(provisionInfo); - installer.ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 200); - - provisionInfo.appServiceCapabilities = - "{\"ohos.permission.TEST\":{\"storageSize\": 1024}}"; - installer.verifyRes_.SetProvisionInfo(provisionInfo); - installer.ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 200); - - provisionInfo.appServiceCapabilities = - "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"test\": 1024}}"; - installer.verifyRes_.SetProvisionInfo(provisionInfo); - installer.ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 200); - - provisionInfo.appServiceCapabilities = - "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"storageSize\": 100}}"; - installer.verifyRes_.SetProvisionInfo(provisionInfo); - installer.ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 200); - - provisionInfo.appServiceCapabilities = - "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"storageSize\": 1024}}"; - installer.verifyRes_.SetProvisionInfo(provisionInfo); - installer.ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 1024); -} } // OHOS diff --git a/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_test.cpp index a5e3a0edd8ec599de4dd516488d4a74daca8c273..cbf43e027c84a3a4c549b282f10bf78a60616534 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_installer_test/bms_bundle_installer_test.cpp @@ -10216,6 +10216,47 @@ HWTEST_F(BmsBundleInstallerTest, BaseBundleInstaller_9600, Function | MediumTest EXPECT_TRUE(targetSoPath.find(BUNDLE_CODE_PATH_DIR_NEW) == 0); } +/** +* @tc.number: ParseSizeFromProvision_0010 +* @tc.name: test arseSizeFromProvision +* @tc.desc: 1.Test arseSizeFromProvision +*/ +HWTEST_F(BmsBundleInstallerTest, ParseSizeFromProvision_0010, Function | MediumTest | Level1) +{ + BaseBundleInstaller installer; + int32_t sizeMb = 200; + Security::Verify::ProvisionInfo provisionInfo; + + provisionInfo.appServiceCapabilities = ""; + installer.verifyRes_.SetProvisionInfo(provisionInfo); + installer.ParseSizeFromProvision(sizeMb); + EXPECT_EQ(sizeMb, 200); + + provisionInfo.appServiceCapabilities = + "{\"ohos.permission.TEST\":{\"storageSize\": 1024}}"; + installer.verifyRes_.SetProvisionInfo(provisionInfo); + installer.ParseSizeFromProvision(sizeMb); + EXPECT_EQ(sizeMb, 200); + + provisionInfo.appServiceCapabilities = + "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"test\": 1024}}"; + installer.verifyRes_.SetProvisionInfo(provisionInfo); + installer.ParseSizeFromProvision(sizeMb); + EXPECT_EQ(sizeMb, 200); + + provisionInfo.appServiceCapabilities = + "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"storageSize\": 100}}"; + installer.verifyRes_.SetProvisionInfo(provisionInfo); + installer.ParseSizeFromProvision(sizeMb); + EXPECT_EQ(sizeMb, 200); + + provisionInfo.appServiceCapabilities = + "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"storageSize\": 1024}}"; + installer.verifyRes_.SetProvisionInfo(provisionInfo); + installer.ParseSizeFromProvision(sizeMb); + EXPECT_EQ(sizeMb, 1024); +} + /** * @tc.number: ProcessDynamicIconFileWhenUpdate_0010 * @tc.name: test ProcessDynamicIconFileWhenUpdate diff --git a/services/bundlemgr/test/unittest/bms_bundle_permission_grant_test/bms_bundle_permission_getrequest_test.cpp b/services/bundlemgr/test/unittest/bms_bundle_permission_grant_test/bms_bundle_permission_getrequest_test.cpp index e5e0b72a0bc12ad7a2a2401a09d9bc508548ef30..ce247dd1c4f072227b1a220aa434381583f09890 100644 --- a/services/bundlemgr/test/unittest/bms_bundle_permission_grant_test/bms_bundle_permission_getrequest_test.cpp +++ b/services/bundlemgr/test/unittest/bms_bundle_permission_grant_test/bms_bundle_permission_getrequest_test.cpp @@ -19,11 +19,9 @@ #include #include -#include "app_provision_info_manager.h" #include "bundle_info.h" #include "bundle_mgr_host_impl.h" #include "bundle_mgr_service.h" -#include "bundle_mgr_service_event_handler.h" #include "bundle_permission_mgr.h" using namespace testing::ext; @@ -276,48 +274,4 @@ HWTEST_F(BmsBundlePermissionGetRequestTest, BundleMgrHostImpl_0009, Function | S bool ret = localBundleMgrHostImpl->GetProvisionMetadata(bundleName, userId, provisionMetadatas); EXPECT_TRUE(ret); } - -/** - * @tc.number: ParseSizeFromProvision_0010 - * @tc.name: ParseSizeFromProvision - * @tc.desc: test ParseSizeFromProvision - */ -HWTEST_F(BmsBundlePermissionGetRequestTest, ParseSizeFromProvision_0010, Function | SmallTest | Level1) -{ - std::shared_ptr handler = std::make_shared(); - ASSERT_NE(handler, nullptr); - std::string bundleName = "com.example.test"; - int32_t uid = 20020000; - int32_t sizeMb = 200; - AppProvisionInfo provisionInfo; - - provisionInfo.appServiceCapabilities = ""; - DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); - handler->ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 200); - - provisionInfo.appServiceCapabilities = - "{\"ohos.permission.TEST\":{\"storageSize\": 1024}}"; - DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); - handler->ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 200); - - provisionInfo.appServiceCapabilities = - "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"test\": 1024}}"; - DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); - handler->ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 200); - - provisionInfo.appServiceCapabilities = - "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"storageSize\": 100}}"; - DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); - handler->ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 200); - - provisionInfo.appServiceCapabilities = - "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"storageSize\": 1024}}"; - DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); - handler->ParseSizeFromProvision(bundleName, uid, sizeMb); - EXPECT_EQ(sizeMb, 1024); -} } // OHOS diff --git a/services/bundlemgr/test/unittest/bms_event_handler_test/bms_event_handler_test.cpp b/services/bundlemgr/test/unittest/bms_event_handler_test/bms_event_handler_test.cpp index f65741f14fdf2b362c8b56293e0b9d29646ed115..66b5287792c93b88576a4d7482e27061e180874d 100644 --- a/services/bundlemgr/test/unittest/bms_event_handler_test/bms_event_handler_test.cpp +++ b/services/bundlemgr/test/unittest/bms_event_handler_test/bms_event_handler_test.cpp @@ -2784,6 +2784,49 @@ HWTEST_F(BmsEventHandlerTest, SaveUpdatePermissionsFlag_0100, Function | SmallTe } } +/** + * @tc.number: ParseSizeFromProvision_0010 + * @tc.name: ParseSizeFromProvision + * @tc.desc: test ParseSizeFromProvision + */ +HWTEST_F(BmsEventHandlerTest, ParseSizeFromProvision_0010, Function | SmallTest | Level0) +{ + std::shared_ptr handler = std::make_shared(); + ASSERT_NE(handler, nullptr); + std::string bundleName = "com.example.test"; + int32_t sizeMb = 200; + AppProvisionInfo provisionInfo; + + provisionInfo.appServiceCapabilities = ""; + DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); + handler->ParseSizeFromProvision(bundleName, sizeMb); + EXPECT_EQ(sizeMb, 200); + + provisionInfo.appServiceCapabilities = + "{\"ohos.permission.TEST\":{\"storageSize\": 1024}}"; + DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); + handler->ParseSizeFromProvision(bundleName, sizeMb); + EXPECT_EQ(sizeMb, 200); + + provisionInfo.appServiceCapabilities = + "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"test\": 1024}}"; + DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); + handler->ParseSizeFromProvision(bundleName, sizeMb); + EXPECT_EQ(sizeMb, 200); + + provisionInfo.appServiceCapabilities = + "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"storageSize\": 100}}"; + DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); + handler->ParseSizeFromProvision(bundleName, sizeMb); + EXPECT_EQ(sizeMb, 200); + + provisionInfo.appServiceCapabilities = + "{\"ohos.permission.atomicService.MANAGE_STORAGE\":{\"storageSize\": 1024}}"; + DelayedSingleton::GetInstance()->AddAppProvisionInfo(bundleName, provisionInfo); + handler->ParseSizeFromProvision(bundleName, sizeMb); + EXPECT_EQ(sizeMb, 1024); +} + /** * @tc.number: CheckSystemOptimizeShaderCache_0100 * @tc.name: CheckSystemOptimizeShaderCache