diff --git a/frameworks/native/appkit/ability_runtime/app/js_ability_stage.cpp b/frameworks/native/appkit/ability_runtime/app/js_ability_stage.cpp index a8136fe61d8e1526d90e04c2fa5a370c711b2c91..659e30c3066cd285f3dd127be5d8e1a5f9fda7c2 100644 --- a/frameworks/native/appkit/ability_runtime/app/js_ability_stage.cpp +++ b/frameworks/native/appkit/ability_runtime/app/js_ability_stage.cpp @@ -672,8 +672,8 @@ int32_t JsAbilityStage::RegisterAppStartupTask(const std::shared_ptrSetIsExcludeFromAutoStart(item.excludeFromAutoStart); jsStartupTask->SetCallCreateOnMainThread(item.callCreateOnMainThread); jsStartupTask->SetWaitOnMainThread(item.waitOnMainThread); - jsStartupTask->SetModuleName(hapModuleInfo->moduleName); - jsStartupTask->SetModuleType(hapModuleInfo->moduleType); + jsStartupTask->SetModuleName(item.moduleName); + jsStartupTask->SetModuleType(item.moduleType); jsStartupTask->SetMatchRules(std::move(item.matchRules)); startupManager->RegisterAppStartupTask(item.name, jsStartupTask); } diff --git a/frameworks/native/appkit/app_startup/js_startup_task.cpp b/frameworks/native/appkit/app_startup/js_startup_task.cpp index 38b35a594247c0fd29c54c6fc2f7cf1997957b59..cce72b5c96f9d44f2b5d550f2ae10f8233ce57a3 100644 --- a/frameworks/native/appkit/app_startup/js_startup_task.cpp +++ b/frameworks/native/appkit/app_startup/js_startup_task.cpp @@ -143,8 +143,8 @@ int32_t JsStartupTask::LoadJsOhmUrl() return ERR_STARTUP_INTERNAL_ERROR; } - std::string moduleNameWithStartupTask = moduleName_ + "::startupTask"; - std::string srcPath(moduleName_ + "/" + srcEntry_); + std::string moduleNameWithStartupTask = GetModuleName() + "::startupTask"; + std::string srcPath(GetModuleName() + "/" + srcEntry_); auto pos = srcPath.rfind('.'); if (pos == std::string::npos) { TAG_LOGE(AAFwkTag::STARTUP, "invalid srcEntry"); @@ -152,6 +152,7 @@ int32_t JsStartupTask::LoadJsOhmUrl() } srcPath.erase(pos); srcPath.append(".abc"); + jsRuntime_.UpdateModuleNameAndAssetPath(GetModuleName()); startupJsRef_ = jsRuntime_.LoadModule(moduleNameWithStartupTask, srcPath, hapPath_, esModule_, false, ohmUrl_); if (startupJsRef_ == nullptr) { TAG_LOGE(AAFwkTag::STARTUP, "startup task null"); diff --git a/frameworks/native/appkit/app_startup/startup_manager.cpp b/frameworks/native/appkit/app_startup/startup_manager.cpp index 81515f80bbac47d60f996e61ca7f7369d875eb97..1eb13642114986b1d14f407bacc9e51c807c3932 100644 --- a/frameworks/native/appkit/app_startup/startup_manager.cpp +++ b/frameworks/native/appkit/app_startup/startup_manager.cpp @@ -1046,6 +1046,7 @@ bool StartupManager::AnalyzeAppStartupTaskInner(const ModuleStartupConfigInfo& i startupTaskInfo.moduleName = info.name_; startupTaskInfo.hapPath = info.hapPath_; startupTaskInfo.esModule = info.esModule_; + startupTaskInfo.moduleType = info.moduleType_; startupTaskInfo.name = startupTaskJson.at(NAME).get(); startupTaskInfo.srcEntry = startupTaskJson.at(SRC_ENTRY).get(); diff --git a/interfaces/kits/native/appkit/app_startup/app_startup_task.h b/interfaces/kits/native/appkit/app_startup/app_startup_task.h index 1eac952ac695ceacea3e646d5a4e3342313dcc05..649c5a588878a7f6260a88830dfb76f064bf561f 100644 --- a/interfaces/kits/native/appkit/app_startup/app_startup_task.h +++ b/interfaces/kits/native/appkit/app_startup/app_startup_task.h @@ -41,6 +41,7 @@ struct StartupTaskInfo { bool callCreateOnMainThread = true; bool waitOnMainThread = true; bool esModule = true; + AppExecFwk::ModuleType moduleType = AppExecFwk::ModuleType::UNKNOWN; StartupTaskMatchRules matchRules; }; @@ -72,7 +73,7 @@ public: AppExecFwk::ModuleType GetModuleType() const; -protected: +private: bool isExcludeFromAutoStart_ = false; std::string moduleName_; AppExecFwk::ModuleType moduleType_ = AppExecFwk::ModuleType::UNKNOWN; diff --git a/test/new_test/unit_test/app_startup/ext_native_startup_manager_test/BUILD.gn b/test/new_test/unit_test/app_startup/ext_native_startup_manager_test/BUILD.gn index 9f58c22f117ce6ac4d1bf8a55e39dfff76dabefd..235cb9f07dcc12f62d1df24ea8ce61f664c4deec 100644 --- a/test/new_test/unit_test/app_startup/ext_native_startup_manager_test/BUILD.gn +++ b/test/new_test/unit_test/app_startup/ext_native_startup_manager_test/BUILD.gn @@ -17,17 +17,14 @@ import("//foundation/ability/ability_runtime/ability_runtime.gni") module_output_path = "ability_runtime/app_startup" copy("ext_native_startup_manager_copy") { - sources = [ - "${ability_runtime_path}/interfaces/kits/native/appkit/app_startup/ext_native_startup_manager.h", - "${ability_runtime_path}/frameworks/native/appkit/app_startup/ext_native_startup_manager.cpp", - ] - outputs = [ "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_manager/{{source_file_part}}" ] + sources = [ "${ability_runtime_path}/interfaces/kits/native/appkit/app_startup/ext_native_startup_manager.h" ] + outputs = [ "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_manager/{{source_file_part}}" ] } ohos_unittest("ext_native_startup_manager_test") { module_out_path = module_output_path - include_dirs = [ + include_dirs = [ "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_manager/", "${ability_runtime_test_path}/new_test/mock/app_startup/ext_native_startup_task", "${ability_runtime_test_path}/new_test/mock/app_startup/startup_manager", @@ -38,16 +35,11 @@ ohos_unittest("ext_native_startup_manager_test") { "${ability_runtime_test_path}/new_test/mock/hilog_tag_wrapper", ] - sources = - [ "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_manager/ext_native_startup_manager.cpp" ] + sources = [ "${ability_runtime_path}/frameworks/native/appkit/app_startup/ext_native_startup_manager.cpp" ] - sources += [ - "ext_native_startup_manager_test.cpp", - ] + sources += [ "ext_native_startup_manager_test.cpp" ] - deps = [ - ":ext_native_startup_manager_copy", - ] + deps = [ ":ext_native_startup_manager_copy" ] cflags = [ "-fno-access-control" ] @@ -57,11 +49,11 @@ ohos_unittest("ext_native_startup_manager_test") { "googletest:gmock_main", "googletest:gtest_main", "hilog:libhilog", - "json:nlohmann_json_static" + "json:nlohmann_json_static", ] } group("unittest") { testonly = true deps = [ ":ext_native_startup_manager_test" ] -} \ No newline at end of file +} diff --git a/test/new_test/unit_test/app_startup/ext_native_startup_task_test/BUILD.gn b/test/new_test/unit_test/app_startup/ext_native_startup_task_test/BUILD.gn index 0ec1531cebcd87d09e592ca61696bc33ff695a19..14f2ca5326aa9418d642504645080a6bd49ec987 100644 --- a/test/new_test/unit_test/app_startup/ext_native_startup_task_test/BUILD.gn +++ b/test/new_test/unit_test/app_startup/ext_native_startup_task_test/BUILD.gn @@ -17,30 +17,20 @@ import("//foundation/ability/ability_runtime/ability_runtime.gni") module_output_path = "ability_runtime/app_startup" copy("ext_native_startup_task_copy") { - sources = [ - "${ability_runtime_path}/interfaces/kits/native/appkit/app_startup/ext_native_startup_task.h", - "${ability_runtime_path}/frameworks/native/appkit/app_startup/ext_native_startup_task.cpp", - ] - outputs = [ "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_task/{{source_file_part}}" ] + sources = [ "${ability_runtime_path}/interfaces/kits/native/appkit/app_startup/ext_native_startup_task.h" ] + outputs = [ "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_task/{{source_file_part}}" ] } ohos_unittest("ext_native_startup_task_test") { module_out_path = module_output_path - include_dirs = [ - "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_task/", - ] + include_dirs = [ "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_task/" ] - sources = - [ "${target_gen_dir}/frameworks/native/appkit/app_startup/ext_native_startup_task/ext_native_startup_task.cpp" ] + sources = [ "${ability_runtime_path}/frameworks/native/appkit/app_startup/ext_native_startup_task.cpp" ] - sources += [ - "ext_native_startup_task_test.cpp", - ] + sources += [ "ext_native_startup_task_test.cpp" ] - deps = [ - ":ext_native_startup_task_copy", - ] + deps = [ ":ext_native_startup_task_copy" ] cflags = [ "-fno-access-control" ] @@ -50,11 +40,11 @@ ohos_unittest("ext_native_startup_task_test") { "googletest:gmock_main", "googletest:gtest_main", "hilog:libhilog", - "json:nlohmann_json_static" + "json:nlohmann_json_static", ] } group("unittest") { testonly = true deps = [ ":ext_native_startup_task_test" ] -} \ No newline at end of file +} diff --git a/test/unittest/frameworks_kits_appkit_native_test/startup_manager_test.cpp b/test/unittest/frameworks_kits_appkit_native_test/startup_manager_test.cpp index 03becf770d9b5f3cbd7059d0cd3174802a3606c0..b0a2b38d0612b1844b138b15bf0c9d67b41e1c49 100644 --- a/test/unittest/frameworks_kits_appkit_native_test/startup_manager_test.cpp +++ b/test/unittest/frameworks_kits_appkit_native_test/startup_manager_test.cpp @@ -144,6 +144,7 @@ HWTEST_F(StartupManagerTest, LoadAppStartupTaskConfig_0100, Function | MediumTes EXPECT_EQ(ret, ERR_OK); StartupTaskInfo startupTaskInfo; startupTaskInfo.name = "test_name"; + startupTaskInfo.moduleType = AppExecFwk::ModuleType::ENTRY; startupManager->pendingStartupTaskInfos_.emplace_back(startupTaskInfo); ret = startupManager->LoadAppStartupTaskConfig(needRunAutoStartupTask); EXPECT_EQ(ret, ERR_OK); @@ -954,6 +955,36 @@ HWTEST_F(StartupManagerTest, AnalyzeAppStartupTaskInner_0200, Function | MediumT GTEST_LOG_(INFO) << "StartupManagerTest AnalyzeAppStartupTaskInner_0200 end"; } +/** + * @tc.name: AnalyzeAppStartupTaskInner_0300 + * @tc.type: FUNC + * @tc.Function: AnalyzeAppStartupTaskInner + */ +HWTEST_F(StartupManagerTest, AnalyzeAppStartupTaskInner_0300, Function | MediumTest | Level1) +{ + GTEST_LOG_(INFO) << "StartupManagerTest AnalyzeAppStartupTaskInner_0300 start"; + std::shared_ptr startupManager = DelayedSingleton::GetInstance(); + EXPECT_TRUE(startupManager != nullptr); + std::string name = "test_name"; + ModuleStartupConfigInfo info(name, "", "", AppExecFwk::ModuleType::ENTRY, false); + std::vector pendingStartupTaskInfos; + nlohmann::json appStartupTaskInnerJson = R"( + { + "srcEntry": "test_entry", + "name": "test_name" + } + )"_json; + bool ret = startupManager->AnalyzeAppStartupTaskInner(info, appStartupTaskInnerJson, pendingStartupTaskInfos); + EXPECT_EQ(ret, true); + ASSERT_EQ(pendingStartupTaskInfos.size(), 1); + EXPECT_EQ(pendingStartupTaskInfos[0].moduleName, name); + EXPECT_EQ(pendingStartupTaskInfos[0].moduleType, AppExecFwk::ModuleType::ENTRY); + EXPECT_EQ(pendingStartupTaskInfos[0].moduleType, AppExecFwk::ModuleType::ENTRY); + EXPECT_EQ(pendingStartupTaskInfos[0].srcEntry, "test_entry"); + EXPECT_EQ(pendingStartupTaskInfos[0].name, "test_name"); + GTEST_LOG_(INFO) << "StartupManagerTest AnalyzeAppStartupTaskInner_0300 end"; +} + /** * @tc.name: AnalyzePreloadSoStartupTaskInner_0100 * @tc.type: FUNC