From 1410790192394a9382f370eb1c80ef3dc25a902a Mon Sep 17 00:00:00 2001 From: njupthan Date: Mon, 24 Jan 2022 19:20:53 +0000 Subject: [PATCH] Codex check Signed-off-by: njupthan --- frameworks/kits/ability/native/BUILD.gn | 4 +- .../kits/ability/native/include/ability.h | 1 - .../ability/native/include/ability_impl.h | 3 +- .../ability/native/include/extension_base.h | 1 - .../native/include/static_subscriber_stub.h | 1 + .../kits/ability/native/src/ability.cpp | 79 +++----- .../kits/ability/native/src/ability_impl.cpp | 12 +- .../extension_base.cpp} | 4 + .../ability/native/src/form_extension.cpp | 1 + .../ability/native/src/service_extension.cpp | 1 + .../src/static_subscriber_extension.cpp | 1 + frameworks/kits/ability/native/test/BUILD.gn | 10 + .../context/js_context_utils.cpp | 3 - .../appkit/native/app/include/main_thread.h | 4 +- .../native/app/include/ohos_application.h | 9 + .../appkit/native/app/src/main_thread.cpp | 11 +- .../native/app/src/ohos_application.cpp | 27 +++ frameworks/kits/appkit/native/test/BUILD.gn | 3 + frameworks/kits/content/cpp/test/BUILD.gn | 24 +-- frameworks/kits/fmskit/BUILD.gn | 4 +- .../include/appmgr/ams_mgr_interface.h | 10 + .../include/appmgr/ams_mgr_proxy.h | 8 + .../app_manager/include/appmgr/ams_mgr_stub.h | 1 + .../include/appmgr/app_mgr_client.h | 10 +- .../include/appmgr/app_scheduler_interface.h | 2 +- .../include/appmgr/app_scheduler_proxy.h | 2 +- .../include/appmgr/configuration.h | 11 +- ...cess_info.h => global_configuration_key.h} | 46 ++--- .../app_manager/src/appmgr/ams_mgr_proxy.cpp | 26 +++ .../app_manager/src/appmgr/ams_mgr_stub.cpp | 12 ++ .../app_manager/src/appmgr/app_mgr_client.cpp | 15 ++ .../src/appmgr/app_scheduler_host.cpp | 8 +- .../src/appmgr/app_scheduler_proxy.cpp | 8 +- .../app_manager/src/appmgr/configuration.cpp | 37 ++-- interfaces/innerkits/form_manager/BUILD.gn | 4 +- interfaces/innerkits/runtime/BUILD.gn | 2 +- interfaces/innerkits/want/BUILD.gn | 2 +- .../kits/napi/aafwk/ability_manager/BUILD.gn | 3 +- .../ability_manager/js_ability_manager.cpp | 39 ++++ .../kits/napi/aafwk/app/app_manager/BUILD.gn | 4 +- .../kits/napi/aafwk/dataUriUtils/BUILD.gn | 4 +- .../kits/napi/aafwk/featureAbility/BUILD.gn | 4 +- .../aafwk/featureAbility/napi_context.cpp | 9 - .../napi/aafwk/form_binding_data/BUILD.gn | 2 +- .../napi/aafwk/inner/napi_common/BUILD.gn | 5 +- .../napi_common/napi_common_configuration.cpp | 52 +++--- .../napi_common/napi_common_configuration.h | 23 +-- .../kits/napi/aafwk/mission_manager/BUILD.gn | 2 +- .../kits/napi/aafwk/particleAbility/BUILD.gn | 4 +- .../kits/napi/aafwk/wantConstant/BUILD.gn | 4 +- ohos.build | 5 +- services/abilitymgr/abilitymgr.gni | 2 - .../include/ability_manager_service.h | 2 - services/abilitymgr/include/ability_record.h | 6 +- services/abilitymgr/include/app_scheduler.h | 13 +- .../resource/ams_service_config.json | 3 +- .../src/ability_manager_service.cpp | 77 +------- services/abilitymgr/src/ability_record.cpp | 16 -- services/abilitymgr/src/app_scheduler.cpp | 12 ++ .../src/configuration_distributor.cpp | 91 --------- services/abilitymgr/test/BUILD.gn | 1 - .../src/appmgr/mock_app_scheduler.cpp | 5 + .../ability_manager_service_test.cpp | 74 +------- .../configuration_test/configuration_test.cpp | 8 +- .../phone/lifecycle_deal_test/BUILD.gn | 2 +- services/appmgr/BUILD.gn | 2 + services/appmgr/include/ams_mgr_scheduler.h | 9 + services/appmgr/include/app_lifecycle_deal.h | 9 +- .../appmgr/include/app_mgr_service_inner.h | 16 ++ services/appmgr/include/app_running_manager.h | 7 + services/appmgr/include/app_running_record.h | 10 +- services/appmgr/src/ams_mgr_scheduler.cpp | 11 ++ services/appmgr/src/app_lifecycle_deal.cpp | 14 +- services/appmgr/src/app_mgr_service_inner.cpp | 52 +++++- services/appmgr/src/app_running_manager.cpp | 14 ++ services/appmgr/src/app_running_record.cpp | 20 +- .../mock/include/mock_ams_mgr_scheduler.h | 1 + .../test/mock/include/mock_app_scheduler.h | 2 +- .../test/mock/include/mock_application.h | 4 +- .../ams_app_life_cycle_test.cpp | 4 +- .../ams_app_running_record_test.cpp | 29 +-- .../ams_ipc_appscheduler_interface_test.cpp | 5 +- services/formmgr/BUILD.gn | 4 +- .../unittest/fms_form_timer_mgr_test/BUILD.gn | 4 +- .../test/mock/include/mock_app_scheduler.h | 2 +- .../ability_mgr_module_test.cpp | 174 ------------------ ...ams_ability_running_record_module_test.cpp | 2 +- .../ams_app_life_cycle_module_test.cpp | 2 +- .../ams_app_mgr_service_module_test.cpp | 2 +- .../ams_app_running_record_module_test.cpp | 5 +- .../ams_ipc_app_scheduler_module_test.cpp | 9 +- tools/test/moduletest/aa/BUILD.gn | 6 +- tools/test/systemtest/aa/BUILD.gn | 6 +- tools/test/unittest/aa/BUILD.gn | 10 +- 94 files changed, 585 insertions(+), 729 deletions(-) rename frameworks/kits/ability/native/{include/extension_base.inl => src/extension_base.cpp} (94%) rename interfaces/innerkits/app_manager/include/appmgr/{app_resident_process_info.h => global_configuration_key.h} (31%) rename services/abilitymgr/include/configuration_distributor.h => interfaces/kits/napi/aafwk/inner/napi_common/napi_common_configuration.cpp (43%) rename services/abilitymgr/include/configuration_holder.h => interfaces/kits/napi/aafwk/inner/napi_common/napi_common_configuration.h (65%) delete mode 100644 services/abilitymgr/src/configuration_distributor.cpp diff --git a/frameworks/kits/ability/native/BUILD.gn b/frameworks/kits/ability/native/BUILD.gn index c2cb1ac238a..05d03cfecf1 100644 --- a/frameworks/kits/ability/native/BUILD.gn +++ b/frameworks/kits/ability/native/BUILD.gn @@ -34,7 +34,6 @@ config("ability_config") { "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/include", "//foundation/aafwk/standard/frameworks/kits/fmskit/native/include", "//foundation/aafwk/standard/frameworks/kits/app/native/app/include", - "//foundation/aafwk/standard/services/common/include", "//foundation/distributedschedule/dmsfwk/services/dtbschedmgr/include", "//base/global/resmgr_standard/interfaces/innerkits/include", "//foundation/aafwk/standard/interfaces/kits/napi/aafwk/featureAbility", @@ -148,6 +147,7 @@ ohos_shared_library("abilitykit_native") { "${SUBSYSTEM_DIR}/src/data_ability_result.cpp", "${SUBSYSTEM_DIR}/src/data_uri_utils.cpp", "${SUBSYSTEM_DIR}/src/extension.cpp", + "${SUBSYSTEM_DIR}/src/extension_base.cpp", "${SUBSYSTEM_DIR}/src/extension_impl.cpp", "${SUBSYSTEM_DIR}/src/extension_module_loader.cpp", "${SUBSYSTEM_DIR}/src/form_extension.cpp", @@ -252,6 +252,7 @@ ohos_shared_library("abilitykit_native") { "ces_standard:cesfwk_innerkits", "form_runtime:fmskit_native", "form_runtime:form_manager", + "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "ipc_js:rpc", "multimodalinput_base:libmmi-client", @@ -264,7 +265,6 @@ ohos_shared_library("abilitykit_native") { public_deps = [ "//base/global/i18n_standard/frameworks/intl:intl_util", "//base/global/resmgr_standard/frameworks/resmgr:global_resmgr", - "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog", "//foundation/ace/napi:ace_napi", "//foundation/graphic/standard:libwmclient", "//foundation/windowmanager/interfaces/kits/napi/window_runtime:window_native_kit", diff --git a/frameworks/kits/ability/native/include/ability.h b/frameworks/kits/ability/native/include/ability.h index 3cdcb7dfadd..901d7c1c705 100755 --- a/frameworks/kits/ability/native/include/ability.h +++ b/frameworks/kits/ability/native/include/ability.h @@ -1470,7 +1470,6 @@ private: std::shared_ptr continuationHandler_ = nullptr; std::shared_ptr continuationManager_ = nullptr; std::shared_ptr continuationRegisterManager_ = nullptr; - std::shared_ptr configuration_ = nullptr; std::shared_ptr abilityInfo_ = nullptr; std::shared_ptr handler_ = nullptr; std::shared_ptr lifecycle_ = nullptr; diff --git a/frameworks/kits/ability/native/include/ability_impl.h b/frameworks/kits/ability/native/include/ability_impl.h index eb2b4731302..60d6e504377 100755 --- a/frameworks/kits/ability/native/include/ability_impl.h +++ b/frameworks/kits/ability/native/include/ability_impl.h @@ -52,7 +52,7 @@ public: * @param useNewMission new mission flag. */ static void SetUseNewMission(bool useNewMission); - + /** * @brief Get if use new mission. * @@ -469,7 +469,6 @@ private: std::shared_ptr abilityLifecycleCallbacks_; std::shared_ptr applactionImpl_; std::shared_ptr contextDeal_; - std::shared_ptr configuration_ = nullptr; private: /** diff --git a/frameworks/kits/ability/native/include/extension_base.h b/frameworks/kits/ability/native/include/extension_base.h index a47252f3df0..58b73012b02 100644 --- a/frameworks/kits/ability/native/include/extension_base.h +++ b/frameworks/kits/ability/native/include/extension_base.h @@ -77,5 +77,4 @@ private: }; } // namespace AbilityRuntime } // namespace OHOS -#include "extension_base.inl" #endif // FOUNDATION_ABILITYRUNTIME_OHOS_EXTENSION_BASE_H \ No newline at end of file diff --git a/frameworks/kits/ability/native/include/static_subscriber_stub.h b/frameworks/kits/ability/native/include/static_subscriber_stub.h index ccf35f76b13..a1689dbe0d6 100644 --- a/frameworks/kits/ability/native/include/static_subscriber_stub.h +++ b/frameworks/kits/ability/native/include/static_subscriber_stub.h @@ -18,6 +18,7 @@ #include #include "istatic_subscriber.h" +#include "static_subscriber_extension.h" namespace OHOS { namespace AppExecFwk { diff --git a/frameworks/kits/ability/native/src/ability.cpp b/frameworks/kits/ability/native/src/ability.cpp index d770bb2007d..89a58cc5d73 100755 --- a/frameworks/kits/ability/native/src/ability.cpp +++ b/frameworks/kits/ability/native/src/ability.cpp @@ -849,76 +849,47 @@ void Ability::OnConfigurationUpdated(const Configuration &configuration) APP_LOGI("%{public}s called.", __func__); } -void Ability::OnConfigurationUpdatedNotify(const Configuration &configuration) +void Ability::OnConfigurationUpdatedNotify(const Configuration &changeConfiguration) { APP_LOGI("%{public}s begin.", __func__); - if (configuration_ == nullptr) { - configuration_ = std::make_shared(configuration); - APP_LOGI("%{public}s begin Configuration init.", __func__); - return; - } - - // Data difference - Configuration differ; - std::vector changeKey; - configuration_->CompareDifferent(changeKey, configuration); - - if (changeKey.empty()) { - APP_LOGE("%{public}s Configuration differ is empty.", __func__); - return; - } - - for (auto &key : changeKey) { - auto item = configuration.GetItemForIdAndKey(key); - if (item.empty()) { - APP_LOGI("%{public}s configuration.GetItemForIdAndKey(%{public}s) is empty.", __func__, key.c_str()); - continue; - } - configuration_->Merge(key, configuration); - differ.Merge(key, configuration); + std::string language; + if (setting_) { + auto displayId = std::atoi(setting_->GetProperty(AbilityStartSetting::WINDOW_DISPLAY_ID_KEY).c_str()); + language = changeConfiguration.GetItem(displayId, GlobalConfigurationKey::SYSTEM_LANGUAGE); + APP_LOGI("displayId :[%{public}d] | language :[%{public}s]", displayId, language.c_str()); + } else { + language = changeConfiguration.GetItem(GlobalConfigurationKey::SYSTEM_LANGUAGE); + APP_LOGI("language :[%{public}s]", language.c_str()); } - // Notify Ability Subclass - OnConfigurationUpdated(differ); - APP_LOGI("%{public}s Notify Ability Subclass.", __func__); // Notify ResourceManager - std::string language = differ.GetItem(GlobalConfigurationKey::SYSTEM_LANGUAGE); - while (language.compare("") != 0) { - std::unique_ptr resConfig(Global::Resource::CreateResConfig()); - if (resConfig == nullptr) { - APP_LOGE("%{public}s resConfig is nullptr.", __func__); - break; - } + std::unique_ptr resConfig(Global::Resource::CreateResConfig()); + if (resConfig != nullptr && !language.empty()) { + APP_LOGE("make resource mgr date"); UErrorCode status = U_ZERO_ERROR; icu::Locale locale = icu::Locale::forLanguageTag(language, status); - if (status != U_ZERO_ERROR) { - APP_LOGI("%{public}s Notify ResourceManager forLanguageTag error[%{public}d].", - __func__, - static_cast(status)); - break; - } - resConfig->SetLocaleInfo(locale); - auto resourceManager = GetResourceManager(); - if (resourceManager == nullptr) { - APP_LOGE("%{public}s resourceManager is nullptr.", __func__); - break; + APP_LOGI("get Locale::forLanguageTag return[%{public}d].", static_cast(status)); + if (status == U_ZERO_ERROR) { + resConfig->SetLocaleInfo(locale); + auto resourceManager = GetResourceManager(); + if (resourceManager != nullptr) { + resourceManager->UpdateResConfig(*resConfig); + APP_LOGI("%{public}s Notify ResourceManager.", __func__); + } } - resourceManager->UpdateResConfig(*resConfig); - APP_LOGI("%{public}s Notify ResourceManager.", __func__); - break; } // Notify WindowScene - if (scene_ != nullptr) { - auto diffConfiguration = std::make_shared(differ); + if (scene_ != nullptr && !language.empty()) { + auto diffConfiguration = std::make_shared(changeConfiguration); scene_->UpdateConfiguration(diffConfiguration); APP_LOGE("%{public}s scene_ -> UpdateConfiguration success.", __func__); - } else { - APP_LOGE("%{public}s scene_ is nullptr.", __func__); } - APP_LOGI("%{public}s end.", __func__); + // Notify Ability Subclass + OnConfigurationUpdated(changeConfiguration); + APP_LOGI("%{public}s Notify Ability Subclass.", __func__); } /** diff --git a/frameworks/kits/ability/native/src/ability_impl.cpp b/frameworks/kits/ability/native/src/ability_impl.cpp index 801b49ee655..6bc705ede09 100755 --- a/frameworks/kits/ability/native/src/ability_impl.cpp +++ b/frameworks/kits/ability/native/src/ability_impl.cpp @@ -824,19 +824,17 @@ void AbilityImpl::ScheduleUpdateConfiguration(const Configuration &config) { APP_LOGI("%{public}s begin.", __func__); - // Update for the first time - if (!configuration_) { - configuration_ = std::make_shared(config); - APP_LOGI("AbilityImpl::Init the configuration"); - return; - } if (ability_ == nullptr) { APP_LOGE("AbilityImpl::ScheduleUpdateConfiguration ability_ is nullptr"); return; } - ability_->OnConfigurationUpdatedNotify(config); + if (lifecycleState_ != AAFwk::ABILITY_STATE_INITIAL) { + APP_LOGD("ability name: [%{public}s]", ability_->GetAbilityName().c_str()); + ability_->OnConfigurationUpdatedNotify(config); + } + APP_LOGI("%{public}s end.", __func__); } diff --git a/frameworks/kits/ability/native/include/extension_base.inl b/frameworks/kits/ability/native/src/extension_base.cpp similarity index 94% rename from frameworks/kits/ability/native/include/extension_base.inl rename to frameworks/kits/ability/native/src/extension_base.cpp index e6bf7ff7e22..bece02508f6 100644 --- a/frameworks/kits/ability/native/include/extension_base.inl +++ b/frameworks/kits/ability/native/src/extension_base.cpp @@ -13,6 +13,10 @@ * limitations under the License. */ +#include "extension_base.h" + +#include "ability_local_record.h" +#include "extension_context.h" #include "hilog_wrapper.h" namespace OHOS { diff --git a/frameworks/kits/ability/native/src/form_extension.cpp b/frameworks/kits/ability/native/src/form_extension.cpp index 4761f4e06d8..46d8cf38a7b 100644 --- a/frameworks/kits/ability/native/src/form_extension.cpp +++ b/frameworks/kits/ability/native/src/form_extension.cpp @@ -16,6 +16,7 @@ #include "form_extension.h" #include "ability_loader.h" +#include "extension_base.cpp" #include "form_extension_context.h" #include "form_runtime/js_form_extension.h" #include "hilog_wrapper.h" diff --git a/frameworks/kits/ability/native/src/service_extension.cpp b/frameworks/kits/ability/native/src/service_extension.cpp index cfbd3f2e78b..f9605b27a7d 100755 --- a/frameworks/kits/ability/native/src/service_extension.cpp +++ b/frameworks/kits/ability/native/src/service_extension.cpp @@ -17,6 +17,7 @@ #include "ability_loader.h" #include "connection_manager.h" +#include "extension_base.cpp" #include "hilog_wrapper.h" #include "js_service_extension.h" #include "runtime.h" diff --git a/frameworks/kits/ability/native/src/static_subscriber_extension.cpp b/frameworks/kits/ability/native/src/static_subscriber_extension.cpp index 8f563ceb96e..2bf23e4f8d0 100644 --- a/frameworks/kits/ability/native/src/static_subscriber_extension.cpp +++ b/frameworks/kits/ability/native/src/static_subscriber_extension.cpp @@ -16,6 +16,7 @@ #include "static_subscriber_extension.h" #include "ability_loader.h" +#include "extension_base.cpp" #include "hilog_wrapper.h" #include "js_static_subscriber_extension.h" #include "runtime.h" diff --git a/frameworks/kits/ability/native/test/BUILD.gn b/frameworks/kits/ability/native/test/BUILD.gn index 11a343f9dbf..0cab4fa2922 100644 --- a/frameworks/kits/ability/native/test/BUILD.gn +++ b/frameworks/kits/ability/native/test/BUILD.gn @@ -91,6 +91,8 @@ config("module_ability_context_config") { ohos_unittest("ability_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/ability_record_mgr.cpp", + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/app_loader.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/application_context.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/ohos_application.cpp", @@ -548,6 +550,7 @@ ohos_unittest("ability_impl_test") { ohos_unittest("ability_thread_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "//foundation/aafwk/standard/frameworks/kits/ability/native/test/mock/include/mock_data_ability_impl.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/app_loader.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/application_context.cpp", @@ -639,6 +642,7 @@ ohos_unittest("form_provider_client_test") { ohos_unittest("data_ability_impl_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "//foundation/aafwk/standard/frameworks/kits/ability/native/test/mock/include/mock_replace_ability_impl.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/app_loader.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/application_context.cpp", @@ -686,6 +690,7 @@ ohos_unittest("data_ability_impl_test") { ohos_unittest("data_ability_impl_file_secondpart_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "//foundation/aafwk/standard/frameworks/kits/ability/native/test/mock/include/mock_replace_ability_impl.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/app_loader.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/application_context.cpp", @@ -733,6 +738,7 @@ ohos_unittest("data_ability_impl_file_secondpart_test") { ohos_unittest("data_ability_impl_file_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "//foundation/aafwk/standard/frameworks/kits/ability/native/test/mock/include/mock_replace_ability_impl.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/app_loader.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/application_context.cpp", @@ -780,6 +786,7 @@ ohos_unittest("data_ability_impl_file_test") { ohos_unittest("ability_thread_dataability_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "//foundation/aafwk/standard/frameworks/kits/ability/native/test/mock/include/mock_data_ability_impl.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/app_loader.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/application_context.cpp", @@ -996,6 +1003,8 @@ ohos_unittest("data_ability_result_test") { ohos_unittest("form_host_client_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/ability_record_mgr.cpp", + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/app_loader.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/application_context.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/ohos_application.cpp", @@ -1039,6 +1048,7 @@ ohos_unittest("form_host_client_test") { ohos_unittest("continuation_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/app_loader.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/application_context.cpp", "//foundation/aafwk/standard/frameworks/kits/appkit/native/app/src/ohos_application.cpp", diff --git a/frameworks/kits/appkit/native/ability_runtime/context/js_context_utils.cpp b/frameworks/kits/appkit/native/ability_runtime/context/js_context_utils.cpp index b5d78c05fc1..08c265d7c6f 100755 --- a/frameworks/kits/appkit/native/ability_runtime/context/js_context_utils.cpp +++ b/frameworks/kits/appkit/native/ability_runtime/context/js_context_utils.cpp @@ -196,9 +196,6 @@ NativeValue* CreateJsBaseContext(NativeEngine& engine, std::shared_ptr BindNativeFunction(engine, *object, "getApplicationContext", JsBaseContext::GetApplicationContext); BindNativeFunction(engine, *object, "switchArea", JsBaseContext::SwitchArea); - // Set field 'stageMode' for 'BaseContext', that we are in Stage Mode. - object->SetProperty("stageMode", CreateJsValue(engine, true)); - return objValue; } } // namespace AbilityRuntime diff --git a/frameworks/kits/appkit/native/app/include/main_thread.h b/frameworks/kits/appkit/native/app/include/main_thread.h index 123c0c7f9b6..987620ff53d 100644 --- a/frameworks/kits/appkit/native/app/include/main_thread.h +++ b/frameworks/kits/appkit/native/app/include/main_thread.h @@ -155,7 +155,7 @@ public: * @param data The launchdata of the application witch launced. * */ - void ScheduleLaunchApplication(const AppLaunchData &data) override; + void ScheduleLaunchApplication(const AppLaunchData &data, const Configuration &config) override; /** * Notify application to launch ability stage. @@ -250,7 +250,7 @@ private: * @param appLaunchData The launchdata of the application witch launced. * */ - void HandleLaunchApplication(const AppLaunchData &appLaunchData); + void HandleLaunchApplication(const AppLaunchData &appLaunchData, const Configuration &config); /** * diff --git a/frameworks/kits/appkit/native/app/include/ohos_application.h b/frameworks/kits/appkit/native/app/include/ohos_application.h index 8e55715e375..6db1072a09b 100644 --- a/frameworks/kits/appkit/native/app/include/ohos_application.h +++ b/frameworks/kits/appkit/native/app/include/ohos_application.h @@ -252,6 +252,13 @@ public: * @param runtime */ const std::unique_ptr& GetRuntime(); + + /* + * + * @brief Will be called the application ends + * + */ + virtual void SetConfiguration(const Configuration &config); void ScheduleAcceptWant(const AAFwk::Want &want, const std::string &moduleName, std::string &flag); @@ -262,6 +269,8 @@ private: std::shared_ptr abilityRuntimeContext_ = nullptr; std::unordered_map> abilityStages_; std::unique_ptr runtime_; + std::shared_ptr configuration_ = nullptr; + }; } // namespace AppExecFwk } // namespace OHOS diff --git a/frameworks/kits/appkit/native/app/src/main_thread.cpp b/frameworks/kits/appkit/native/app/src/main_thread.cpp index 92ea68d88af..ca8433e58f8 100644 --- a/frameworks/kits/appkit/native/app/src/main_thread.cpp +++ b/frameworks/kits/appkit/native/app/src/main_thread.cpp @@ -382,18 +382,18 @@ void MainThread::ScheduleLowMemory() * @param data The launchdata of the application witch launced. * */ -void MainThread::ScheduleLaunchApplication(const AppLaunchData &data) +void MainThread::ScheduleLaunchApplication(const AppLaunchData &data, const Configuration &config) { BYTRACE_NAME(BYTRACE_TAG_APP, __PRETTY_FUNCTION__); APP_LOGI("MainThread::scheduleLaunchApplication start"); wptr weak = this; - auto task = [weak, data]() { + auto task = [weak, data, config]() { auto appThread = weak.promote(); if (appThread == nullptr) { APP_LOGE("appThread is nullptr, HandleLaunchApplication failed."); return; } - appThread->HandleLaunchApplication(data); + appThread->HandleLaunchApplication(data, config); }; if (!mainHandler_->PostTask(task)) { APP_LOGE("MainThread::ScheduleLaunchApplication PostTask task failed"); @@ -771,7 +771,7 @@ bool MainThread::InitResourceManager(std::shared_ptrSetApplicationContext(application_); application_->AttachBaseContext(contextDeal); application_->SetAbilityRecordMgr(abilityRecordMgr_); + application_->SetConfiguration(config); // create contextImpl std::shared_ptr contextImpl = std::make_shared(); @@ -1252,10 +1253,8 @@ void MainThread::Init(const std::shared_ptr &runner, const std::sha if (!watchDogHandler_->PostTask(taskWatchDog)) { APP_LOGE("MainThread::Init WatchDog postTask task failed"); } - /* watchDogHandler_->Init(mainHandler_, watchDogHandler_); APP_LOGI("MainThread:Init before CreateRunner."); - */ TaskHandlerClient::GetInstance()->CreateRunner(); APP_LOGI("MainThread:Init after CreateRunner."); APP_LOGI("MainThread:Init end."); diff --git a/frameworks/kits/appkit/native/app/src/ohos_application.cpp b/frameworks/kits/appkit/native/app/src/ohos_application.cpp index 341f981dd16..460754e114d 100644 --- a/frameworks/kits/appkit/native/app/src/ohos_application.cpp +++ b/frameworks/kits/appkit/native/app/src/ohos_application.cpp @@ -23,6 +23,7 @@ #include "iservice_registry.h" #include "runtime.h" #include "system_ability_definition.h" +#include "ability_thread.h" namespace OHOS { namespace AppExecFwk { @@ -370,6 +371,25 @@ void OHOSApplication::UnregisterElementsCallbacks(const std::shared_ptr changeKeyV; + configuration_->CompareDifferent(changeKeyV, config); + configuration_->Merge(changeKeyV, config); + + //Notify all abilities + APP_LOGI("Number of ability to be notified : [%{public}d]", static_cast(abilityRecordMgr_->GetRecordCount())); + for (const auto &abilityToken : abilityRecordMgr_->GetAllTokens()) { + auto abilityRecord = abilityRecordMgr_->GetAbilityItem(abilityToken); + if (abilityRecord && abilityRecord->GetAbilityThread()) { + abilityRecord->GetAbilityThread()->ScheduleUpdateConfiguration(config); + } + } + for (auto callback : elementsCallbacks_) { if (callback != nullptr) { callback->OnConfigurationUpdated(nullptr, config); @@ -534,6 +554,13 @@ const std::unique_ptr& OHOSApplication::GetRuntime() return runtime_; } +void OHOSApplication::SetConfiguration(const Configuration &config) +{ + if (!configuration_) { + configuration_ = std::make_shared(config); + } +} + void OHOSApplication::ScheduleAcceptWant(const AAFwk::Want &want, const std::string &moduleName, std::string &flag) { APP_LOGI("OHOSApplication::ScheduleAcceptWant: called"); diff --git a/frameworks/kits/appkit/native/test/BUILD.gn b/frameworks/kits/appkit/native/test/BUILD.gn index 7136563ee1c..dcd14487563 100755 --- a/frameworks/kits/appkit/native/test/BUILD.gn +++ b/frameworks/kits/appkit/native/test/BUILD.gn @@ -151,6 +151,7 @@ ohos_unittest("application_test") { ohos_unittest("context_container_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "${aafwk_path}/frameworks/kits/appkit/native/app/src/app_loader.cpp", "../app/src/ohos_application.cpp", "//foundation/aafwk/standard/frameworks/kits/ability/native/test/mock/include/mock_bundle_manager.cpp", @@ -214,6 +215,7 @@ ohos_unittest("context_deal_for_task_dispacher_test") { configs = [ ":module_context_config" ] deps = [ + "${ABILITY_INNERKITS_PATH}/want:want", "${aafwk_path}/frameworks/kits/appkit:appkit_native", "//foundation/aafwk/standard/common/task_dispatcher:appkit_dispatcher_td", @@ -236,6 +238,7 @@ ohos_unittest("context_deal_for_task_dispacher_test") { ohos_unittest("context_deal_test") { module_out_path = module_output_path sources = [ + "//foundation/aafwk/standard/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp", "${aafwk_path}/frameworks/kits/appkit/native/app/src/app_loader.cpp", "../app/src/ohos_application.cpp", "//foundation/aafwk/standard/frameworks/kits/ability/native/test/mock/include/mock_bundle_manager.cpp", diff --git a/frameworks/kits/content/cpp/test/BUILD.gn b/frameworks/kits/content/cpp/test/BUILD.gn index 0532001e85e..25e260bed4d 100644 --- a/frameworks/kits/content/cpp/test/BUILD.gn +++ b/frameworks/kits/content/cpp/test/BUILD.gn @@ -63,7 +63,7 @@ ohos_unittest("intent_parcelable_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "ipc:ipc_core", ] } @@ -84,7 +84,7 @@ ohos_unittest("intent_base_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "ipc:ipc_core", ] } @@ -105,7 +105,7 @@ ohos_unittest("intent_parse_to_uri_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "ipc:ipc_core", ] } @@ -130,7 +130,7 @@ ohos_unittest("intent_parameters_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "ipc:ipc_core", ] } @@ -151,7 +151,7 @@ ohos_unittest("intent_params_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "ipc:ipc_core", ] } @@ -176,7 +176,7 @@ ohos_unittest("intent_filter_test") { "//utils/native/base:utils", ] - external_deps = [ "bundle_framework:appexecfwk_base" ] + external_deps = [ "appexecfwk_standard:appexecfwk_base" ] } ohos_unittest("operation_test") { @@ -200,7 +200,7 @@ ohos_unittest("operation_test") { "//utils/native/base:utils", ] - external_deps = [ "bundle_framework:appexecfwk_base" ] + external_deps = [ "appexecfwk_standard:appexecfwk_base" ] } ohos_unittest("patterns_matcher_test") { @@ -223,7 +223,7 @@ ohos_unittest("patterns_matcher_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", ] } @@ -250,7 +250,7 @@ ohos_unittest("skills_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", ] } @@ -276,7 +276,7 @@ ohos_unittest("want_params_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", ] } @@ -301,7 +301,7 @@ ohos_unittest("want_params_wrapper_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", ] } @@ -325,7 +325,7 @@ ohos_unittest("want_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", ] } diff --git a/frameworks/kits/fmskit/BUILD.gn b/frameworks/kits/fmskit/BUILD.gn index 83e684d0da6..a71a46a7b30 100644 --- a/frameworks/kits/fmskit/BUILD.gn +++ b/frameworks/kits/fmskit/BUILD.gn @@ -54,8 +54,8 @@ ohos_shared_library("fmskit_native") { external_deps = [ "ability_runtime:app_manager", "ability_runtime:want", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "samgr_standard:samgr_proxy", diff --git a/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_interface.h b/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_interface.h index 5f188c581c5..97b1ec63cc6 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_interface.h +++ b/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_interface.h @@ -25,6 +25,7 @@ #include "iapp_state_callback.h" #include "running_process_info.h" #include "istart_specified_ability_response.h" +#include "configuration.h" namespace OHOS { namespace AppExecFwk { @@ -156,6 +157,14 @@ public: virtual void StartSpecifiedAbility(const AAFwk::Want &want, const AppExecFwk::AbilityInfo &abilityInfo) = 0; virtual void RegisterStartSpecifiedAbilityResponse(const sptr &response) = 0; + + /** + * ANotify application update system environment changes. + * + * @param config System environment change parameters. + * @return Returns ERR_OK on success, others on failure. + */ + virtual void UpdateConfiguration(const Configuration &config) = 0; enum class Message { LOAD_ABILITY = 0, @@ -175,6 +184,7 @@ public: GET_RUNNING_PROCESS_INFO_BY_TOKEN, START_SPECIFIED_ABILITY, REGISTER_START_SPECIFIED_ABILITY_RESPONSE, + UPDATE_CONFIGURATION, }; }; } // namespace AppExecFwk diff --git a/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_proxy.h b/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_proxy.h index edfa04e76db..835efb91021 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_proxy.h +++ b/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_proxy.h @@ -149,6 +149,14 @@ public: virtual void StartSpecifiedAbility( const AAFwk::Want &want, const AppExecFwk::AbilityInfo &abilityInfo) override; + + /** + * ANotify application update system environment changes. + * + * @param config System environment change parameters. + * @return Returns ERR_OK on success, others on failure. + */ + virtual void UpdateConfiguration(const Configuration &config) override; virtual void RegisterStartSpecifiedAbilityResponse(const sptr &response) override; private: diff --git a/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_stub.h b/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_stub.h index 10066317c5f..552f08f3066 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_stub.h +++ b/interfaces/innerkits/app_manager/include/appmgr/ams_mgr_stub.h @@ -59,6 +59,7 @@ private: int32_t HandleGetRunningProcessInfoByToken(MessageParcel &data, MessageParcel &reply); int32_t HandleStartSpecifiedAbility(MessageParcel &data, MessageParcel &reply); int32_t HandleRegisterStartSpecifiedAbilityResponse(MessageParcel &data, MessageParcel &reply); + int32_t HandleUpdateConfiguration(MessageParcel &data, MessageParcel &reply); using AmsMgrFunc = int32_t (AmsMgrStub::*)(MessageParcel &data, MessageParcel &reply); std::map memberFuncMap_; diff --git a/interfaces/innerkits/app_manager/include/appmgr/app_mgr_client.h b/interfaces/innerkits/app_manager/include/appmgr/app_mgr_client.h index f09e46546b5..e85d8e9e098 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/app_mgr_client.h +++ b/interfaces/innerkits/app_manager/include/appmgr/app_mgr_client.h @@ -30,7 +30,7 @@ namespace OHOS { namespace AppExecFwk { class AppServiceManager; - +class Configuration; class AppMgrClient { public: AppMgrClient(); @@ -214,6 +214,14 @@ public: * Start a resident process */ virtual void StartupResidentProcess(); + + /** + * ANotify application update system environment changes. + * + * @param config System environment change parameters. + * @return Returns ERR_OK on success, others on failure. + */ + virtual AppMgrResultCode UpdateConfiguration(const Configuration &config); virtual void StartSpecifiedAbility(const AAFwk::Want &want, const AppExecFwk::AbilityInfo &abilityInfo); diff --git a/interfaces/innerkits/app_manager/include/appmgr/app_scheduler_interface.h b/interfaces/innerkits/app_manager/include/appmgr/app_scheduler_interface.h index 76b5b0462c7..631de3d4dbf 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/app_scheduler_interface.h +++ b/interfaces/innerkits/app_manager/include/appmgr/app_scheduler_interface.h @@ -79,7 +79,7 @@ public: * * @return */ - virtual void ScheduleLaunchApplication(const AppLaunchData &) = 0; + virtual void ScheduleLaunchApplication(const AppLaunchData &, const Configuration &) = 0; /** * ScheduleAbilityStageInfo, call ScheduleAbilityStageInfo() through proxy project, diff --git a/interfaces/innerkits/app_manager/include/appmgr/app_scheduler_proxy.h b/interfaces/innerkits/app_manager/include/appmgr/app_scheduler_proxy.h index 15b1060024d..de976e225cd 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/app_scheduler_proxy.h +++ b/interfaces/innerkits/app_manager/include/appmgr/app_scheduler_proxy.h @@ -76,7 +76,7 @@ public: * * @return */ - virtual void ScheduleLaunchApplication(const AppLaunchData &) override; + virtual void ScheduleLaunchApplication(const AppLaunchData &, const Configuration &) override; /** * Notify application to launch ability stage. diff --git a/interfaces/innerkits/app_manager/include/appmgr/configuration.h b/interfaces/innerkits/app_manager/include/appmgr/configuration.h index fad107fecbf..52d92d899de 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/configuration.h +++ b/interfaces/innerkits/app_manager/include/appmgr/configuration.h @@ -53,7 +53,7 @@ public: * * @return void */ - void Merge(const std::string &mergeItemKey, const Configuration &other); + void Merge(const std::vector &diffKeyV, const Configuration &other); /** * @brief obtain the value according to the display number and storage key. @@ -108,15 +108,6 @@ public: */ std::string GetItem(const std::string &key) const; - /** - * @brief obtain the value according to the display number and storage key. - * - * @param key The key obtained from Configuration - * - * @return return empty string if not found | return val if found - */ - std::string GetItemForIdAndKey(const std::string &key) const; - /** * @brief Delete element. * diff --git a/interfaces/innerkits/app_manager/include/appmgr/app_resident_process_info.h b/interfaces/innerkits/app_manager/include/appmgr/global_configuration_key.h similarity index 31% rename from interfaces/innerkits/app_manager/include/appmgr/app_resident_process_info.h rename to interfaces/innerkits/app_manager/include/appmgr/global_configuration_key.h index 26b373d1e8f..2cbbf7ace4c 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/app_resident_process_info.h +++ b/interfaces/innerkits/app_manager/include/appmgr/global_configuration_key.h @@ -13,41 +13,19 @@ * limitations under the License. */ -#ifndef FOUNDATION_APPEXECFWK_INTERFACES_INNERKITS_APPEXECFWK_CORE_INCLUDE_APPMGR_APP_RESIDENT_PROCESS_INFO_H -#define FOUNDATION_APPEXECFWK_INTERFACES_INNERKITS_APPEXECFWK_CORE_INCLUDE_APPMGR_APP_RESIDENT_PROCESS_INFO_H +#ifndef OHOS_APPEXECFWK_INTERFACES_INNERKITS_GLOBAL_CONFIGURATION_KEY_H +#define OHOS_APPEXECFWK_INTERFACES_INNERKITS_GLOBAL_CONFIGURATION_KEY_H -#include "parcel.h" -#include "hap_module_info.h" +#include namespace OHOS { namespace AppExecFwk { -struct AppResidentProcessInfo : public Parcelable { - /** - * @brief read this Sequenceable object from a Parcel. - * - * @param inParcel Indicates the Parcel object into which the Sequenceable object has been marshaled. - * @return Returns true if read successed; returns false otherwise. - */ - bool ReadFromParcel(Parcel &parcel); - - /** - * @brief Marshals this Sequenceable object into a Parcel. - * - * @param outParcel Indicates the Parcel object to which the Sequenceable object will be marshaled. - */ - virtual bool Marshalling(Parcel &parcel) const override; - - /** - * @brief Unmarshals this Sequenceable object from a Parcel. - * - * @param inParcel Indicates the Parcel object into which the Sequenceable object has been marshaled. - */ - static AppResidentProcessInfo *Unmarshalling(Parcel &parcel); - - // This information should be needed right now - bool isKeepAliveApp_ = false; - std::vector abilityStage_; -}; -} // namespace AppExecFwk -} // namespace OHOS -#endif // FOUNDATION_APPEXECFWK_INTERFACES_INNERKITS_APPEXECFWK_CORE_INCLUDE_APPMGR_APP_RESIDENT_PROCESS_INFO_H \ No newline at end of file +namespace GlobalConfigurationKey { + /* For the time being, there is no uniform standard */ + /* Must be synchronized with the keystore(SystemConfigurationKeyStore)in the configuration */ + static const std::string SYSTEM_LANGUAGE {"ohos.system.language"}; + static const std::string SYSTEM_ORIENTATION {"ohos.system.orientation"}; +} // namespace GlobalConfigurationKey +} // namespace AppExecFwk +} // namespace OHOS +#endif // OHOS_APPEXECFWK_INTERFACES_INNERKITS_GLOBAL_CONFIGURATION_KEY_H \ No newline at end of file diff --git a/interfaces/innerkits/app_manager/src/appmgr/ams_mgr_proxy.cpp b/interfaces/innerkits/app_manager/src/appmgr/ams_mgr_proxy.cpp index 225eda402eb..8b97b0bc212 100644 --- a/interfaces/innerkits/app_manager/src/appmgr/ams_mgr_proxy.cpp +++ b/interfaces/innerkits/app_manager/src/appmgr/ams_mgr_proxy.cpp @@ -485,5 +485,31 @@ void AmsMgrProxy::RegisterStartSpecifiedAbilityResponse(const sptr remote = Remote(); + if (remote == nullptr) { + APP_LOGE("Remote() is NULL"); + return; + } + int32_t ret = + remote->SendRequest(static_cast(IAmsMgr::Message::UPDATE_CONFIGURATION), data, reply, option); + if (ret != NO_ERROR) { + APP_LOGW("SendRequest is failed, error code: %{public}d", ret); + } + APP_LOGD("UpdateConfiguration end"); +} } // namespace AppExecFwk } // namespace OHOS diff --git a/interfaces/innerkits/app_manager/src/appmgr/ams_mgr_stub.cpp b/interfaces/innerkits/app_manager/src/appmgr/ams_mgr_stub.cpp index fdf65465cc9..ccb013efd89 100644 --- a/interfaces/innerkits/app_manager/src/appmgr/ams_mgr_stub.cpp +++ b/interfaces/innerkits/app_manager/src/appmgr/ams_mgr_stub.cpp @@ -62,6 +62,8 @@ AmsMgrStub::AmsMgrStub() &AmsMgrStub::HandleStartSpecifiedAbility; memberFuncMap_[static_cast(IAmsMgr::Message::REGISTER_START_SPECIFIED_ABILITY_RESPONSE)] = &AmsMgrStub::HandleRegisterStartSpecifiedAbilityResponse; + memberFuncMap_[static_cast(IAmsMgr::Message::UPDATE_CONFIGURATION)] = + &AmsMgrStub::HandleUpdateConfiguration; } AmsMgrStub::~AmsMgrStub() @@ -268,5 +270,15 @@ int32_t AmsMgrStub::HandleRegisterStartSpecifiedAbilityResponse(MessageParcel &d RegisterStartSpecifiedAbilityResponse(response); return NO_ERROR; } + +int32_t AmsMgrStub::HandleUpdateConfiguration(MessageParcel &data, MessageParcel &reply) +{ + std::unique_ptr config(data.ReadParcelable()); + if (config) { + UpdateConfiguration(*config); + return NO_ERROR; + } + return UNKNOWN_ERROR; +} } // namespace AppExecFwk } // namespace OHOS \ No newline at end of file diff --git a/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp b/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp index 39017601df7..52d429916e7 100644 --- a/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp +++ b/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp @@ -381,5 +381,20 @@ void AppMgrClient::ScheduleAcceptWantDone(const int32_t recordId, const AAFwk::W service->ScheduleAcceptWantDone(recordId, want, flag); } + +AppMgrResultCode AppMgrClient::UpdateConfiguration(const Configuration &config) +{ + sptr service = iface_cast(remote_); + if (service == nullptr) { + return AppMgrResultCode::ERROR_SERVICE_NOT_CONNECTED; + } + sptr amsService = service->GetAmsMgr(); + if (amsService == nullptr) { + return AppMgrResultCode::ERROR_SERVICE_NOT_CONNECTED; + } + amsService->UpdateConfiguration(config); + return AppMgrResultCode::RESULT_OK; +} + } // namespace AppExecFwk } // namespace OHOS diff --git a/interfaces/innerkits/app_manager/src/appmgr/app_scheduler_host.cpp b/interfaces/innerkits/app_manager/src/appmgr/app_scheduler_host.cpp index e5eb77b8c53..c5bcd6989b7 100644 --- a/interfaces/innerkits/app_manager/src/appmgr/app_scheduler_host.cpp +++ b/interfaces/innerkits/app_manager/src/appmgr/app_scheduler_host.cpp @@ -138,13 +138,17 @@ int32_t AppSchedulerHost::HandleScheduleLaunchApplication(MessageParcel &data, M { BYTRACE(BYTRACE_TAG_APP); std::unique_ptr launchData(data.ReadParcelable()); - + std::unique_ptr config(data.ReadParcelable()); if (!launchData) { APP_LOGE("ReadParcelable failed"); return ERR_APPEXECFWK_PARCEL_ERROR; } + if (!config) { + APP_LOGE("ReadParcelable failed"); + return ERR_APPEXECFWK_PARCEL_ERROR; + } - ScheduleLaunchApplication(*launchData); + ScheduleLaunchApplication(*launchData, *config); return NO_ERROR; } diff --git a/interfaces/innerkits/app_manager/src/appmgr/app_scheduler_proxy.cpp b/interfaces/innerkits/app_manager/src/appmgr/app_scheduler_proxy.cpp index bd96ac4a3fb..30f1b86ea73 100644 --- a/interfaces/innerkits/app_manager/src/appmgr/app_scheduler_proxy.cpp +++ b/interfaces/innerkits/app_manager/src/appmgr/app_scheduler_proxy.cpp @@ -186,7 +186,7 @@ void AppSchedulerProxy::ScheduleCleanAbility(const sptr &token) } } -void AppSchedulerProxy::ScheduleLaunchApplication(const AppLaunchData &launchData) +void AppSchedulerProxy::ScheduleLaunchApplication(const AppLaunchData &launchData, const Configuration &config) { APP_LOGI("AppSchedulerProxy ScheduleLaunchApplication start"); MessageParcel data; @@ -197,6 +197,12 @@ void AppSchedulerProxy::ScheduleLaunchApplication(const AppLaunchData &launchDat } if (!data.WriteParcelable(&launchData)) { + APP_LOGE("WriteParcelable launchData failed"); + return ; + } + + if (!data.WriteParcelable(&config)) { + APP_LOGE("WriteParcelable config failed"); return ; } diff --git a/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp b/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp index 06a17da7534..9d59cf17ee9 100755 --- a/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp +++ b/interfaces/innerkits/app_manager/src/appmgr/configuration.cpp @@ -27,8 +27,8 @@ namespace ConfigurationInner { * This must be synchronized with the value in GlobalConfigurationKey */ const std::vector SystemConfigurationKeyStore { - OHOS::AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, - OHOS::AAFwk::GlobalConfigurationKey::SYSTEM_ORIENTATION, + OHOS::AppExecFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, + OHOS::AppExecFwk::GlobalConfigurationKey::SYSTEM_ORIENTATION, }; } @@ -161,13 +161,18 @@ void Configuration::CompareDifferent(std::vector &diffKeyV, const C } } -void Configuration::Merge(const std::string &mergeItemKey, const Configuration &other) +void Configuration::Merge(const std::vector &diffKeyV, const Configuration &other) { - auto myItem = GetValue(mergeItemKey); - auto otherItem = other.GetValue(mergeItemKey); - // myItem possible empty - if (!otherItem.empty() && otherItem != myItem) { - configParameter_[mergeItemKey] = otherItem; + if (diffKeyV.empty()) { + return; + } + for (const auto &mergeItemKey : diffKeyV) { + auto myItem = GetValue(mergeItemKey); + auto otherItem = other.GetValue(mergeItemKey); + // myItem possible empty + if (!otherItem.empty() && otherItem != myItem) { + configParameter_[mergeItemKey] = otherItem; + } } } @@ -195,22 +200,6 @@ std::string Configuration::GetItem(const std::string &key) const return GetItem(defaultDisplayId_, key); } -std::string Configuration::GetItemForIdAndKey(const std::string &key) const -{ - if (key.empty()) { - return ConfigurationInner::EMPTY_STRING; - } - - APP_LOGI("Configuration::%{public}s called. [%{public}s]", __func__, key.c_str()); - - auto iter = configParameter_.find(key); - if (iter != configParameter_.end()) { - return iter->second; - } - - return ConfigurationInner::EMPTY_STRING; -} - int Configuration::RemoveItem(const std::string &key) { return RemoveItem(defaultDisplayId_, key); diff --git a/interfaces/innerkits/form_manager/BUILD.gn b/interfaces/innerkits/form_manager/BUILD.gn index 73d6404cc3e..f01aed90c67 100644 --- a/interfaces/innerkits/form_manager/BUILD.gn +++ b/interfaces/innerkits/form_manager/BUILD.gn @@ -63,8 +63,8 @@ ohos_shared_library("form_manager") { ] external_deps = [ - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "native_appdatamgr:native_appdatafwk", diff --git a/interfaces/innerkits/runtime/BUILD.gn b/interfaces/innerkits/runtime/BUILD.gn index a762241cc37..18b5162d62b 100644 --- a/interfaces/innerkits/runtime/BUILD.gn +++ b/interfaces/innerkits/runtime/BUILD.gn @@ -64,8 +64,8 @@ ohos_shared_library("runtime") { external_deps = [ "ability_runtime:want", + "appexecfwk_standard:appexecfwk_base", "appexecfwk_standard:libeventhandler", - "bundle_framework:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", ] diff --git a/interfaces/innerkits/want/BUILD.gn b/interfaces/innerkits/want/BUILD.gn index 22c3ae7cb84..2e37448b532 100644 --- a/interfaces/innerkits/want/BUILD.gn +++ b/interfaces/innerkits/want/BUILD.gn @@ -70,7 +70,7 @@ ohos_shared_library("want") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] diff --git a/interfaces/kits/napi/aafwk/ability_manager/BUILD.gn b/interfaces/kits/napi/aafwk/ability_manager/BUILD.gn index c2ea00457f0..22cb6e31ae6 100644 --- a/interfaces/kits/napi/aafwk/ability_manager/BUILD.gn +++ b/interfaces/kits/napi/aafwk/ability_manager/BUILD.gn @@ -35,6 +35,7 @@ ohos_shared_library("abilitymanager_napi") { deps = [ "//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native", + "//foundation/aafwk/standard/interfaces/innerkits/app_manager:app_manager", "//foundation/aafwk/standard/interfaces/innerkits/base:base", "//foundation/aafwk/standard/interfaces/innerkits/want:want", "//foundation/aafwk/standard/interfaces/kits/napi/aafwk/inner/napi_common:napi_common", @@ -50,7 +51,7 @@ ohos_shared_library("abilitymanager_napi") { "ability_runtime:ability_manager", "ability_runtime:runtime", "ability_runtime:want", - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "ipc_js:rpc", diff --git a/interfaces/kits/napi/aafwk/ability_manager/js_ability_manager.cpp b/interfaces/kits/napi/aafwk/ability_manager/js_ability_manager.cpp index a86da7106b1..3ea6f144f73 100644 --- a/interfaces/kits/napi/aafwk/ability_manager/js_ability_manager.cpp +++ b/interfaces/kits/napi/aafwk/ability_manager/js_ability_manager.cpp @@ -27,6 +27,7 @@ #include "system_ability_definition.h" #include "js_ability_manager_utils.h" #include "event_runner.h" +#include "napi_common_configuration.h" namespace OHOS { namespace AbilityRuntime { @@ -55,6 +56,12 @@ public: return (me != nullptr) ? me->OnGetExtensionRunningInfos(*engine, *info) : nullptr; } + static NativeValue* UpdateConfiguration(NativeEngine* engine, NativeCallbackInfo* info) + { + JsAbilityManager* me = CheckParamsAndGetThis(engine, info); + return (me != nullptr) ? me->OnUpdateConfiguration(*engine, *info) : nullptr; + } + private: NativeValue* OnGetAbilityRunningInfos(NativeEngine &engine, NativeCallbackInfo &info) { @@ -107,6 +114,37 @@ private: engine, CreateAsyncTaskWithLastParam(engine, lastParam, nullptr, std::move(complete), &result)); return result; } + + NativeValue* OnUpdateConfiguration(NativeEngine &engine, NativeCallbackInfo &info) + { + HILOG_INFO("%{public}s is called", __FUNCTION__); + if (info.argc == 0) { + HILOG_ERROR("Not enough params"); + return engine.CreateUndefined(); + } + + AppExecFwk::Configuration changeConfig; + if (!UnwrapConfiguration(reinterpret_cast(&engine), + reinterpret_cast(info.argv[0]), changeConfig)) { + HILOG_INFO("OnStartAbility start options is used."); + return engine.CreateUndefined(); + } + + AsyncTask::CompleteCallback complete = [changeConfig](NativeEngine& engine, AsyncTask& task, int32_t status) { + auto errcode = AbilityManagerClient::GetInstance()->UpdateConfiguration(changeConfig); + if (errcode == 0) { + task.Resolve(engine, engine.CreateUndefined()); + } else { + task.Reject(engine, CreateJsError(engine, errcode, "update config failed.")); + } + }; + + NativeValue* lastParam = (info.argc == 1) ? nullptr : info.argv[1]; + NativeValue* result = nullptr; + AsyncTask::Schedule( + engine, CreateAsyncTaskWithLastParam(engine, lastParam, nullptr, std::move(complete), &result)); + return result; + } }; } // namespace @@ -131,6 +169,7 @@ NativeValue* JsAbilityManagerInit(NativeEngine* engine, NativeValue* exportObj) HILOG_INFO("JsAbilityManagerInit BindNativeFunction called"); BindNativeFunction(*engine, *object, "getAbilityRunningInfos", JsAbilityManager::GetAbilityRunningInfos); BindNativeFunction(*engine, *object, "getExtensionRunningInfos", JsAbilityManager::GetExtensionRunningInfos); + BindNativeFunction(*engine, *object, "updateConfiguration", JsAbilityManager::UpdateConfiguration); HILOG_INFO("JsAbilityManagerInit end"); return engine->CreateUndefined(); } diff --git a/interfaces/kits/napi/aafwk/app/app_manager/BUILD.gn b/interfaces/kits/napi/aafwk/app/app_manager/BUILD.gn index f3d19a47027..0f3826ab65f 100644 --- a/interfaces/kits/napi/aafwk/app/app_manager/BUILD.gn +++ b/interfaces/kits/napi/aafwk/app/app_manager/BUILD.gn @@ -44,8 +44,8 @@ ohos_shared_library("appmanager_napi") { external_deps = [ "ability_runtime:app_manager", "ability_runtime:runtime", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] diff --git a/interfaces/kits/napi/aafwk/dataUriUtils/BUILD.gn b/interfaces/kits/napi/aafwk/dataUriUtils/BUILD.gn index a95e5238b87..6e16f2a7699 100644 --- a/interfaces/kits/napi/aafwk/dataUriUtils/BUILD.gn +++ b/interfaces/kits/napi/aafwk/dataUriUtils/BUILD.gn @@ -42,9 +42,9 @@ ohos_shared_library("datauriutils") { "ability_runtime:ability_manager", "ability_runtime:app_manager", "ability_runtime:want", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "appexecfwk_standard:libeventhandler", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] diff --git a/interfaces/kits/napi/aafwk/featureAbility/BUILD.gn b/interfaces/kits/napi/aafwk/featureAbility/BUILD.gn index 24678b6ed40..28c832dfe47 100644 --- a/interfaces/kits/napi/aafwk/featureAbility/BUILD.gn +++ b/interfaces/kits/napi/aafwk/featureAbility/BUILD.gn @@ -56,9 +56,9 @@ ohos_shared_library("featureability") { "ability_runtime:ability_manager", "ability_runtime:app_manager", "ability_runtime:want", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "appexecfwk_standard:libeventhandler", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "native_appdatamgr:native_appdatafwk", diff --git a/interfaces/kits/napi/aafwk/featureAbility/napi_context.cpp b/interfaces/kits/napi/aafwk/featureAbility/napi_context.cpp index 6f73e78312c..b32246015c5 100644 --- a/interfaces/kits/napi/aafwk/featureAbility/napi_context.cpp +++ b/interfaces/kits/napi/aafwk/featureAbility/napi_context.cpp @@ -40,15 +40,6 @@ napi_value ContextConstructor(napi_env env, napi_callback_info info) { napi_value jsthis = nullptr; NAPI_CALL(env, napi_get_cb_info(env, info, nullptr, nullptr, &jsthis, nullptr)); - - napi_value value = nullptr; - NAPI_CALL(env, napi_get_boolean(env, false, &value)); - - napi_property_descriptor desc[] = { - DECLARE_NAPI_PROPERTY("stageMode", value), - }; - NAPI_CALL(env, napi_define_properties(env, jsthis, sizeof(desc) / sizeof(desc[0]), desc)); - return jsthis; } diff --git a/interfaces/kits/napi/aafwk/form_binding_data/BUILD.gn b/interfaces/kits/napi/aafwk/form_binding_data/BUILD.gn index 8105005e1fb..329d2846548 100644 --- a/interfaces/kits/napi/aafwk/form_binding_data/BUILD.gn +++ b/interfaces/kits/napi/aafwk/form_binding_data/BUILD.gn @@ -30,7 +30,7 @@ ohos_shared_library("formbindingdata_napi") { external_deps = [ "ability_runtime:runtime", - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "form_runtime:form_manager", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", diff --git a/interfaces/kits/napi/aafwk/inner/napi_common/BUILD.gn b/interfaces/kits/napi/aafwk/inner/napi_common/BUILD.gn index e22581fe298..f26273fd7a7 100644 --- a/interfaces/kits/napi/aafwk/inner/napi_common/BUILD.gn +++ b/interfaces/kits/napi/aafwk/inner/napi_common/BUILD.gn @@ -23,6 +23,7 @@ ohos_shared_library("napi_common") { sources = [ "napi_common_ability.cpp", + "napi_common_configuration.cpp", "napi_common_start_options.cpp", "napi_common_util.cpp", "napi_common_want.cpp", @@ -41,9 +42,9 @@ ohos_shared_library("napi_common") { "ability_runtime:ability_manager", "ability_runtime:app_manager", "ability_runtime:want", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "appexecfwk_standard:libeventhandler", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "ipc_js:rpc", diff --git a/services/abilitymgr/include/configuration_distributor.h b/interfaces/kits/napi/aafwk/inner/napi_common/napi_common_configuration.cpp similarity index 43% rename from services/abilitymgr/include/configuration_distributor.h rename to interfaces/kits/napi/aafwk/inner/napi_common/napi_common_configuration.cpp index 8934b55bee4..05970a293c2 100644 --- a/services/abilitymgr/include/configuration_distributor.h +++ b/interfaces/kits/napi/aafwk/inner/napi_common/napi_common_configuration.cpp @@ -12,30 +12,36 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#ifndef OHOS_AAFWK_CONFIGURATION_DISTRIBUTOR_H -#define OHOS_AAFWK_CONFIGURATION_DISTRIBUTOR_H -#include -#include -#include "configuration_holder.h" -#include "configuration.h" -#include "nocopyable.h" +#include "napi_common_configuration.h" + +#include "hilog_wrapper.h" +#include "napi_common_util.h" namespace OHOS { -namespace AAFwk { -class ConfigurationDistributor final : public NoCopyable { -public: - ConfigurationDistributor(); - ~ConfigurationDistributor(); - void Atach(const std::weak_ptr &ob); - void Detach(const std::weak_ptr &ob); - void UpdateConfiguration(const AppExecFwk::Configuration &newConfig); - void InitConfiguration(const AppExecFwk::Configuration &); -private: - std::list> observerList_; - std::mutex configLock_; - AppExecFwk::Configuration config_; -}; -} // namespace AAFwk +namespace AppExecFwk { + +EXTERN_C_START +bool UnwrapConfiguration(napi_env env, napi_value param, Configuration &config) +{ + HILOG_INFO("%{public}s called.", __func__); + + if (!IsTypeForNapiValue(env, param, napi_object)) { + HILOG_INFO("%{public}s called. Params is invalid.", __func__); + return false; + } + + std::string language {""}; + if (UnwrapStringByPropertyName(env, param, "language", language)) { + HILOG_DEBUG("The parsed language part %{public}s", language.c_str()); + if (!config.AddItem(GlobalConfigurationKey::SYSTEM_LANGUAGE, language)) { + HILOG_ERROR("language Parsing failed"); + return false; + } + } + + return true; +} +EXTERN_C_END +} // namespace AppExecFwk } // namespace OHOS -#endif // OHOS_AAFWK_CONFIGURATION_DISTRIBUTOR_H \ No newline at end of file diff --git a/services/abilitymgr/include/configuration_holder.h b/interfaces/kits/napi/aafwk/inner/napi_common/napi_common_configuration.h similarity index 65% rename from services/abilitymgr/include/configuration_holder.h rename to interfaces/kits/napi/aafwk/inner/napi_common/napi_common_configuration.h index a80d99ca60e..520a9119944 100644 --- a/services/abilitymgr/include/configuration_holder.h +++ b/interfaces/kits/napi/aafwk/inner/napi_common/napi_common_configuration.h @@ -12,19 +12,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#ifndef OHOS_AAFWK_CONFIGURATION_HOLDER_H -#define OHOS_AAFWK_CONFIGURATION_HOLDER_H +#ifndef OHOS_APPEXECFWK_NAPI_COMMON_CONFIGURATION_H +#define OHOS_APPEXECFWK_NAPI_COMMON_CONFIGURATION_H + +#include "napi_common_data.h" #include "configuration.h" namespace OHOS { -namespace AAFwk { -class ConfigurationHolder { -public: - virtual ~ConfigurationHolder() {}; - virtual void UpdateConfiguration(const AppExecFwk::Configuration &config) = 0; - virtual int GetId() = 0; -}; -} // namespace AAFwk +namespace AppExecFwk { +EXTERN_C_START + +bool UnwrapConfiguration(napi_env env, napi_value param, Configuration &config); + +EXTERN_C_END +} // namespace AppExecFwk } // namespace OHOS -#endif // OHOS_AAFWK_CONFIGURATION_HOLDER_H \ No newline at end of file +#endif // OHOS_APPEXECFWK_NAPI_COMMON_CONFIGURATION_H diff --git a/interfaces/kits/napi/aafwk/mission_manager/BUILD.gn b/interfaces/kits/napi/aafwk/mission_manager/BUILD.gn index 49082782e53..7aa7f321e71 100644 --- a/interfaces/kits/napi/aafwk/mission_manager/BUILD.gn +++ b/interfaces/kits/napi/aafwk/mission_manager/BUILD.gn @@ -51,7 +51,7 @@ ohos_shared_library("missionmanager_napi") { "ability_runtime:ability_manager", "ability_runtime:runtime", "ability_runtime:want", - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "ipc_js:rpc", diff --git a/interfaces/kits/napi/aafwk/particleAbility/BUILD.gn b/interfaces/kits/napi/aafwk/particleAbility/BUILD.gn index bbdfb232b7c..2966af83c99 100644 --- a/interfaces/kits/napi/aafwk/particleAbility/BUILD.gn +++ b/interfaces/kits/napi/aafwk/particleAbility/BUILD.gn @@ -55,9 +55,9 @@ ohos_shared_library("particleability") { "ability_runtime:ability_manager", "ability_runtime:app_manager", "ability_runtime:want", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "appexecfwk_standard:libeventhandler", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", "native_appdatamgr:native_appdatafwk", diff --git a/interfaces/kits/napi/aafwk/wantConstant/BUILD.gn b/interfaces/kits/napi/aafwk/wantConstant/BUILD.gn index 9b160efaa89..8bb16dcf82a 100644 --- a/interfaces/kits/napi/aafwk/wantConstant/BUILD.gn +++ b/interfaces/kits/napi/aafwk/wantConstant/BUILD.gn @@ -40,9 +40,9 @@ ohos_shared_library("wantconstant") { "ability_runtime:ability_manager", "ability_runtime:app_manager", "ability_runtime:want", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "appexecfwk_standard:libeventhandler", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", "hiviewdfx_hilog_native:libhilog", ] diff --git a/ohos.build b/ohos.build index 738076ff300..3bd6e18ad01 100755 --- a/ohos.build +++ b/ohos.build @@ -114,11 +114,10 @@ "header": { "header_base": "//foundation/aafwk/standard/frameworks/kits/ability/native/include/", "header_files": [ + "extension.h", "extension_base.h", - "extension_context.h", - "extension_module_loader.h", "service_extension.h", - "service_extension_context.h" + "extension_module_loader.h" ] }, "name": "//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native" diff --git a/services/abilitymgr/abilitymgr.gni b/services/abilitymgr/abilitymgr.gni index 4778cad5486..6c30b4c541f 100644 --- a/services/abilitymgr/abilitymgr.gni +++ b/services/abilitymgr/abilitymgr.gni @@ -69,10 +69,8 @@ abilityms_files = [ "${services_path}/abilitymgr/src/screenshot_handler.cpp", "${services_path}/abilitymgr/src/screenshot_response.cpp", "${services_path}/abilitymgr/src/ams_configuration_parameter.cpp", - "${services_path}/abilitymgr/src/mission_index_info.cpp", "${services_path}/abilitymgr/src/lock_screen_event_subscriber.cpp", - "${services_path}/abilitymgr/src/configuration_distributor.cpp", # new ability manager service here "${services_path}/abilitymgr/src/inner_mission_info.cpp", diff --git a/services/abilitymgr/include/ability_manager_service.h b/services/abilitymgr/include/ability_manager_service.h index 94fc4b253f1..b87878cbd2c 100644 --- a/services/abilitymgr/include/ability_manager_service.h +++ b/services/abilitymgr/include/ability_manager_service.h @@ -676,7 +676,6 @@ public: int CheckPermission(const std::string &bundleName, const std::string &permission); void UpdateLockScreenState(bool isLockScreen); - std::shared_ptr GetConfiguration(); void OnAcceptWantResponse(const AAFwk::Want &want, const std::string &flag); void OnStartSpecifiedAbilityTimeoutResponse(const AAFwk::Want &want); @@ -937,7 +936,6 @@ private: std::shared_ptr pendingWantManager_; std::shared_ptr systemAppManager_; std::shared_ptr amsConfigResolver_; - std::shared_ptr configuration_; const static std::map dumpMap; // new ams here diff --git a/services/abilitymgr/include/ability_record.h b/services/abilitymgr/include/ability_record.h index 8400c826cfb..f2f61cd9640 100644 --- a/services/abilitymgr/include/ability_record.h +++ b/services/abilitymgr/include/ability_record.h @@ -29,7 +29,6 @@ #include "app_scheduler.h" #include "application_info.h" #include "ability_record_info.h" -#include "configuration_holder.h" #include "lifecycle_deal.h" #include "lifecycle_state_info.h" #include "want.h" @@ -156,7 +155,7 @@ struct AbilityRequest { * @class AbilityRecord * AbilityRecord records ability info and states and used to schedule ability life. */ -class AbilityRecord : public ConfigurationHolder, public std::enable_shared_from_this { +class AbilityRecord : public std::enable_shared_from_this { public: AbilityRecord(const Want &want, const AppExecFwk::AbilityInfo &abilityInfo, const AppExecFwk::ApplicationInfo &applicationInfo, int requestCode = -1, int32_t apiVersion = 1); @@ -732,9 +731,6 @@ public: std::shared_ptr GetMission() const; int32_t GetMissionId() const; - void UpdateConfiguration(const AppExecFwk::Configuration &config) override; - - int GetId() override; void SetUid(int32_t uid); int32_t GetUid(); diff --git a/services/abilitymgr/include/app_scheduler.h b/services/abilitymgr/include/app_scheduler.h index b24484d91a3..31e455c5347 100644 --- a/services/abilitymgr/include/app_scheduler.h +++ b/services/abilitymgr/include/app_scheduler.h @@ -32,6 +32,9 @@ #include "running_process_info.h" namespace OHOS { +namespace AppExecFwk { +class Configuration; +} namespace AAFwk { /** * @enum AppAbilityState @@ -243,6 +246,14 @@ public: void StartSpecifiedAbility(const AAFwk::Want &want, const AppExecFwk::AbilityInfo &abilityInfo); int GetProcessRunningInfos(std::vector &info); + /** + * ANotify application update system environment changes. + * + * @param config System environment change parameters. + * @return Returns ERR_OK on success, others on failure. + */ + int UpdateConfiguration(const AppExecFwk::Configuration &config); + protected: /** * OnAbilityRequestDone, app manager service call this interface after ability request done. @@ -263,7 +274,7 @@ private: std::recursive_mutex lock_; bool isInit_ {false}; std::weak_ptr callback_; - std::unique_ptr appMgrClient_; +std::unique_ptr appMgrClient_; AppAbilityState appAbilityState_ = AppAbilityState::ABILITY_STATE_UNDEFINED; sptr startSpecifiedAbilityResponse_; }; diff --git a/services/abilitymgr/resource/ams_service_config.json b/services/abilitymgr/resource/ams_service_config.json index 23a25860d96..a8c75df25a0 100644 --- a/services/abilitymgr/resource/ams_service_config.json +++ b/services/abilitymgr/resource/ams_service_config.json @@ -9,7 +9,8 @@ "startup_mms":true, "use_new_mission" : true, "mission_save_time" : 43200000, - "root_launcher_restart_max":15 + "root_launcher_restart_max":15, + "use_new_mission":true }, "memorythreshold":{ "home_application": "20" diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 4fbd632970c..0e540e21837 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -29,7 +29,6 @@ #include "ability_util.h" #include "bytrace.h" #include "bundle_mgr_client.h" -#include "configuration_distributor.h" #include "distributed_client.h" #include "hilog_wrapper.h" #include "if_system_ability_manager.h" @@ -145,8 +144,6 @@ bool AbilityManagerService::Init() InitConnectManager(userId, true); - // init ConfigurationDistributor - DelayedSingleton::GetInstance(); InitDataAbilityManager(userId, true); InitPendWantManager(userId, true); @@ -158,9 +155,6 @@ bool AbilityManagerService::Init() } useNewMission_ = amsConfigResolver_->IsUseNewMission(); - // after amsConfigResolver_ - configuration_ = std::make_shared(); - GetGlobalConfiguration(); SetStackManager(userId, true); systemAppManager_ = std::make_shared(userId); @@ -198,7 +192,6 @@ void AbilityManagerService::OnStop() eventLoop_.reset(); handler_.reset(); state_ = ServiceRunningState::STATE_NOT_START; - DelayedSingleton::DestroyInstance(); } ServiceRunningState AbilityManagerService::QueryServiceState() const @@ -677,63 +670,7 @@ int AbilityManagerService::GetMissionLockModeState() int AbilityManagerService::UpdateConfiguration(const AppExecFwk::Configuration &config) { HILOG_INFO("%{public}s called", __func__); - CHECK_POINTER_AND_RETURN(configuration_, ERR_INVALID_VALUE); - - std::vector changeKeyV; - configuration_->CompareDifferent(changeKeyV, config); - int size = changeKeyV.size(); - HILOG_INFO("changeKeyV size :%{public}d", size); - if (!changeKeyV.empty()) { - for (const auto &iter : changeKeyV) { - configuration_->Merge(iter, config); - } - auto FindKeyFromKeychain = [](const std::string &findItemKey, const std::vector &keychain) -> int { - int amount = 0; - if (findItemKey.empty()) { - return amount; - } - - for (const auto &it :keychain) { - if (it.find(findItemKey) != std::string::npos) { - ++amount; - } - } - HILOG_INFO("amount :%{public}d", amount); - return amount; - }; - // the part that currently focuses on language - if (FindKeyFromKeychain(GlobalConfigurationKey::SYSTEM_LANGUAGE, changeKeyV) > 0 || - FindKeyFromKeychain(GlobalConfigurationKey::SYSTEM_ORIENTATION, changeKeyV) > 0) { - DelayedSingleton::GetInstance()->UpdateConfiguration(*configuration_); - } - - return ERR_OK; - } - return ERR_INVALID_VALUE; -} - -void AbilityManagerService::GetGlobalConfiguration() -{ - if (!GetConfiguration()) { - HILOG_INFO("configuration_ is null"); - return; - } - // Currently only this interface is known - auto language = OHOS::Global::I18n::LocaleConfig::GetSystemLanguage(); - HILOG_INFO("current global language is : %{public}s", language.c_str()); - GetConfiguration()->AddItem(GlobalConfigurationKey::SYSTEM_LANGUAGE, language); - CHECK_POINTER(amsConfigResolver_); - // This is a temporary plan - std::string direction = amsConfigResolver_->GetOrientation(); - HILOG_INFO("current global direction is : %{public}s", direction.c_str()); - GetConfiguration()->AddItem(GlobalConfigurationKey::SYSTEM_ORIENTATION, direction); - - DelayedSingleton::GetInstance()->InitConfiguration(*GetConfiguration()); -} - -std::shared_ptr AbilityManagerService::GetConfiguration() -{ - return configuration_; + return DelayedSingleton::GetInstance()->UpdateConfiguration(config); } int AbilityManagerService::MoveMissionToTop(int32_t missionId) @@ -1428,11 +1365,6 @@ int AbilityManagerService::AttachAbilityThread( } } - HILOG_INFO("attach ability type [%{public}d] | returnCode [%{public}d]", type, returnCode); - if (SUCCEEDED(returnCode) && type != AppExecFwk::AbilityType::DATA) { - DelayedSingleton::GetInstance()->Atach(abilityRecord); - } - return returnCode; } @@ -1632,13 +1564,6 @@ int AbilityManagerService::AbilityTransitionDone(const sptr &toke HILOG_DEBUG("state:%{public}d name:%{public}s", state, abilityInfo.name.c_str()); auto type = abilityInfo.type; - if (type != AppExecFwk::AbilityType::DATA) { - int targetState = AbilityRecord::ConvertLifeCycleToAbilityState(static_cast(state)); - if (targetState == AbilityState::INITIAL) { - DelayedSingleton::GetInstance()->Detach(abilityRecord); - } - } - if (type == AppExecFwk::AbilityType::SERVICE || type == AppExecFwk::AbilityType::EXTENSION) { return connectManager_->AbilityTransitionDone(token, state); } diff --git a/services/abilitymgr/src/ability_record.cpp b/services/abilitymgr/src/ability_record.cpp index 4a46419c76d..6d420d9879c 100644 --- a/services/abilitymgr/src/ability_record.cpp +++ b/services/abilitymgr/src/ability_record.cpp @@ -23,7 +23,6 @@ #include "ability_scheduler_stub.h" #include "ability_util.h" #include "bytrace.h" -#include "configuration_distributor.h" #include "errors.h" #include "hilog_wrapper.h" @@ -1158,21 +1157,6 @@ AppState AbilityRecord::GetAppState() const return appState_; } -void AbilityRecord::UpdateConfiguration(const AppExecFwk::Configuration &config) -{ - HILOG_INFO("%{public}s called", __FUNCTION__); - CHECK_POINTER(lifecycleDeal_); - HILOG_INFO("ability name : %{public}s | ready state : %{public}d", abilityInfo_.name.c_str(), isReady_); - if (IsReady()) { - lifecycleDeal_->UpdateConfiguration(config); - } -} - -int AbilityRecord::GetId() -{ - return GetRecordId(); -} - void AbilityRecord::ClearFlag() { isRestarting_ = false; diff --git a/services/abilitymgr/src/app_scheduler.cpp b/services/abilitymgr/src/app_scheduler.cpp index 1d4e72c96a2..05d991d7759 100644 --- a/services/abilitymgr/src/app_scheduler.cpp +++ b/services/abilitymgr/src/app_scheduler.cpp @@ -280,5 +280,17 @@ int AppScheduler::GetProcessRunningInfos(std::vector(appMgrClient_->GetAllRunningProcesses(info)); } + +int AppScheduler::UpdateConfiguration(const AppExecFwk::Configuration &config) +{ + CHECK_POINTER_AND_RETURN(appMgrClient_, INNER_ERR); + auto ret = static_cast(appMgrClient_->UpdateConfiguration(config)); + if (ret != ERR_OK) { + HILOG_ERROR("UpdateConfiguration failed."); + return INNER_ERR; + } + + return ERR_OK; +} } // namespace AAFwk } // namespace OHOS diff --git a/services/abilitymgr/src/configuration_distributor.cpp b/services/abilitymgr/src/configuration_distributor.cpp deleted file mode 100644 index 8f0a88e8e6d..00000000000 --- a/services/abilitymgr/src/configuration_distributor.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2021 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "configuration_distributor.h" -#include "hilog_wrapper.h" - -namespace OHOS { -namespace AAFwk { -ConfigurationDistributor::ConfigurationDistributor() -{} - -ConfigurationDistributor::~ConfigurationDistributor() -{ - if (!observerList_.empty()) { - for (auto &iter : observerList_) { - iter.reset(); - } - } -} - -void ConfigurationDistributor::Atach(const std::weak_ptr &ob) -{ - std::lock_guard lock(configLock_); - if (ob.expired()) { - HILOG_INFO("Atach ob is null"); - return; - } - auto ability = ob.lock(); - int id = ability->GetId(); - HILOG_INFO("Atach ob id[%{public}d]", id); - observerList_.emplace_back(ob); - - // Init ability thread configurtion object - ability->UpdateConfiguration(config_); -} - -void ConfigurationDistributor::Detach(const std::weak_ptr &ob) -{ - std::lock_guard lock(configLock_); - if (ob.expired()) { - HILOG_INFO("Detach ob is null"); - return; - } - - int id = ob.lock()->GetId(); - HILOG_INFO("Detach ob id[%{public}d]", id); - - auto removeById = [id](const std::weak_ptr& ob) -> bool { - auto observer = ob.lock(); - int currentId = -1; - if (observer) { - currentId = observer->GetId(); - } - HILOG_INFO("current Compare id is [%{public}d]", currentId); - return currentId == id; - }; - observerList_.remove_if(removeById); -} - -void ConfigurationDistributor::UpdateConfiguration(const AppExecFwk::Configuration &newConfig) -{ - std::lock_guard lock(configLock_); - for (const auto &iter : observerList_) { - auto observer = iter.lock(); - if (observer) { - HILOG_INFO("UpdateConfiguration To [%{public}d]", observer->GetId()); - observer->UpdateConfiguration(newConfig); - } - } - HILOG_INFO("notify done"); -} - -void ConfigurationDistributor::InitConfiguration(const AppExecFwk::Configuration &newConfig) -{ - std::lock_guard lock(configLock_); - config_ = newConfig; -} -} // namespace AAFwk -} // namespace OHOS \ No newline at end of file diff --git a/services/abilitymgr/test/BUILD.gn b/services/abilitymgr/test/BUILD.gn index ad007e10339..239c0e6ce95 100644 --- a/services/abilitymgr/test/BUILD.gn +++ b/services/abilitymgr/test/BUILD.gn @@ -35,7 +35,6 @@ ohos_source_set("abilityms_test_source") { "${services_path}/abilitymgr/src/ability_token_stub.cpp", "${services_path}/abilitymgr/src/ams_configuration_parameter.cpp", "${services_path}/abilitymgr/src/caller_info.cpp", - "${services_path}/abilitymgr/src/configuration_distributor.cpp", "${services_path}/abilitymgr/src/connection_record.cpp", "${services_path}/abilitymgr/src/data_ability_caller_recipient.cpp", "${services_path}/abilitymgr/src/data_ability_manager.cpp", diff --git a/services/abilitymgr/test/mock/libs/appexecfwk_core/src/appmgr/mock_app_scheduler.cpp b/services/abilitymgr/test/mock/libs/appexecfwk_core/src/appmgr/mock_app_scheduler.cpp index d1f0c0c74ad..2eb56c60929 100644 --- a/services/abilitymgr/test/mock/libs/appexecfwk_core/src/appmgr/mock_app_scheduler.cpp +++ b/services/abilitymgr/test/mock/libs/appexecfwk_core/src/appmgr/mock_app_scheduler.cpp @@ -178,5 +178,10 @@ void AppScheduler::GetRunningProcessInfoByToken(const sptr &token void AppScheduler::StartSpecifiedAbility(const AAFwk::Want &want, const AppExecFwk::AbilityInfo &abilityInfo) {} + +int AppScheduler::UpdateConfiguration(const AppExecFwk::Configuration &) +{ + return +} } // namespace AAFwk } // namespace OHOS diff --git a/services/abilitymgr/test/unittest/phone/ability_manager_service_test/ability_manager_service_test.cpp b/services/abilitymgr/test/unittest/phone/ability_manager_service_test/ability_manager_service_test.cpp index 13a60978f66..8d21989c253 100644 --- a/services/abilitymgr/test/unittest/phone/ability_manager_service_test/ability_manager_service_test.cpp +++ b/services/abilitymgr/test/unittest/phone/ability_manager_service_test/ability_manager_service_test.cpp @@ -120,9 +120,9 @@ void AbilityManagerServiceTest::OnStartAms() if (abilityMs_->state_ == ServiceRunningState::STATE_RUNNING) { return; } - + abilityMs_->state_ = ServiceRunningState::STATE_RUNNING; - + abilityMs_->eventLoop_ = AppExecFwk::EventRunner::Create(AbilityConfig::NAME_ABILITY_MGR_SERVICE); EXPECT_TRUE(abilityMs_->eventLoop_); @@ -142,10 +142,6 @@ void AbilityManagerServiceTest::OnStartAms() abilityMs_->pendingWantManager_ = std::make_shared(); EXPECT_TRUE(abilityMs_->pendingWantManager_); - abilityMs_->configuration_ = std::make_shared(); - EXPECT_TRUE(abilityMs_->configuration_); - abilityMs_->GetGlobalConfiguration(); - int userId = abilityMs_->GetUserId(); abilityMs_->SetStackManager(userId, true); abilityMs_->systemAppManager_ = std::make_shared(userId); @@ -730,7 +726,7 @@ HWTEST_F(AbilityManagerServiceTest, Interface_017, TestSize.Level1) wantLuncher.SetElement(elementLun); abilityMs_->StartAbility(wantLuncher); WaitUntilTaskFinished(); - + Want want; ElementName element("device", "com.ix.music", "MusicAbility"); want.SetElement(element); @@ -2013,7 +2009,7 @@ HWTEST_F(AbilityManagerServiceTest, handleloadtimeout_001, TestSize.Level1) AbilityRecordInfo barAbilityInfo; barAbility->GetAbilityRecordInfo(barAbilityInfo); auto dialogtoken = barAbility->GetToken(); - + OHOS::sptr scheduler = new AbilityScheduler(); EXPECT_EQ(abilityMs_->AttachAbilityThread(scheduler, dialogtoken), OHOS::ERR_OK); EXPECT_TRUE(barAbility->GetAbilityInfo().bundleName == AbilityConfig::SYSTEM_UI_BUNDLE_NAME); @@ -2254,12 +2250,12 @@ HWTEST_F(AbilityManagerServiceTest, handleloadtimeout_008, TestSize.Level1) auto abilityToken = ability->GetToken(); EXPECT_TRUE(ability->GetAbilityInfo().bundleName == COM_IX_HIWORLD); - + ElementName elementTv("device", "com.ix.hiTv", "TvAbility"); want.SetElement(elementTv); auto resultTv = StartAbility(want); EXPECT_EQ(OHOS::ERR_OK, resultTv); - + // helloAbility inactive stackManager->CompleteInactive(ability); @@ -2305,7 +2301,7 @@ HWTEST_F(AbilityManagerServiceTest, handleloadtimeout_009, TestSize.Level1) want.SetElement(elementTv); auto resultTv = StartAbility(want); EXPECT_EQ(OHOS::ERR_OK, resultTv); - + // helloAbility inactive stackManager->CompleteInactive(ability); @@ -2403,7 +2399,7 @@ HWTEST_F(AbilityManagerServiceTest, handleloadtimeout_011, TestSize.Level1) auto abilityTv = stackManagerTv->GetCurrentTopAbility(); abilityMs_->HandleLoadTimeOut(INT32_MAX); - + auto newStackManager = abilityMs_->GetStackManager(); auto newAbility = newStackManager->GetCurrentTopAbility(); EXPECT_TRUE(newAbility->GetAbilityInfo().bundleName == "com.ix.hiTv"); @@ -3071,60 +3067,6 @@ HWTEST_F(AbilityManagerServiceTest, AmsConfigurationParameter_003, TestSize.Leve EXPECT_EQ(ref, 1); } -/* - * Feature: AbilityManagerService - * Function: UpdateConfiguration - * SubFunction: NA - * FunctionPoints: NA - * EnvConditions: NA - * CaseDescription: NA - * MoveMissionToEnd NA - */ -HWTEST_F(AbilityManagerServiceTest, UpdateConfiguration_001, TestSize.Level1) -{ - auto confiuration = abilityMs_->GetConfiguration(); - EXPECT_TRUE(confiuration); - - AppExecFwk::Configuration config; - int displayId = 1001; - std::string val {"中文"}; - config.AddItem(displayId, GlobalConfigurationKey::SYSTEM_LANGUAGE, val); - auto ref = abilityMs_->UpdateConfiguration(config); - EXPECT_EQ(ref, 0); - - AppExecFwk::Configuration config2; - int displayId2 = 1001; - std::string val2 {"德语"}; - config2.AddItem(displayId2, GlobalConfigurationKey::SYSTEM_LANGUAGE, val2); - ref = abilityMs_->UpdateConfiguration(config2); - EXPECT_EQ(ref, 0); -} - -/* - * Feature: AbilityManagerService - * Function: UpdateConfiguration - * SubFunction: NA - * FunctionPoints: NA - * EnvConditions: NA - * CaseDescription: NA - * MoveMissionToEnd NA - */ -HWTEST_F(AbilityManagerServiceTest, UpdateConfiguration_002, TestSize.Level1) -{ - auto confiuration = abilityMs_->GetConfiguration(); - EXPECT_TRUE(confiuration); - - AppExecFwk::Configuration config; - std::string val {"中文"}; - config.AddItem(GlobalConfigurationKey::SYSTEM_LANGUAGE, val); - auto ref = abilityMs_->UpdateConfiguration(config); - EXPECT_EQ(ref, 0); - - // Because the original will be updated, no new ones will be added. - ref = abilityMs_->UpdateConfiguration(config); - EXPECT_EQ(ref, ERR_INVALID_VALUE); -} - /* * Function: AmsGetSystemMemoryAttr * SubFunction: NA diff --git a/services/abilitymgr/test/unittest/phone/configuration_test/configuration_test.cpp b/services/abilitymgr/test/unittest/phone/configuration_test/configuration_test.cpp index e7bfc803fa0..4ebd631129f 100644 --- a/services/abilitymgr/test/unittest/phone/configuration_test/configuration_test.cpp +++ b/services/abilitymgr/test/unittest/phone/configuration_test/configuration_test.cpp @@ -350,9 +350,7 @@ HWTEST_F(ConfigurationTest, Merge_001, TestSize.Level1) int size = changeKeyV.size(); EXPECT_EQ(size, 1); - for (const auto &s : changeKeyV) { - config.Merge(s, config2); - } + config.Merge(changeKeyV, config2); auto item = config.GetItem(displayId2, GlobalConfigurationKey::SYSTEM_LANGUAGE); EXPECT_EQ(item, English); @@ -384,9 +382,7 @@ HWTEST_F(ConfigurationTest, Merge_002, TestSize.Level1) int size = changeKeyV.size(); EXPECT_EQ(size, 1); - for (const auto &s : changeKeyV) { - config.Merge(s, config2); - } + config.Merge(changeKeyV, config2); auto item = config.GetItem(displayId, GlobalConfigurationKey::SYSTEM_LANGUAGE); EXPECT_EQ(item, english); diff --git a/services/abilitymgr/test/unittest/phone/lifecycle_deal_test/BUILD.gn b/services/abilitymgr/test/unittest/phone/lifecycle_deal_test/BUILD.gn index d0996dfc330..8a9f1e9c200 100755 --- a/services/abilitymgr/test/unittest/phone/lifecycle_deal_test/BUILD.gn +++ b/services/abilitymgr/test/unittest/phone/lifecycle_deal_test/BUILD.gn @@ -58,7 +58,7 @@ ohos_unittest("lifecycle_deal_test") { external_deps = [ "ability_runtime:app_manager", - "bundle_framework:appexecfwk_core", + "appexecfwk_standard:appexecfwk_core", "device_manager_base:devicemanagersdk", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", diff --git a/services/appmgr/BUILD.gn b/services/appmgr/BUILD.gn index 46ab6eee7b7..84cb63309ee 100644 --- a/services/appmgr/BUILD.gn +++ b/services/appmgr/BUILD.gn @@ -23,6 +23,7 @@ config("appmgr_config") { "//base/notification/ces_standard/frameworks/core/include", "//base/notification/ces_standard/interfaces/innerkits/native/include", "//base/security/permission/interfaces/innerkits/permission_standard/permissionsdk/main/cpp/include", + "//base/global/i18n_standard/frameworks/intl/include", ] } @@ -114,6 +115,7 @@ ohos_shared_library("libams") { "${appexecfwk_path}/interfaces/innerkits/appexecfwk_core:appexecfwk_core", "${appexecfwk_path}/libs/libeventhandler:libeventhandler_target", "//base/account/os_account/frameworks/osaccount/native:os_account_innerkits", + "//base/global/i18n_standard/frameworks/intl:intl_util", "//base/security/permission/interfaces/innerkits/permission_standard/permissionsdk:libpermissionsdk_standard", "//foundation/aafwk/standard/interfaces/innerkits/base:base", "//foundation/aafwk/standard/interfaces/innerkits/want:want", diff --git a/services/appmgr/include/ams_mgr_scheduler.h b/services/appmgr/include/ams_mgr_scheduler.h index 0d28e57bcac..5f63a44a353 100644 --- a/services/appmgr/include/ams_mgr_scheduler.h +++ b/services/appmgr/include/ams_mgr_scheduler.h @@ -34,6 +34,7 @@ namespace OHOS { namespace AppExecFwk { +class Configuration; class AmsMgrScheduler : public AmsMgrStub { public: AmsMgrScheduler( @@ -165,6 +166,14 @@ public: virtual void RegisterStartSpecifiedAbilityResponse(const sptr &response) override; + /** + * ANotify application update system environment changes. + * + * @param config System environment change parameters. + * @return Returns ERR_OK on success, others on failure. + */ + virtual void UpdateConfiguration(const Configuration &config) override; + private: /** * @brief Judge whether the application service is ready. diff --git a/services/appmgr/include/app_lifecycle_deal.h b/services/appmgr/include/app_lifecycle_deal.h index 3171e325012..1e9b8bc125f 100644 --- a/services/appmgr/include/app_lifecycle_deal.h +++ b/services/appmgr/include/app_lifecycle_deal.h @@ -37,7 +37,7 @@ public: * * @return */ - void LaunchApplication(const AppLaunchData &launchData_); + void LaunchApplication(const AppLaunchData &launchData_, const Configuration &config); /** * AddAbilityStageInfo, call ScheduleAbilityStageInfo() through proxy project, @@ -133,6 +133,13 @@ public: void ScheduleAcceptWant(const AAFwk::Want &want, const std::string &moduleName); + /** + * UpdateConfiguration, ANotify application update system environment changes. + * + * @param config, System environment change parameters. + */ + void UpdateConfiguration(const Configuration &config); + private: sptr appThread_ = nullptr; }; diff --git a/services/appmgr/include/app_mgr_service_inner.h b/services/appmgr/include/app_mgr_service_inner.h index 695ff556ebf..a0dde91afc8 100644 --- a/services/appmgr/include/app_mgr_service_inner.h +++ b/services/appmgr/include/app_mgr_service_inner.h @@ -56,6 +56,10 @@ public: AppMgrServiceInner(); virtual ~AppMgrServiceInner(); + /** + * Initialize the object. + */ + void Init(); /** * LoadAbility, load the ability that needed to be started. * @@ -487,6 +491,15 @@ public: void OnAppStateChanged(const std::shared_ptr &appRecord, const ApplicationState state); void GetRunningProcessInfoByToken(const sptr &token, AppExecFwk::RunningProcessInfo &info); + + /** + * UpdateConfiguration, ANotify application update system environment changes. + * + * @param config, System environment change parameters. + */ + void UpdateConfiguration(const Configuration &config); + + std::shared_ptr GetConfiguration(); /** * Start empty process */ @@ -743,6 +756,8 @@ private: void OnProcessDied(const std::shared_ptr &appRecord); void HandleStartSpecifiedAbilityTimeOut(const int64_t eventId); + + void GetGlobalConfiguration(); private: /** @@ -779,6 +794,7 @@ private: std::shared_ptr appRunningManager_; std::shared_ptr processOptimizerUBA_; std::shared_ptr eventHandler_; + std::shared_ptr configuration_; std::mutex serviceLock_; sptr startSpecifiedAbilityResponse_; }; diff --git a/services/appmgr/include/app_running_manager.h b/services/appmgr/include/app_running_manager.h index 3d4237fc308..8d38a1c0b23 100644 --- a/services/appmgr/include/app_running_manager.h +++ b/services/appmgr/include/app_running_manager.h @@ -125,6 +125,13 @@ public: */ void GetForegroundApplications(std::vector &list); + /* + * ANotify application update system environment changes. + * + * @param config System environment change parameters. + * @return + */ + void UpdateConfiguration(const Configuration &config); void HandleTerminateTimeOut(int64_t eventId); void HandleAbilityAttachTimeOut(const sptr &token); std::shared_ptr GetAppRunningRecord(const int64_t eventId); diff --git a/services/appmgr/include/app_running_record.h b/services/appmgr/include/app_running_record.h index c6e3f791302..3ddf07241ae 100644 --- a/services/appmgr/include/app_running_record.h +++ b/services/appmgr/include/app_running_record.h @@ -253,7 +253,7 @@ public: * * @return */ - void LaunchApplication(); + void LaunchApplication(const Configuration &config); /** * AddAbilityStage, Notify application to ability stage. @@ -396,6 +396,14 @@ public: */ void RemoveAppDeathRecipient() const; + /** + * Notify application update system environment changes. + * + * @param config System environment change parameters. + * @return + */ + void UpdateConfiguration(const Configuration &config); + void SetEventHandler(const std::shared_ptr &handler); int64_t GetEventId() const; diff --git a/services/appmgr/src/ams_mgr_scheduler.cpp b/services/appmgr/src/ams_mgr_scheduler.cpp index 5757bd929cd..d36f6bf44a5 100644 --- a/services/appmgr/src/ams_mgr_scheduler.cpp +++ b/services/appmgr/src/ams_mgr_scheduler.cpp @@ -239,5 +239,16 @@ void AmsMgrScheduler::RegisterStartSpecifiedAbilityResponse(const sptrRegisterStartSpecifiedAbilityResponse(response); }; amsHandler_->PostTask(task); } + +void AmsMgrScheduler::UpdateConfiguration(const Configuration &config) +{ + APP_LOGI("AmsMgrScheduler UpdateConfiguration begin"); + if (!IsReady()) { + return; + } + auto task = [=]() { amsMgrServiceInner_->UpdateConfiguration(config); }; + amsHandler_->PostTask(task); + APP_LOGI("AmsMgrScheduler UpdateConfiguration end"); +} } // namespace AppExecFwk } // namespace OHOS \ No newline at end of file diff --git a/services/appmgr/src/app_lifecycle_deal.cpp b/services/appmgr/src/app_lifecycle_deal.cpp index 527a97b99d3..8fb997a3985 100644 --- a/services/appmgr/src/app_lifecycle_deal.cpp +++ b/services/appmgr/src/app_lifecycle_deal.cpp @@ -25,12 +25,12 @@ AppLifeCycleDeal::AppLifeCycleDeal() AppLifeCycleDeal::~AppLifeCycleDeal() {} -void AppLifeCycleDeal::LaunchApplication(const AppLaunchData &launchData_) +void AppLifeCycleDeal::LaunchApplication(const AppLaunchData &launchData_, const Configuration &config) { BYTRACE_NAME(BYTRACE_TAG_APP, __PRETTY_FUNCTION__); APP_LOGI("AppLifeCycleDeal ScheduleLaunchApplication"); if (appThread_) { - appThread_->ScheduleLaunchApplication(launchData_); + appThread_->ScheduleLaunchApplication(launchData_, config); } } @@ -139,5 +139,15 @@ void AppLifeCycleDeal::ScheduleAcceptWant(const AAFwk::Want &want, const std::st appThread_->ScheduleAcceptWant(want, moduleName); } + +void AppLifeCycleDeal::UpdateConfiguration(const Configuration &config) +{ + APP_LOGI("call %{public}s", __func__); + if (!appThread_) { + APP_LOGI("appThread_ is null"); + return; + } + appThread_->ScheduleConfigurationUpdated(config); +} } // namespace AppExecFwk } // namespace OHOS \ No newline at end of file diff --git a/services/appmgr/src/app_mgr_service_inner.cpp b/services/appmgr/src/app_mgr_service_inner.cpp index 7fd28d854e2..6ffcd67b707 100644 --- a/services/appmgr/src/app_mgr_service_inner.cpp +++ b/services/appmgr/src/app_mgr_service_inner.cpp @@ -35,6 +35,7 @@ #include "os_account_manager.h" #include "permission/permission_kit.h" #include "system_ability_definition.h" +#include "locale_config.h" namespace OHOS { namespace AppExecFwk { @@ -67,9 +68,15 @@ using OHOS::AppExecFwk::Constants::ROOT_UID; AppMgrServiceInner::AppMgrServiceInner() : appProcessManager_(std::make_shared()), remoteClientManager_(std::make_shared()), - appRunningManager_(std::make_shared()) + appRunningManager_(std::make_shared()), + configuration_(std::make_shared()) {} +void AppMgrServiceInner::Init() +{ + GetGlobalConfiguration(); +} + AppMgrServiceInner::~AppMgrServiceInner() {} @@ -208,11 +215,17 @@ void AppMgrServiceInner::LaunchApplication(const std::shared_ptrGetState() != ApplicationState::APP_STATE_CREATE) { APP_LOGE("wrong app state:%{public}d", appRecord->GetState()); return; } - appRecord->LaunchApplication(); + appRecord->LaunchApplication(*configuration_); appRecord->SetState(ApplicationState::APP_STATE_READY); OptimizerAppStateChanged(appRecord, ApplicationState::APP_STATE_CREATE); @@ -1964,5 +1977,40 @@ void AppMgrServiceInner::ScheduleAcceptWantDone( void AppMgrServiceInner::HandleStartSpecifiedAbilityTimeOut(const int64_t eventId) {} + +void AppMgrServiceInner::UpdateConfiguration(const Configuration &config) +{ + if (!appRunningManager_) { + APP_LOGE("appRunningManager_ is null"); + return; + } + + std::vector changeKeyV; + configuration_->CompareDifferent(changeKeyV, config); + int size = changeKeyV.size(); + APP_LOGI("changeKeyV size :%{public}d", size); + if (!changeKeyV.empty()) { + configuration_->Merge(changeKeyV, config); + //all app + appRunningManager_->UpdateConfiguration(config); + } +} + +void AppMgrServiceInner::GetGlobalConfiguration() +{ + if (!configuration_) { + APP_LOGE("configuration_ is null"); + return; + } + // Currently only this interface is known + auto language = OHOS::Global::I18n::LocaleConfig::GetSystemLanguage(); + APP_LOGI("current global language is : %{public}s", language.c_str()); + configuration_->AddItem(GlobalConfigurationKey::SYSTEM_LANGUAGE, language); +} + +std::shared_ptr AppMgrServiceInner::GetConfiguration() +{ + return configuration_; +} } // namespace AppExecFwk } // namespace OHOS diff --git a/services/appmgr/src/app_running_manager.cpp b/services/appmgr/src/app_running_manager.cpp index 076aed62861..59897231db5 100644 --- a/services/appmgr/src/app_running_manager.cpp +++ b/services/appmgr/src/app_running_manager.cpp @@ -451,5 +451,19 @@ void AppRunningManager::HandleStartSpecifiedAbilityTimeOut(const int64_t eventId appRecord->ScheduleProcessSecurityExit(); } + +void AppRunningManager::UpdateConfiguration(const Configuration &config) +{ + APP_LOGI("call %{public}s", __func__); + std::lock_guard guard(lock_); + APP_LOGI("current app size %{public}d", static_cast(appRunningRecordMap_.size())); + for (const auto &item : appRunningRecordMap_) { + const auto &appRecord = item.second; + if (appRecord) { + APP_LOGI("Notification app [%{public}s]", appRecord->GetName().c_str()); + appRecord->UpdateConfiguration(config); + } + } +} } // namespace AppExecFwk } // namespace OHOS \ No newline at end of file diff --git a/services/appmgr/src/app_running_record.cpp b/services/appmgr/src/app_running_record.cpp index 59f8becef1f..4ae8b5943db 100644 --- a/services/appmgr/src/app_running_record.cpp +++ b/services/appmgr/src/app_running_record.cpp @@ -227,7 +227,7 @@ void AppRunningRecord::ForceKillApp([[maybe_unused]] const std::string &reason) void AppRunningRecord::ScheduleAppCrash([[maybe_unused]] const std::string &description) const {} -void AppRunningRecord::LaunchApplication() +void AppRunningRecord::LaunchApplication(const Configuration &config) { BYTRACE_NAME(BYTRACE_TAG_APP, __PRETTY_FUNCTION__); if (appLifeCycleDeal_ == nullptr) { @@ -249,7 +249,7 @@ void AppRunningRecord::LaunchApplication() launchData.SetUId(mainUid_); APP_LOGI("ScheduleLaunchApplication app:%{public}s", GetName().c_str()); - appLifeCycleDeal_->LaunchApplication(launchData); + appLifeCycleDeal_->LaunchApplication(launchData, config); } void AppRunningRecord::AddAbilityStage() @@ -281,8 +281,9 @@ void AppRunningRecord::AddAbilityStageBySpecifiedAbility(const std::string &bund void AppRunningRecord::AddAbilityStageDone() { - APP_LOGI("Add ability stage done."); - eventHandler_->RemoveEvent(AMSEventHandler::ADD_ABILITY_STAGE_INFO_TIMEOUT_MSG, appRecordId_); + APP_LOGI("Add ability stage done. bundle %{public}s and eventId %{public}d", mainBundleName_.c_str(), + static_cast(eventId_)); + eventHandler_->RemoveEvent(AMSEventHandler::ADD_ABILITY_STAGE_INFO_TIMEOUT_MSG, eventId_); // Should proceed to the next notification if (isSpecifiedAbility_) { @@ -755,6 +756,7 @@ void AppRunningRecord::SendEvent(uint32_t msg, int64_t timeOut) appEventId_++; eventId_ = appEventId_; + APP_LOGD("eventId %{public}d", static_cast(eventId_)); eventHandler_->SendEvent(msg, appEventId_, timeOut); } @@ -890,5 +892,15 @@ const AAFwk::Want &AppRunningRecord::GetSpecifiedWant() const { return SpecifiedWant_; } + +void AppRunningRecord::UpdateConfiguration(const Configuration &config) +{ + APP_LOGI("call %{public}s", __func__); + if (!appLifeCycleDeal_) { + APP_LOGI("appLifeCycleDeal_ is null"); + return; + } + appLifeCycleDeal_->UpdateConfiguration(config); +} } // namespace AppExecFwk } // namespace OHOS diff --git a/services/appmgr/test/mock/include/mock_ams_mgr_scheduler.h b/services/appmgr/test/mock/include/mock_ams_mgr_scheduler.h index 8c19fecf32b..9b8d39a7f8f 100644 --- a/services/appmgr/test/mock/include/mock_ams_mgr_scheduler.h +++ b/services/appmgr/test/mock/include/mock_ams_mgr_scheduler.h @@ -44,6 +44,7 @@ public: void(const sptr &token, OHOS::AppExecFwk::RunningProcessInfo &info)); MOCK_METHOD2(StartSpecifiedAbility, void(const AAFwk::Want &want, const AppExecFwk::AbilityInfo &abilityInfo)); MOCK_METHOD1(RegisterStartSpecifiedAbilityResponse, void(const sptr &response)); + MOCK_METHOD1(UpdateConfiguration, int(const AppExecFwk::Configuration &)); MockAmsMgrScheduler() : AmsMgrStub() {}; virtual ~MockAmsMgrScheduler(){}; diff --git a/services/appmgr/test/mock/include/mock_app_scheduler.h b/services/appmgr/test/mock/include/mock_app_scheduler.h index db43d853f56..dccdc6bc135 100644 --- a/services/appmgr/test/mock/include/mock_app_scheduler.h +++ b/services/appmgr/test/mock/include/mock_app_scheduler.h @@ -31,7 +31,7 @@ public: MOCK_METHOD0(ScheduleForegroundApplication, void()); MOCK_METHOD0(ScheduleBackgroundApplication, void()); MOCK_METHOD0(ScheduleTerminateApplication, void()); - MOCK_METHOD1(ScheduleLaunchApplication, void(const AppLaunchData &)); + MOCK_METHOD1(ScheduleLaunchApplication, void(const AppLaunchData &, const Configuration &config)); MOCK_METHOD2(ScheduleLaunchAbility, void(const AbilityInfo &, const sptr &)); MOCK_METHOD1(ScheduleCleanAbility, void(const sptr &)); MOCK_METHOD1(ScheduleProfileChanged, void(const Profile &)); diff --git a/services/appmgr/test/mock/include/mock_application.h b/services/appmgr/test/mock/include/mock_application.h index 59e198ff41c..dc62be9f691 100644 --- a/services/appmgr/test/mock/include/mock_application.h +++ b/services/appmgr/test/mock/include/mock_application.h @@ -28,7 +28,7 @@ public: MOCK_METHOD0(ScheduleTerminateApplication, void()); MOCK_METHOD1(ScheduleShrinkMemory, void(const int)); MOCK_METHOD0(ScheduleLowMemory, void()); - MOCK_METHOD1(ScheduleLaunchApplication, void(const AppLaunchData &)); + MOCK_METHOD1(ScheduleLaunchApplication, void(const AppLaunchData &, const Configuration &config)); MOCK_METHOD2(ScheduleLaunchAbility, void(const AbilityInfo &, const sptr &)); MOCK_METHOD1(ScheduleCleanAbility, void(const sptr &)); MOCK_METHOD1(ScheduleProfileChanged, void(const Profile &)); @@ -58,7 +58,7 @@ public: return shrinkLevel_; } - void LaunchApplication(const AppLaunchData &launchData) + void LaunchApplication(const AppLaunchData &launchData, const Configuration &config) { launchData_ = launchData; lock_.Post(); diff --git a/services/appmgr/test/unittest/ams_app_life_cycle_test/ams_app_life_cycle_test.cpp b/services/appmgr/test/unittest/ams_app_life_cycle_test/ams_app_life_cycle_test.cpp index 00de1505044..2b4ebe05821 100644 --- a/services/appmgr/test/unittest/ams_app_life_cycle_test/ams_app_life_cycle_test.cpp +++ b/services/appmgr/test/unittest/ams_app_life_cycle_test/ams_app_life_cycle_test.cpp @@ -377,7 +377,7 @@ HWTEST_F(AmsAppLifeCycleTest, Init_001, TestSize.Level1) sptr mockAppScheduler = new MockAppScheduler(); sptr client = iface_cast(mockAppScheduler.GetRefPtr()); - EXPECT_CALL(*mockAppScheduler, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppScheduler, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppScheduler, ScheduleLaunchAbility(_, _)).Times(1); serviceInner_->AttachApplication(NEW_PID, client); @@ -430,7 +430,7 @@ HWTEST_F(AmsAppLifeCycleTest, Schedule_002, TestSize.Level1) sptr mockAppScheduler = new MockAppScheduler(); sptr client = iface_cast(mockAppScheduler.GetRefPtr()); - EXPECT_CALL(*mockAppScheduler, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppScheduler, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppScheduler, ScheduleLaunchAbility(_, _)).Times(1); serviceInner_->AttachApplication(NEW_PID, client); diff --git a/services/appmgr/test/unittest/ams_app_running_record_test/ams_app_running_record_test.cpp b/services/appmgr/test/unittest/ams_app_running_record_test/ams_app_running_record_test.cpp index c19f6d37f68..514a4c646e6 100644 --- a/services/appmgr/test/unittest/ams_app_running_record_test/ams_app_running_record_test.cpp +++ b/services/appmgr/test/unittest/ams_app_running_record_test/ams_app_running_record_test.cpp @@ -319,9 +319,10 @@ HWTEST_F(AmsAppRunningRecordTest, CreateAppRunningRecord_005, TestSize.Level1) */ HWTEST_F(AmsAppRunningRecordTest, LaunchApplication_001, TestSize.Level1) { + Configuration config; auto record = GetTestAppRunningRecord(); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(1); - record->LaunchApplication(); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); + record->LaunchApplication(config); } /* @@ -544,7 +545,7 @@ HWTEST_F(AmsAppRunningRecordTest, AttachApplication_001, TestSize.Level1) EXPECT_TRUE(service_); auto record = StartLoadAbility(token, abilityInfo, appInfo, newPid); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(1); service_->AttachApplication(newPid, mockAppSchedulerClient_); EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY); @@ -576,7 +577,7 @@ HWTEST_F(AmsAppRunningRecordTest, AttachApplication_002, TestSize.Level1) const pid_t invalidPid = -1; auto record = StartLoadAbility(token, abilityInfo, appInfo, newPid); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(0); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(0); service_->AttachApplication(invalidPid, GetMockedAppSchedulerClient()); EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_CREATE); APP_LOGI("AmsAppRunningRecordTest AttachApplication_002 end"); @@ -607,7 +608,7 @@ HWTEST_F(AmsAppRunningRecordTest, AttachApplication_003, TestSize.Level1) const pid_t anotherPid = 1000; auto record = StartLoadAbility(token, abilityInfo, appInfo, newPid); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(0); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(0); service_->AttachApplication(anotherPid, GetMockedAppSchedulerClient()); EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_CREATE); APP_LOGI("AmsAppRunningRecordTest AttachApplication_003 end"); @@ -668,13 +669,13 @@ HWTEST_F(AmsAppRunningRecordTest, AttachApplication_005, TestSize.Level1) EXPECT_TRUE(service_ != nullptr); auto record = StartLoadAbility(token, abilityInfo, appInfo, newPid); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(1); service_->AttachApplication(newPid, GetMockedAppSchedulerClient()); EXPECT_NE(record->GetApplicationClient(), nullptr); EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(0); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(0); service_->AttachApplication(newPid, GetMockedAppSchedulerClient()); EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY); APP_LOGI("AmsAppRunningRecordTest AttachApplication_005 end"); @@ -724,7 +725,7 @@ HWTEST_F(AmsAppRunningRecordTest, AttachApplication_006, TestSize.Level1) service_->LoadAbility(token3, nullptr, abilityInfo3, appInfo); EXPECT_EQ(record->GetAbilities().size(), EXPECT_RECORD_SIZE); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(EXPECT_ABILITY_LAUNCH_TIME); service_->AttachApplication(PID, mockAppSchedulerClient_); EXPECT_NE(record->GetApplicationClient(), nullptr); @@ -762,7 +763,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_001, TestSize.Level1) auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); EXPECT_TRUE(abilityRecord != nullptr); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(1); record->SetApplicationClient(GetMockedAppSchedulerClient()); service_->LaunchApplication(record); @@ -819,7 +820,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_002, TestSize.Level1) auto abilityRecord3 = moduleRecord3->GetAbilityRunningRecordByToken(token3); EXPECT_TRUE(abilityRecord3 != nullptr); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(EXPECT_ABILITY_LAUNCH_TIME); record->SetApplicationClient(GetMockedAppSchedulerClient()); service_->LaunchApplication(record); @@ -857,7 +858,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_003, TestSize.Level1) auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); EXPECT_TRUE(abilityRecord != nullptr); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(0); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(0); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(0); service_->LaunchApplication(record); EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY); @@ -901,13 +902,13 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_004, TestSize.Level1) auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); EXPECT_TRUE(abilityRecord != nullptr); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(1); record->SetApplicationClient(GetMockedAppSchedulerClient()); service_->LaunchApplication(record); EXPECT_EQ(record->GetState(), ApplicationState::APP_STATE_READY); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(0); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(0); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(1); sptr token2 = new (std::nothrow) MockAbilityToken(); service_->LoadAbility(token2, nullptr, abilityInfo2, appInfo); @@ -962,7 +963,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_005, TestSize.Level1) EXPECT_TRUE(moduleRecord3); auto abilityRecord3 = moduleRecord3->GetAbilityRunningRecordByToken(token3); - EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchAbility(_, _)).Times(EXPECT_ABILITY_LAUNCH_TIME); record->SetApplicationClient(GetMockedAppSchedulerClient()); service_->LaunchApplication(record); diff --git a/services/appmgr/test/unittest/ams_ipc_interface_test/ams_ipc_appscheduler_interface_test.cpp b/services/appmgr/test/unittest/ams_ipc_interface_test/ams_ipc_appscheduler_interface_test.cpp index 62dc7ae702b..62e9c315074 100644 --- a/services/appmgr/test/unittest/ams_ipc_interface_test/ams_ipc_appscheduler_interface_test.cpp +++ b/services/appmgr/test/unittest/ams_ipc_interface_test/ams_ipc_appscheduler_interface_test.cpp @@ -198,10 +198,11 @@ HWTEST_F(AmsIpcAppSchedulerInterfaceTest, Interface_006, TestSize.Level1) launchData.SetProfile(profile); launchData.SetProcessInfo(processInfo); - EXPECT_CALL(*mockApplication, ScheduleLaunchApplication(_)) + Configuration config; + EXPECT_CALL(*mockApplication, ScheduleLaunchApplication(_, _)) .Times(1) .WillOnce(Invoke(mockApplication.GetRefPtr(), &MockApplication::LaunchApplication)); - client->ScheduleLaunchApplication(launchData); + client->ScheduleLaunchApplication(launchData, config); mockApplication->Wait(); bool isEqual = mockApplication->CompareAppLaunchData(launchData); diff --git a/services/formmgr/BUILD.gn b/services/formmgr/BUILD.gn index baa09e3e2a9..2ac5a935d2d 100644 --- a/services/formmgr/BUILD.gn +++ b/services/formmgr/BUILD.gn @@ -100,8 +100,8 @@ ohos_shared_library("libfms") { "ability_runtime:app_manager", "ability_runtime:base", "ability_runtime:want", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "ces_standard:cesfwk_core", "ces_standard:cesfwk_innerkits", "dmsfwk_standard:zuri", diff --git a/services/formmgr/test/unittest/fms_form_timer_mgr_test/BUILD.gn b/services/formmgr/test/unittest/fms_form_timer_mgr_test/BUILD.gn index 93d1bad4a45..a4210763414 100644 --- a/services/formmgr/test/unittest/fms_form_timer_mgr_test/BUILD.gn +++ b/services/formmgr/test/unittest/fms_form_timer_mgr_test/BUILD.gn @@ -50,9 +50,9 @@ ohos_unittest("FmsFormTimerMgrTest") { "ability_runtime:app_manager", "ability_runtime:base", "ability_runtime:want", + "appexecfwk_standard:appexecfwk_base", + "appexecfwk_standard:appexecfwk_core", "appexecfwk_standard:libeventhandler", - "bundle_framework:appexecfwk_base", - "bundle_framework:appexecfwk_core", "ces_standard:cesfwk_core", "ces_standard:cesfwk_innerkits", "form_runtime:form_manager", diff --git a/services/test/mock/include/mock_app_scheduler.h b/services/test/mock/include/mock_app_scheduler.h index ec261df051e..bd8305ae793 100644 --- a/services/test/mock/include/mock_app_scheduler.h +++ b/services/test/mock/include/mock_app_scheduler.h @@ -33,7 +33,7 @@ public: MOCK_METHOD0(ScheduleForegroundApplication, void()); MOCK_METHOD0(ScheduleBackgroundApplication, void()); MOCK_METHOD0(ScheduleTerminateApplication, void()); - MOCK_METHOD1(ScheduleLaunchApplication, void(const AppExecFwk::AppLaunchData &)); + MOCK_METHOD1(ScheduleLaunchApplication, void(const AppExecFwk::AppLaunchData &, const Configuration &config)); MOCK_METHOD2(ScheduleLaunchAbility, void(const AppExecFwk::AbilityInfo &, const sptr &)); MOCK_METHOD1(ScheduleCleanAbility, void(const sptr &)); MOCK_METHOD1(ScheduleProfileChanged, void(const AppExecFwk::Profile &)); diff --git a/services/test/moduletest/ability_mgr_service_test/ability_mgr_module_test.cpp b/services/test/moduletest/ability_mgr_service_test/ability_mgr_module_test.cpp index 276eeb91d47..0a3d73d10d7 100644 --- a/services/test/moduletest/ability_mgr_service_test/ability_mgr_module_test.cpp +++ b/services/test/moduletest/ability_mgr_service_test/ability_mgr_module_test.cpp @@ -35,7 +35,6 @@ #include "ability_manager_service.h" #include "ability_connect_callback_proxy.h" #include "ability_config.h" -#include "configuration_distributor.h" #include "pending_want_manager.h" #include "pending_want_record.h" #undef private @@ -185,10 +184,6 @@ static void OnStartAms() AbilityMgrModuleTest::abilityMgrServ_->pendingWantManager_ = std::make_shared(); EXPECT_TRUE(AbilityMgrModuleTest::abilityMgrServ_->pendingWantManager_); - AbilityMgrModuleTest::abilityMgrServ_->configuration_ = std::make_shared(); - EXPECT_TRUE(AbilityMgrModuleTest::abilityMgrServ_->configuration_); - AbilityMgrModuleTest::abilityMgrServ_->GetGlobalConfiguration(); - int userId = AbilityMgrModuleTest::abilityMgrServ_->GetUserId(); AbilityMgrModuleTest::abilityMgrServ_->SetStackManager(userId, true); AbilityMgrModuleTest::abilityMgrServ_->systemAppManager_ = std::make_shared(userId); @@ -1791,175 +1786,6 @@ HWTEST_F(AbilityMgrModuleTest, AmsConfigurationParameter_027, TestSize.Level1) EXPECT_EQ(startstatusbar, abilityMgrServ_->amsConfigResolver_->GetStatusBarState()); EXPECT_EQ(startnavigationbar, abilityMgrServ_->amsConfigResolver_->GetNavigationBarState()); } -/* - * Feature: AbilityManagerService - * Function: UpdateConfiguration - * SubFunction: NA - * FunctionPoints: NA - * EnvConditions: NA - * CaseDescription: normal ability, page - */ -HWTEST_F(AbilityMgrModuleTest, UpdateConfiguration_028, TestSize.Level1) -{ - EXPECT_TRUE(abilityMgrServ_); - std::string abilityName = "MusicAbility"; - std::string bundleName = "com.ix.hiMusic"; - - SetActive(); - EXPECT_CALL(*mockAppMgrClient_, LoadAbility(_, _, _, _)).Times(1); - EXPECT_CALL(*mockAppMgrClient_, UpdateAbilityState(_, _)).Times(1).WillOnce(Return(AppMgrResultCode::RESULT_OK)); - Want want = CreateWant(abilityName, bundleName); - auto startRef = abilityMgrServ_->StartAbility(want); - EXPECT_EQ(startRef, 0); - - auto abilityRecord = abilityMgrServ_->GetStackManager()->GetCurrentTopAbility(); - EXPECT_TRUE(abilityRecord); - - int displeyId = 1001; - std::string key = GlobalConfigurationKey::SYSTEM_LANGUAGE; - std::string val = "Chinese"; - auto Compare = [displeyId, key, val](const AppExecFwk::Configuration &config) { - auto item = config.GetItem(displeyId, key); - EXPECT_EQ(item, val); - }; - - sptr scheduler(new MockAbilityScheduler()); - EXPECT_CALL(*scheduler, ScheduleUpdateConfiguration(_)) - .Times(2) - .WillOnce(Return()) - .WillOnce(Invoke(Compare)); - - auto ref = abilityMgrServ_->AttachAbilityThread(scheduler, abilityRecord->GetToken()); - EXPECT_EQ(ref, 0); - - int size = DelayedSingleton::GetInstance()->observerList_.size(); - EXPECT_TRUE(size > 0); - - AppExecFwk::Configuration newConfig; - newConfig.AddItem(displeyId, key, val); - - auto updateRef = abilityMgrServ_->UpdateConfiguration(newConfig); - EXPECT_EQ(updateRef, 0); - - PacMap saveData; - abilityMgrServ_->AbilityTransitionDone(abilityRecord->GetToken(), 0, saveData); - - int num = size - 1; - size = DelayedSingleton::GetInstance()->observerList_.size(); - EXPECT_EQ(size, num); -} - -/* - * Feature: AbilityManagerService - * Function: UpdateConfiguration - * SubFunction: NA - * FunctionPoints: NA - * EnvConditions: NA - * CaseDescription: service ability - */ -HWTEST_F(AbilityMgrModuleTest, UpdateConfiguration_029, TestSize.Level1) -{ - EXPECT_TRUE(abilityMgrServ_); - std::string abilityName = "hiService"; - std::string bundleName = "com.ix.hiService"; - - SetActive(); - EXPECT_CALL(*mockAppMgrClient_, LoadAbility(_, _, _, _)).Times(1); - EXPECT_CALL(*mockAppMgrClient_, UpdateAbilityState(_, _)).Times(1).WillOnce(Return(AppMgrResultCode::RESULT_OK)); - Want want = CreateWant(abilityName, bundleName); - auto startRef = abilityMgrServ_->StartAbility(want); - EXPECT_EQ(startRef, 0); - - std::shared_ptr abilityRecord = abilityMgrServ_->GetStackManager()->GetCurrentTopAbility(); - EXPECT_TRUE(abilityRecord); - - int displeyId = 1001; - std::string key = GlobalConfigurationKey::SYSTEM_LANGUAGE; - std::string val = "German"; - auto Compare = [displeyId, key, val](const AppExecFwk::Configuration &config) { - auto item = config.GetItem(displeyId, key); - EXPECT_EQ(item, val); - }; - - sptr scheduler(new MockAbilityScheduler()); - EXPECT_CALL(*scheduler, ScheduleUpdateConfiguration(_)) - .Times(2) - .WillOnce(Return()) - .WillOnce(Invoke(Compare)); - - abilityMgrServ_->AttachAbilityThread(scheduler, abilityRecord->GetToken()); - - int size = DelayedSingleton::GetInstance()->observerList_.size(); - EXPECT_TRUE(size > 0); - - AppExecFwk::Configuration newConfig; - newConfig.AddItem(displeyId, key, val); - - auto updateRef = abilityMgrServ_->UpdateConfiguration(newConfig); - EXPECT_EQ(updateRef, 0); - - PacMap saveData; - abilityMgrServ_->AbilityTransitionDone(abilityRecord->GetToken(), 0, saveData); - - int num = size - 1; - size = DelayedSingleton::GetInstance()->observerList_.size(); - EXPECT_EQ(size, num); -} - -/* - * Feature: AbilityManagerService - * Function: UpdateConfiguration - * SubFunction: NA - * FunctionPoints: NA - * EnvConditions: NA - * CaseDescription: luncher ability - */ -HWTEST_F(AbilityMgrModuleTest, UpdateConfiguration_030, TestSize.Level1) -{ - EXPECT_TRUE(abilityMgrServ_); - std::string abilityName = "hiworld"; - std::string bundleName = "com.ix.hiworld"; - - SetActive(); - Want want = CreateWant(abilityName, bundleName); - auto startRef = abilityMgrServ_->StartAbility(want); - EXPECT_EQ(startRef, 0); - - std::shared_ptr abilityRecord = abilityMgrServ_->GetStackManager()->GetCurrentTopAbility(); - EXPECT_TRUE(abilityRecord); - - int displeyId = 1001; - std::string key = GlobalConfigurationKey::SYSTEM_LANGUAGE; - std::string val = "Italian"; - auto Compare = [displeyId, key, val](const AppExecFwk::Configuration &config) { - auto item = config.GetItem(displeyId, key); - EXPECT_EQ(item, val); - }; - - sptr scheduler(new MockAbilityScheduler()); - EXPECT_CALL(*scheduler, ScheduleUpdateConfiguration(_)) - .Times(2) - .WillOnce(Return()) - .WillOnce(Invoke(Compare)); - - abilityMgrServ_->AttachAbilityThread(scheduler, abilityRecord->GetToken()); - - int size = DelayedSingleton::GetInstance()->observerList_.size(); - EXPECT_TRUE(size > 0); - - AppExecFwk::Configuration newConfig; - newConfig.AddItem(displeyId, key, val); - - auto updateRef = abilityMgrServ_->UpdateConfiguration(newConfig); - EXPECT_EQ(updateRef, 0); - - PacMap saveData; - abilityMgrServ_->AbilityTransitionDone(abilityRecord->GetToken(), 0, saveData); - - int num = size - 1; - size = DelayedSingleton::GetInstance()->observerList_.size(); - EXPECT_EQ(size, num); -} /* * Function: UninstallApp diff --git a/services/test/moduletest/common/ams/ability_running_record_test/ams_ability_running_record_module_test.cpp b/services/test/moduletest/common/ams/ability_running_record_test/ams_ability_running_record_module_test.cpp index 326370e5273..5c00685518f 100644 --- a/services/test/moduletest/common/ams/ability_running_record_test/ams_ability_running_record_module_test.cpp +++ b/services/test/moduletest/common/ams/ability_running_record_test/ams_ability_running_record_module_test.cpp @@ -89,7 +89,7 @@ public: { scheduled_ |= LOW_MEMORY_SCHEDULED; } - void ScheduleLaunchApplication(const AppLaunchData &) override + void ScheduleLaunchApplication(const AppLaunchData &, const Configuration &) override { scheduled_ |= LAUNCH_APPLICATION_SCHEDULED; appLaunchTime++; diff --git a/services/test/moduletest/common/ams/app_life_cycle_test/ams_app_life_cycle_module_test.cpp b/services/test/moduletest/common/ams/app_life_cycle_test/ams_app_life_cycle_module_test.cpp index 18fc1492d6b..41ae0c5b356 100755 --- a/services/test/moduletest/common/ams/app_life_cycle_test/ams_app_life_cycle_module_test.cpp +++ b/services/test/moduletest/common/ams/app_life_cycle_test/ams_app_life_cycle_module_test.cpp @@ -203,7 +203,7 @@ void AmsAppLifeCycleModuleTest::StartAppProcess(const pid_t &pid) const void AmsAppLifeCycleModuleTest::ChangeAbilityStateAfterAppStart( const sptr &mockAppScheduler, const pid_t &pid) const { - EXPECT_CALL(*mockAppScheduler, ScheduleLaunchApplication(_)).Times(1); + EXPECT_CALL(*mockAppScheduler, ScheduleLaunchApplication(_, _)).Times(1); EXPECT_CALL(*mockAppScheduler, ScheduleLaunchAbility(_, _)).Times(1); sptr client = iface_cast(mockAppScheduler.GetRefPtr()); diff --git a/services/test/moduletest/common/ams/app_mgr_service_test/ams_app_mgr_service_module_test.cpp b/services/test/moduletest/common/ams/app_mgr_service_test/ams_app_mgr_service_module_test.cpp index c9676b8ffc6..7cf2697ee73 100644 --- a/services/test/moduletest/common/ams/app_mgr_service_test/ams_app_mgr_service_module_test.cpp +++ b/services/test/moduletest/common/ams/app_mgr_service_test/ams_app_mgr_service_module_test.cpp @@ -51,7 +51,7 @@ public: {} void ScheduleLowMemory() override {} - void ScheduleLaunchApplication(const AppLaunchData &) override + void ScheduleLaunchApplication(const AppLaunchData &, const Configuration &) override {} void ScheduleLaunchAbility(const AbilityInfo &, const sptr &) override {} diff --git a/services/test/moduletest/common/ams/app_running_record_test/ams_app_running_record_module_test.cpp b/services/test/moduletest/common/ams/app_running_record_test/ams_app_running_record_module_test.cpp index 20f6f12bbd5..b683cbb65bb 100644 --- a/services/test/moduletest/common/ams/app_running_record_test/ams_app_running_record_module_test.cpp +++ b/services/test/moduletest/common/ams/app_running_record_test/ams_app_running_record_module_test.cpp @@ -84,10 +84,11 @@ protected: launchData.SetApplicationInfo(info); launchData.SetProcessInfo(processInfo); - EXPECT_CALL(*mockApplication, ScheduleLaunchApplication(_)) + Configuration config; + EXPECT_CALL(*mockApplication, ScheduleLaunchApplication(_, _)) .Times(1) .WillOnce(Invoke(mockApplication.GetRefPtr(), &MockApplication::LaunchApplication)); - record->LaunchApplication(); + record->LaunchApplication(config); mockApplication->Wait(); bool isEqual = mockApplication->CompareAppLaunchData(launchData); diff --git a/services/test/moduletest/common/ams/ipc_app_scheduler_test/ams_ipc_app_scheduler_module_test.cpp b/services/test/moduletest/common/ams/ipc_app_scheduler_test/ams_ipc_app_scheduler_module_test.cpp index 580e0cdd317..bb42c380bcb 100644 --- a/services/test/moduletest/common/ams/ipc_app_scheduler_test/ams_ipc_app_scheduler_module_test.cpp +++ b/services/test/moduletest/common/ams/ipc_app_scheduler_test/ams_ipc_app_scheduler_module_test.cpp @@ -255,10 +255,11 @@ HWTEST_F(AmsIpcAppSchedulerModuleTest, ExcuteApplicationIPCInterface_008, TestSi launchData.SetProfile(profile); launchData.SetProcessInfo(processInfo); - EXPECT_CALL(*mockApplication, ScheduleLaunchApplication(_)) + Configuration config; + EXPECT_CALL(*mockApplication, ScheduleLaunchApplication(_, _)) .Times(1) .WillOnce(Invoke(mockApplication.GetRefPtr(), &MockApplication::LaunchApplication)); - client->ScheduleLaunchApplication(launchData); + client->ScheduleLaunchApplication(launchData, config); mockApplication->Wait(); bool isEqual = mockApplication->CompareAppLaunchData(launchData); @@ -303,14 +304,14 @@ HWTEST_F(AmsIpcAppSchedulerModuleTest, ExcuteApplicationIPCInterface_010, TestSi OHOS::Semaphore sem(0); Configuration testConfig; std::string val = "ZH-HANS"; - testConfig.AddItem(OHOS::AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE, val); + testConfig.AddItem(GlobalConfigurationKey::SYSTEM_LANGUAGE, val); for (int i = 0; i < COUNT; i++) { sptr mockAppScheduler(new MockAppScheduler()); sptr client = iface_cast(mockAppScheduler); bool testResult = false; auto mockHandler = [&](const Configuration &config) { - testResult = (val == config.GetItem(OHOS::AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE)); + testResult = (val == config.GetItem(GlobalConfigurationKey::SYSTEM_LANGUAGE)); sem.Post(); }; diff --git a/tools/test/moduletest/aa/BUILD.gn b/tools/test/moduletest/aa/BUILD.gn index 3042dc184f2..c34519d11ac 100644 --- a/tools/test/moduletest/aa/BUILD.gn +++ b/tools/test/moduletest/aa/BUILD.gn @@ -46,7 +46,7 @@ ohos_moduletest("aa_command_start_module_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] @@ -72,7 +72,7 @@ ohos_moduletest("aa_command_stop_service_module_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] @@ -98,7 +98,7 @@ ohos_moduletest("aa_command_dump_module_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] diff --git a/tools/test/systemtest/aa/BUILD.gn b/tools/test/systemtest/aa/BUILD.gn index 9745608585e..94eb9ddd52b 100644 --- a/tools/test/systemtest/aa/BUILD.gn +++ b/tools/test/systemtest/aa/BUILD.gn @@ -51,7 +51,7 @@ ohos_systemtest("aa_command_start_system_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] @@ -79,7 +79,7 @@ ohos_systemtest("aa_command_stop_service_system_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] @@ -109,7 +109,7 @@ ohos_systemtest("aa_command_dump_system_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] diff --git a/tools/test/unittest/aa/BUILD.gn b/tools/test/unittest/aa/BUILD.gn index d2e66aed3d5..e752789aeff 100644 --- a/tools/test/unittest/aa/BUILD.gn +++ b/tools/test/unittest/aa/BUILD.gn @@ -46,7 +46,7 @@ ohos_unittest("aa_command_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] @@ -72,7 +72,7 @@ ohos_unittest("aa_command_start_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] @@ -98,7 +98,7 @@ ohos_unittest("aa_command_stop_service_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] @@ -124,7 +124,7 @@ ohos_unittest("aa_command_dump_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] @@ -150,7 +150,7 @@ ohos_unittest("aa_command_screen_test") { ] external_deps = [ - "bundle_framework:appexecfwk_base", + "appexecfwk_standard:appexecfwk_base", "hiviewdfx_hilog_native:libhilog", "ipc:ipc_core", ] -- Gitee