From 58994e8f51fdfe671c7279ecc0685e400a9afe82 Mon Sep 17 00:00:00 2001 From: hupeixi Date: Mon, 13 Nov 2023 09:04:27 +0000 Subject: [PATCH] support change path to el3, el4 Signed-off-by: hupeixi --- .../application_context_constant_module.cpp | 2 + .../ability_runtime/context/context_impl.cpp | 4 +- .../src/ability_stage_context.cpp | 2 +- .../context_impl_test.cpp | 51 ++++++++++++++++++- 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/frameworks/js/napi/application_context_constant/application_context_constant_module.cpp b/frameworks/js/napi/application_context_constant/application_context_constant_module.cpp index 61dbfe159a..39addb65e8 100644 --- a/frameworks/js/napi/application_context_constant/application_context_constant_module.cpp +++ b/frameworks/js/napi/application_context_constant/application_context_constant_module.cpp @@ -39,6 +39,8 @@ static napi_value InitAreaModeObject(napi_env env) NAPI_CALL(env, SetEnumItem(env, object, "EL1", 0)); NAPI_CALL(env, SetEnumItem(env, object, "EL2", 1)); + NAPI_CALL(env, SetEnumItem(env, object, "EL3", 2)); + NAPI_CALL(env, SetEnumItem(env, object, "EL4", 3)); return object; } diff --git a/frameworks/native/appkit/ability_runtime/context/context_impl.cpp b/frameworks/native/appkit/ability_runtime/context/context_impl.cpp index 9409c2cb61..95a48661cb 100644 --- a/frameworks/native/appkit/ability_runtime/context/context_impl.cpp +++ b/frameworks/native/appkit/ability_runtime/context/context_impl.cpp @@ -65,7 +65,7 @@ const std::string ContextImpl::CONTEXT_DATABASE("database"); const std::string ContextImpl::CONTEXT_TEMP("/temp"); const std::string ContextImpl::CONTEXT_FILES("/files"); const std::string ContextImpl::CONTEXT_HAPS("/haps"); -const std::string ContextImpl::CONTEXT_ELS[] = {"el1", "el2"}; +const std::string ContextImpl::CONTEXT_ELS[] = {"el1", "el2", "el3", "el4"}; Global::Resource::DeviceType ContextImpl::deviceType_ = Global::Resource::DeviceType::DEVICE_NOT_SET; const std::string OVERLAY_STATE_CHANGED = "usual.event.OVERLAY_STATE_CHANGED"; const int32_t TYPE_RESERVE = 1; @@ -219,7 +219,7 @@ std::string ContextImpl::GetPreferencesDir() int32_t ContextImpl::GetGroupDirWithCheck(const std::string &groupId, bool checkExist, std::string &groupDir) { if (currArea_ == CONTEXT_ELS[0]) { - HILOG_ERROR("GroupDir currently only supports the el2 level"); + HILOG_ERROR("GroupDir currently can't supports the el1 level"); return ERR_INVALID_VALUE; } int errCode = GetBundleManager(); diff --git a/frameworks/simulator/ability_simulator/src/ability_stage_context.cpp b/frameworks/simulator/ability_simulator/src/ability_stage_context.cpp index b1aeb00114..5bcf6899e0 100644 --- a/frameworks/simulator/ability_simulator/src/ability_stage_context.cpp +++ b/frameworks/simulator/ability_simulator/src/ability_stage_context.cpp @@ -32,7 +32,7 @@ constexpr const char *CONTEXT_TEMP("temp"); constexpr const char *CONTEXT_FILES("files"); constexpr const char *CONTEXT_HAPS("haps"); constexpr const char *CONTEXT_ASSET("asset"); -constexpr const char *CONTEXT_ELS[] = {"el1", "el2"}; +constexpr const char *CONTEXT_ELS[] = {"el1", "el2", "el3", "el4"}; constexpr int DIR_DEFAULT_PERM = 0770; } std::shared_ptr AbilityStageContext::GetConfiguration() diff --git a/test/unittest/frameworks_kits_appkit_native_test/context_impl_test.cpp b/test/unittest/frameworks_kits_appkit_native_test/context_impl_test.cpp index 4e716c2933..feef2e79f9 100644 --- a/test/unittest/frameworks_kits_appkit_native_test/context_impl_test.cpp +++ b/test/unittest/frameworks_kits_appkit_native_test/context_impl_test.cpp @@ -239,6 +239,47 @@ HWTEST_F(ContextImplTest, GetDatabaseDir_0100, TestSize.Level1) HILOG_INFO("%{public}s end.", __func__); } +/** + * @tc.name: GetDatabaseDir_0200 + * @tc.desc: Get base directory basic test. + * @tc.type: FUNC + * @tc.require: issueI8G3YE + */ +HWTEST_F(ContextImplTest, GetDatabaseDir_0200, TestSize.Level1) +{ + HILOG_INFO("%{public}s start.", __func__); + auto contextImpl = std::make_shared(); + EXPECT_NE(contextImpl, nullptr); + + // not create by system app and parent context is nullptr + contextImpl->SwitchArea(2); + auto databaseDir = contextImpl->GetDatabaseDir(); + EXPECT_EQ(databaseDir, "/data/storage/el3/database"); + + // create by system app and parent context is not nullptr + contextImpl->SetFlags(CONTEXT_CREATE_BY_SYSTEM_APP); + auto parentContext = std::make_shared(); + EXPECT_NE(parentContext, nullptr); + auto applicationInfo = std::make_shared(); + EXPECT_NE(applicationInfo, nullptr); + applicationInfo->bundleName = "com.test.database"; + parentContext->SetApplicationInfo(applicationInfo); + contextImpl->SetParentContext(parentContext); + contextImpl->SwitchArea(2); + databaseDir = contextImpl->GetDatabaseDir(); + EXPECT_EQ(databaseDir, "/data/app/el3/0/database/com.test.database/"); + + // create by system app and hap module info of parent context is not nullptr + AppExecFwk::HapModuleInfo hapModuleInfo; + hapModuleInfo.moduleName = "test_moduleName"; + contextImpl->InitHapModuleInfo(hapModuleInfo); + contextImpl->SwitchArea(2); + databaseDir = contextImpl->GetDatabaseDir(); + EXPECT_EQ(databaseDir, "/data/app/el3/0/database/com.test.database/test_moduleName"); + + HILOG_INFO("%{public}s end.", __func__); +} + /** * @tc.name: GetPreferencesDir_0100 * @tc.desc: Get preference directory basic test. @@ -369,7 +410,7 @@ HWTEST_F(ContextImplTest, SwitchArea_0100, TestSize.Level1) // invalid mode contextImpl->SwitchArea(-1); - contextImpl->SwitchArea(2); + contextImpl->SwitchArea(4); // valid mode contextImpl->SwitchArea(0); @@ -398,6 +439,14 @@ HWTEST_F(ContextImplTest, GetAreaArea_0100, TestSize.Level1) mode = contextImpl->GetArea(); EXPECT_EQ(mode, 1); + contextImpl->SwitchArea(2); + mode = contextImpl->GetArea(); + EXPECT_EQ(mode, 2); + + contextImpl->SwitchArea(3); + mode = contextImpl->GetArea(); + EXPECT_EQ(mode, 3); + // invalid area_ contextImpl->currArea_ = "invalid"; mode = contextImpl->GetArea();