diff --git a/services/accesstokenmanager/main/cpp/include/database/access_token_open_callback.h b/services/accesstokenmanager/main/cpp/include/database/access_token_open_callback.h index db87493b449cf7f770d8f6dd7b707e545a55859b..c1f6bad488c178fee5362c69f7b5c6f557f5e493 100644 --- a/services/accesstokenmanager/main/cpp/include/database/access_token_open_callback.h +++ b/services/accesstokenmanager/main/cpp/include/database/access_token_open_callback.h @@ -48,7 +48,7 @@ public: * param oldVersion The old database version. * param newVersion The new database version. */ - int32_t OnUpgrade(NativeRdb::RdbStore& rdbStore, int32_t currentVersion, int32_t targetVersion) override; + int32_t OnUpgrade(NativeRdb::RdbStore& rdbStore, int32_t oldVersion, int32_t newVersion) override; private: // OnCreate @@ -64,8 +64,7 @@ private: int32_t AddRequestToggleStatusColumn(NativeRdb::RdbStore& rdbStore); int32_t AddPermDialogCapColumn(NativeRdb::RdbStore& rdbStore); int32_t AddKernelEffectAndHasValueColumn(NativeRdb::RdbStore& rdbStore); - void GetUpgradeFlag(int32_t currentVersion, int32_t targetVersion, uint32_t& flag); - int32_t HandleUpgradeWithFlag(NativeRdb::RdbStore& rdbStore, uint32_t flag); + int32_t UpgradeTable(NativeRdb::RdbStore &store, int32_t oldVersion); }; } // namespace AccessToken } // namespace Security diff --git a/services/accesstokenmanager/main/cpp/src/database/access_token_open_callback.cpp b/services/accesstokenmanager/main/cpp/src/database/access_token_open_callback.cpp index 29d5fb6ef4eab371bb444fb0203b10a797466595..9ab2ff254a3ac788a4943e87bc02f61896708038 100644 --- a/services/accesstokenmanager/main/cpp/src/database/access_token_open_callback.cpp +++ b/services/accesstokenmanager/main/cpp/src/database/access_token_open_callback.cpp @@ -28,11 +28,6 @@ constexpr const char* INTEGER_STR = " integer not null,"; constexpr const char* TEXT_STR = " text not null,"; // back up name is xxx_slave fixed, can not be changed constexpr const char* DATABASE_NAME_BACK = "access_token_slave.db"; - -constexpr const uint32_t FLAG_HANDLE_FROM_ONE_TO_TWO = 1; -constexpr const uint32_t FLAG_HANDLE_FROM_TWO_TO_THREE = 1 << 1; -constexpr const uint32_t FLAG_HANDLE_FROM_THREE_TO_FOUR = 1 << 2; -constexpr const uint32_t FLAG_HANDLE_FROM_FOUR_TO_FIVE = 1 << 3; } int32_t AccessTokenOpenCallback::CreateHapTokenInfoTable(NativeRdb::RdbStore& rdbStore) @@ -407,81 +402,56 @@ int32_t AccessTokenOpenCallback::AddKernelEffectAndHasValueColumn(NativeRdb::Rdb return NativeRdb::E_OK; } -int32_t AccessTokenOpenCallback::HandleUpgradeWithFlag(NativeRdb::RdbStore& rdbStore, uint32_t flag) +int32_t AccessTokenOpenCallback::UpgradeTable(NativeRdb::RdbStore &store, int32_t oldVersion) { - int32_t res = NativeRdb::E_OK; - - if ((flag & FLAG_HANDLE_FROM_ONE_TO_TWO) == FLAG_HANDLE_FROM_ONE_TO_TWO) { - res = AddAvailableTypeColumn(rdbStore); - if (res != NativeRdb::E_OK) { - LOGE(ATM_DOMAIN, ATM_TAG, "Failed to add column available_type."); - return res; - } - - res = AddPermDialogCapColumn(rdbStore); - if (res != NativeRdb::E_OK) { - LOGE(ATM_DOMAIN, ATM_TAG, "Failed to add column perm_dialog_cap_state."); - return res; - } - } - - if ((flag & FLAG_HANDLE_FROM_TWO_TO_THREE) == FLAG_HANDLE_FROM_TWO_TO_THREE) { - res = CreatePermissionRequestToggleStatusTable(rdbStore); - if (res != NativeRdb::E_OK) { - LOGE(ATM_DOMAIN, ATM_TAG, "Failed to create table permission_request_toggle_status_table."); - return res; - } - } - - if ((flag & FLAG_HANDLE_FROM_THREE_TO_FOUR) == FLAG_HANDLE_FROM_THREE_TO_FOUR) { - res = AddRequestToggleStatusColumn(rdbStore); - if (res != NativeRdb::E_OK) { - LOGE(ATM_DOMAIN, ATM_TAG, "Failed to add column status."); - return res; - } + int32_t res = 0; + switch (oldVersion) { + case DATABASE_VERSION_1: // 1->2 + res = AddAvailableTypeColumn(store); + if (res != NativeRdb::E_OK) { + LOGE(ATM_DOMAIN, ATM_TAG, "Failed to add column available_type."); + return res; + } + res = AddPermDialogCapColumn(store); + if (res != NativeRdb::E_OK) { + LOGE(ATM_DOMAIN, ATM_TAG, "Failed to add column perm_dialog_cap_state."); + return res; + } + case DATABASE_VERSION_2: // 2->3 + res = CreatePermissionRequestToggleStatusTable(store); + if (res != NativeRdb::E_OK) { + LOGE(ATM_DOMAIN, ATM_TAG, "Failed to create table permission_request_toggle_status_table."); + return res; + } + case DATABASE_VERSION_3: // 3->4 + res = AddRequestToggleStatusColumn(store); + if (res != NativeRdb::E_OK) { + LOGE(ATM_DOMAIN, ATM_TAG, "Failed to add column status."); + return res; + } + case DATABASE_VERSION_4: // 4->5 + res = CreatePermissionExtendValueTable(store); + if (res != NativeRdb::E_OK) { + LOGE(ATM_DOMAIN, ATM_TAG, "Failed to create table permission_extend_bool_table."); + return res; + } + res = AddKernelEffectAndHasValueColumn(store); + if (res != NativeRdb::E_OK) { + LOGE(ATM_DOMAIN, ATM_TAG, "Failed to create table permission_extend_bool_table."); + return res; + } + default: + LOGI(ATM_DOMAIN, ATM_TAG, "No need to upgrade."); } - - if ((flag & FLAG_HANDLE_FROM_FOUR_TO_FIVE) == FLAG_HANDLE_FROM_FOUR_TO_FIVE) { - res = CreatePermissionExtendValueTable(rdbStore); - if (res != NativeRdb::E_OK) { - LOGE(ATM_DOMAIN, ATM_TAG, "Failed to create table permission_extend_bool_table."); - return res; - } - - return AddKernelEffectAndHasValueColumn(rdbStore); - } - return res; } -void AccessTokenOpenCallback::GetUpgradeFlag(int32_t currentVersion, int32_t targetVersion, uint32_t& flag) -{ - if ((targetVersion >= DATABASE_VERSION_2) && (currentVersion < DATABASE_VERSION_2)) { - flag += FLAG_HANDLE_FROM_ONE_TO_TWO; - } - - if ((targetVersion >= DATABASE_VERSION_3) && (currentVersion < DATABASE_VERSION_3)) { - flag += FLAG_HANDLE_FROM_TWO_TO_THREE; - } - - if ((targetVersion >= DATABASE_VERSION_4) && (currentVersion < DATABASE_VERSION_4)) { - flag += FLAG_HANDLE_FROM_THREE_TO_FOUR; - } - - if ((targetVersion >= DATABASE_VERSION_5) && (currentVersion < DATABASE_VERSION_5)) { - flag += FLAG_HANDLE_FROM_FOUR_TO_FIVE; - } -} - -int32_t AccessTokenOpenCallback::OnUpgrade(NativeRdb::RdbStore& rdbStore, int32_t currentVersion, int32_t targetVersion) +int32_t AccessTokenOpenCallback::OnUpgrade(NativeRdb::RdbStore& rdbStore, int32_t oldVersion, int32_t newVersion) { - LOGI(ATM_DOMAIN, ATM_TAG, "DB OnUpgrade from currentVersion %{public}d to targetVersion %{public}d.", - currentVersion, targetVersion); - - uint32_t flag = 0; - GetUpgradeFlag(currentVersion, targetVersion, flag); + LOGI(ATM_DOMAIN, ATM_TAG, "DB OnUpgrade from oldVersion %{public}d to newVersion %{public}d.", + oldVersion, newVersion); - return HandleUpgradeWithFlag(rdbStore, flag); + return UpgradeTable(rdbStore, oldVersion); } } // namespace AccessToken } // namespace Security diff --git a/services/accesstokenmanager/test/coverage/accesstoken_database_coverage_test.cpp b/services/accesstokenmanager/test/coverage/accesstoken_database_coverage_test.cpp index 6d78206d9b3efa5213177876a97f1b8a528e82fa..dd12b46a8c20d95c9243a056c2e3c7ae5ec3acdb 100644 --- a/services/accesstokenmanager/test/coverage/accesstoken_database_coverage_test.cpp +++ b/services/accesstokenmanager/test/coverage/accesstoken_database_coverage_test.cpp @@ -31,16 +31,6 @@ namespace Security { namespace AccessToken { namespace { static constexpr uint32_t NOT_EXSIT_ATM_TYPE = 9; -static constexpr uint32_t UPDATE_FLAG_1 = 1; -static constexpr uint32_t UPDATE_FLAG_2 = 2; -static constexpr uint32_t UPDATE_FLAG_3 = 3; -static constexpr uint32_t UPDATE_FLAG_4 = 4; -static constexpr uint32_t UPDATE_FLAG_6 = 6; -static constexpr uint32_t UPDATE_FLAG_7 = 7; -static constexpr uint32_t UPDATE_FLAG_8 = 8; -static constexpr uint32_t UPDATE_FLAG_12 = 12; -static constexpr uint32_t UPDATE_FLAG_14 = 14; -static constexpr uint32_t UPDATE_FLAG_15 = 15; } class AccessTokenDatabaseCoverageTest : public testing::Test { public: @@ -99,56 +89,6 @@ HWTEST_F(AccessTokenDatabaseCoverageTest, TranslationIntoPermissionStatus001, Te ASSERT_EQ(static_cast(PermissionState::PERMISSION_DENIED), permissionState.grantStatus); } -/* - * @tc.name: OnUpgrade001 - * @tc.desc: AccessTokenOpenCallback::OnUpgrade - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(AccessTokenDatabaseCoverageTest, OnUpgrade001, TestSize.Level4) -{ - AccessTokenOpenCallback callback; - uint32_t flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_1, DATABASE_VERSION_2, flag); - ASSERT_EQ(UPDATE_FLAG_1, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_1, DATABASE_VERSION_3, flag); - ASSERT_EQ(UPDATE_FLAG_3, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_1, DATABASE_VERSION_4, flag); - ASSERT_EQ(UPDATE_FLAG_7, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_1, DATABASE_VERSION_5, flag); - ASSERT_EQ(UPDATE_FLAG_15, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_2, DATABASE_VERSION_3, flag); - ASSERT_EQ(UPDATE_FLAG_2, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_2, DATABASE_VERSION_4, flag); - ASSERT_EQ(UPDATE_FLAG_6, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_2, DATABASE_VERSION_5, flag); - ASSERT_EQ(UPDATE_FLAG_14, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_3, DATABASE_VERSION_4, flag); - ASSERT_EQ(UPDATE_FLAG_4, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_3, DATABASE_VERSION_5, flag); - ASSERT_EQ(UPDATE_FLAG_12, flag); - - flag = 0; - callback.GetUpgradeFlag(DATABASE_VERSION_4, DATABASE_VERSION_5, flag); - ASSERT_EQ(UPDATE_FLAG_8, flag); -} - /* * @tc.name: Modify001 * @tc.desc: AccessTokenDb::Modify