diff --git a/frameworks/kits/ability/native/BUILD.gn b/frameworks/kits/ability/native/BUILD.gn index c2cb1ac238aeaa7e733497b7c2c5f16a9ade839a..05d03cfecf127be5385f4cc79e8a0e58201e5cb0 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 3cdcb7dfadd114945adc9b6eb8ab4f240d38ccca..901d7c1c7059c3fe06c42ce22d7843f4b2fa649f 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 eb2b473130227e2070e4ed0f2a15180e53547d2d..60d6e504377c7d070af22830953b787e79e6df2c 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 a47252f3df045b11a89110748c06bdc97c8fb21b..58b73012b0212d504dfef250b130f0464337eb93 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 ccf35f76b13a7ebda757fef50add8588b0c7c24c..a1689dbe0d6b61d9f1435cbef7e11fc5b4f6d557 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 d770bb2007d2271d591b4a68abff037d395c31a1..89a58cc5d736094960761e60eb1c43752ce5c092 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 801b49ee6559736344a3955eba9fb77e8ebf42e9..6bc705ede09abc7ba4a503f867f9f64b7aa938dd 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 e6bf7ff7e2287e551bf1d574e87c95ca5b925d88..bece02508f6515f2aa5b56fff4a3379fecea1517 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 4761f4e06d8e891547212d37f0a7f3765304213c..46d8cf38a7bff59fb337bf2a0640cb5093a37ca8 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 cfbd3f2e78bc81c5f40ab4f6f45c64782f6a7872..f9605b27a7d8d585fe93800d700daa48696f2504 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 8f563ceb96e74a25709eb200a5e7e88d82c59a5c..2bf23e4f8d0497a8c2daee524fade0b1f49430ce 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 11a343f9dbf7f59c78c9ae598dd064098a19bc21..0cab4fa2922ca16147dc7181aa5417d345f35b63 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 b5d78c05fc1f2e6259b79ed643615378b69646ae..08c265d7c6faae0b5110e5bd47955592c5a85e80 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 123c0c7f9b62f1b975e9d166e3eedc1c51e40383..987620ff53d1d01ddc397f2a00125c85b8b9e4af 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 8e55715e3759551113b106db0dd11a1a2d40383a..6db1072a09b6855b1c28cf4bf5e9c1b3c27365e1 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 92ea68d88afa30140f3486b57176915273515902..ca8433e58f8216af29aa5e01db1122f0cb131464 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 341f981dd16eb4009852e68274b739bf43290f6c..460754e114de599f05e7676944322fbe56e396d9 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 7136563ee1ce3d949d3cd86bd1e0fcf1183a1ecc..dcd14487563daa50979ca0d96e38719bf2b00b20 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 0532001e85e3a30bdbddf812faacf934f4e0007a..25e260bed4d8e871a954fdff421fe46880a87359 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 83e684d0da69a2f05d9856912bf8727d827f7600..a71a46a7b306332455e983d4b2a084421abbc8db 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 5f188c581c575b8f9bdc58057846e2f366b1fb47..97b1ec63cc6d9e1b7f94bdefc0584c316cbc2e5e 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 edfa04e76dba92917cc417c74c3cdc66c0b650c8..835efb910218e5ded459fd8d297c00b24b499e9f 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 10066317c5f044b87e54e8305f2741b82d011d72..552f08f3066351a10ee545db8c1327433a4ccbb0 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 f09e46546b5690a6b567ce9dc5173e1cb37bd0f2..e85d8e9e098d267582506fb9a588f32692f9f8d8 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 76b5b0462c710bd278e544fd54197116f0cbb914..631de3d4dbfe25ff3d78423cbe03583c98a4beaa 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 15b1060024d8ed6b198a948ebfd398818c8baccc..de976e225cda63a87f7b3826c0e8dd7aa750fe05 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 fad107fecbfb6be4cb74a0861eea78354fb41ee6..52d92d899de703c641f0aaffab9942a3a3751f95 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 26b373d1e8fdcf32301397ae672157a9dc469c05..2cbbf7ace4cfdf4a9ac2cc97013b59ac9794a833 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 225eda402ebcbc47ac2ebec4d3f3f27b65f5234a..8b97b0bc212305adc6f6b2ebebb2b602f0a877a0 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 fdf65465cc9d14ac7c9d372f0d89a4ccba57a059..ccb013efd89f4a717615dd5dc00ec3ed202af0a7 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 39017601df723a4e5af0ef5e8256f65ea7022ddb..52d429916e73d14566eff3388ae023e39c7cf1c8 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 e5eb77b8c53ec992cda3b5d73497197da7048bd7..c5bcd6989b789f109092e2e1b75a7fcc814afd1b 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 bd96ac4a3fb58696ce49bfc204425ee456561f26..30f1b86ea73555958e4f7e567fd17a556e115aeb 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 06a17da7534bcad07485d02842e34f8f6ac37c4d..9d59cf17ee9a79bc1e15860c56c29044ce0f8765 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 73d6404cc3ec3d18192628863b833f8fd068f5bd..f01aed90c67c90a8fd43b5e40c1153266b910f76 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 a762241cc37c4bda3da616aa5352cc1834e80bbc..18b5162d62b8a09d02a399f452e7fa7a905714eb 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 22c3ae7cb8490f3cf15c605647b90dbde531c512..2e37448b532d12b5cf953b823d7b6437a9e71de6 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 c2ea00457f0d7bd12bb5fac914fda8b7ad77bd25..22cb6e31ae6f77f9851ebaa54ae93fd35b6a149b 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 a86da7106b1d18cd24bd7cb255ea996b32047ae6..3ea6f144f731f7eb1f8e853fae848a27481e29e3 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 f3d19a47027a4941a60543068187de1f9a19757e..0f3826ab65f18c8f3403464375872a8d54f1c6ea 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 a95e5238b8741963f617d0077ee9efd1b2c12283..6e16f2a76994ba3036b0d27a549a9c1f13d94ef7 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 24678b6ed40619d3cdf5ec08d46c7240d7586962..28c832dfe47bc3ec19f69a80d40356a39d02b639 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 6f73e78312c4d3aa3e1fb25c3a3cfd211b9aa6e6..b32246015c5eecf1f5d498e728dad9690d5eaaa7 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 8105005e1fbbdea1e85259a50c4e6a82c494126b..329d28465483110344d5e64d690e377ab08b61f1 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 e22581fe298c4522f8e41de43c9eb20dd1ca1fb8..f26273fd7a7b786fc2d038689c4ce2069af8dd03 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 8934b55bee4a3c0871f60ad95be289e7769bf4c2..05970a293c2de1cb387506ea04b3b09c05057c92 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 a80d99ca60e5eecea0b1991309fbbab320379ac8..520a9119944b41c73a47b055f1241436c1c6615c 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 49082782e5345d77a71a62f643410099df9eae48..7aa7f321e71b7dd1ac8991427e25d49a59893095 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 bbdfb232b7cfdf9b241ca32de7588e0de2db9e4e..2966af83c994d70a202888ccff39dfb511ec35b9 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 9b160efaa89500873de8ecad878036b5d94547df..8bb16dcf82aefc07ecf4302fb34107cb334f220d 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 738076ff300e89e6da75b884fb461c567c7c96a4..3bd6e18ad01b7e85982ba2012522981be14c8960 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 4778cad548697599f32b8ebed37fa90d0837671a..6c30b4c541fde18b1d31bef0422a72fdaff4c71d 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 94fc4b253f1a6dce74f4638b0d0229497285482d..b87878cbd2c274e91a8a4782ae5781fa12a02cc7 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 8400c826cfb4562628eed69508161e286e485037..f2f61cd964080bb385b6600fbf6fb0e30559d8a6 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 b24484d91a399ab25dfb35415e8d2081e89b68a2..31e455c534742456071d97376572b56e39c6d779 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 23a25860d9652cf00ede81f2be47268d2b978388..a8c75df25a08af70cabbad28180e16ce2d975e41 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 4fbd632970c6e0369c5b7986936acadebe75504d..0e540e218376be10c22c705687b8b3736b792497 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 4a46419c76d283499226d8338edac0c0c13e8a62..6d420d9879ceb4949d599c41ea60e45f741d758e 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 1d4e72c96a2c54430b5f3db84d837e671792983f..05d991d775997e437d9f35c4edd45de635c9132e 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 8f0a88e8e6d6f34175a62ab2caa5f15bb9730dab..0000000000000000000000000000000000000000 --- 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 ad007e10339008eed115045e53fd789ed435fe43..239c0e6ce95793305f21d94fb87530d1dffe2a6e 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 d1f0c0c74ad238dc073207365e3db67e9083edca..2eb56c60929acfe39647fc59e74bcb55ee090cad 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 13a60978f665e84197a241f299c3f4919e042af0..8d21989c25309e5e685a10f55f5aa58d13ce6a11 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 e7bfc803fa03cd09d492de1ada02b3f2c6632f03..4ebd631129f3ed0a29060a2dcebbcbdb5aa817c6 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 d0996dfc3301af0d641ee7cdeebbdee9a063c6b3..8a9f1e9c20052318193a3f88d8d1ecc08c5895cb 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 46ab6eee7b76b44149afa601b09e6cfcd4cd765f..84cb63309ee5b40f0fbfd83a77ea6c3cf6a99dab 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 0d28e57bcaccf6896bc88274ca7b26d6d22ac0e6..5f63a44a3532d2f49fbd69c5d8aa16f5c19f4271 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 3171e32501225dd6ea57d7f66582e57d3594a40e..1e9b8bc125f63b6b74747c7f984ff5f1f8895fdd 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 695ff556ebfcf9c49c481a41a35791333c378dac..a0dde91afc88c79ede8aa78e7eaa7d6297a0d10b 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 3d4237fc308a5350ed9ad134a5822c8de177177f..8d38a1c0b23f1da23b2f05c7aac9468f451f85f4 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 c6e3f7913024bbba284382fbb409c7617c7a5959..3ddf07241ae7b56fb5ed0b75cb88b3b69bbc2d77 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 5757bd929cdbe164124e347c7597f108810b0035..d36f6bf44a534a0b09e20db9ec724a622333387d 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 527a97b99d3b80baa5dc36ae153a8b21fd632908..8fb997a3985b91863a1df33db1a58e000e089ae5 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 7fd28d854e2d81234c7baab12af8cfcb6d726805..6ffcd67b707b6ebf90047bb6d162fe055d805cc6 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 076aed628612ce011f04ea8e601aa36149fd5d39..59897231db5b2a583c809d3ef9d65318753a3ad2 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 59f8becef1fc7e9f35c64c874a94c34ac1b3bcde..4ae8b5943db94fc2a1b4def23b6a0cd05c43cdd7 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 8c19fecf32b28543a6b7f16743f538bbdeed0d4c..9b8d39a7f8fbe229507db91bd8b41b92d429774e 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 db43d853f56eaf437be5ae2be0f2ea91eff955f5..dccdc6bc1357f794ce72bc5d97c7b90af4358a05 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 59e198ff41cde0bb24ac29256455c8a753a96a26..dc62be9f69137ddfb954bc85fda2b1060d8a5724 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 00de1505044e2a7c468e427e24356e116521d378..2b4ebe05821c043a7d64bb327103a09bc60bf6a5 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 c19f6d37f6846b97ed7c04d74e1aa2695e6d40b5..514a4c646e667b2f1649ead84a27b359490990f9 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 62dc7ae702b6e177decc066a3fc3b139e15f6e3e..62e9c315074addcfd72f4edfc7cb030642a921f5 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 baa09e3e2a9277589ee857d9981195378c79cc41..2ac5a935d2d3edeb3d3e37856f7103123a3d5d04 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 93d1bad4a45f93bd22d30cee063efe05c153aee7..a4210763414e07d48a766f9364de091c56d730bf 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 ec261df051e7a1da36f54b74368bf5c17079dd01..bd8305ae79379d80f535bf18cc7fcca3d07d0403 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 276eeb91d47f21662f5996dd176fa7f6356f29d5..0a3d73d10d7bd5a9cb21a38d7c07202dfe145524 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 326370e52739721ed2363d828dd1513098198160..5c00685518f8f47960fc56218bc4861f48f39a00 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 18fc1492d6b3328b7d26e43dc8f495194b182eea..41ae0c5b356eb4ae89040f745f099435a68b994d 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 c9676b8ffc6cb39d0f9c38ea796c141ffea9b8b3..7cf2697ee730eee1351e0f6f82f97a9515eb952e 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 20f6f12bbd589df3acf4266ea73dd42b86864848..b683cbb65bb41ed26b88cfb79d96f7696d407527 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 580e0cdd317658d4ebe16044cfad4e54f20fe8d2..bb42c380bcb1371c06f92c4f0ada0db0f1c4e2e2 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 3042dc184f26037dff7c1947e35f538215ae46c0..c34519d11accd33a0426df258163de7967f2cc4c 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 9745608585ebf6b00101f7a1f8ba670655d12a63..94eb9ddd52b23844747ccf335e1e4eb143a525dd 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 d2e66aed3d54728c1b874085358ef9e4aeeef20f..e752789aeffef7f4baac167018037b18b11324fa 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", ]