diff --git a/frameworks/native/ability/native/configuration_utils.cpp b/frameworks/native/ability/native/configuration_utils.cpp index e0884d93a2..663ad62df4 100644 --- a/frameworks/native/ability/native/configuration_utils.cpp +++ b/frameworks/native/ability/native/configuration_utils.cpp @@ -41,6 +41,26 @@ void ConfigurationUtils::UpdateGlobalConfig(const Configuration &configuration, resourceConfig.UpdateResConfig(configuration, resourceManager); } +void ConfigurationUtils::UpdateGlobalConfig(const Configuration &configuration, + std::shared_ptr targetConfiguration, std::shared_ptr resourceManager) +{ + HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); + if (targetConfiguration == nullptr || resourceManager == nullptr) { + TAG_LOGE(AAFwkTag::ABILITY, "Input invalid"); + return; + } + std::vector changeKeyV; + targetConfiguration->CompareDifferent(changeKeyV, configuration); + if (changeKeyV.empty()) { + TAG_LOGD(AAFwkTag::ABILITY, "There's no changed config"); + return; + } + targetConfiguration->Merge(changeKeyV, configuration); + ResourceConfigHelper resourceConfig; + GetGlobalConfig(configuration, resourceConfig); + resourceConfig.UpdateResConfig(configuration, resourceManager); +} + void ConfigurationUtils::GetGlobalConfig(const Configuration &configuration, OHOS::AbilityRuntime::ResourceConfigHelper &resourceConfig) { diff --git a/frameworks/native/ability/native/ui_extension_ability/js_ui_extension.cpp b/frameworks/native/ability/native/ui_extension_ability/js_ui_extension.cpp index f8ddc0ba3b..4b89a7e71f 100755 --- a/frameworks/native/ability/native/ui_extension_ability/js_ui_extension.cpp +++ b/frameworks/native/ability/native/ui_extension_ability/js_ui_extension.cpp @@ -944,7 +944,7 @@ void JsUIExtension::OnConfigurationUpdated(const AppExecFwk::Configuration& conf } auto configUtils = std::make_shared(); - configUtils->UpdateGlobalConfig(configuration, context->GetResourceManager()); + configUtils->UpdateGlobalConfig(configuration, context->GetConfiguration(), context->GetResourceManager()); ConfigurationUpdated(); } diff --git a/frameworks/native/ability/native/ui_extension_ability/js_ui_extension_base.cpp b/frameworks/native/ability/native/ui_extension_ability/js_ui_extension_base.cpp index 790e305d31..23dd1f0bde 100644 --- a/frameworks/native/ability/native/ui_extension_ability/js_ui_extension_base.cpp +++ b/frameworks/native/ability/native/ui_extension_ability/js_ui_extension_base.cpp @@ -782,7 +782,7 @@ void JsUIExtensionBase::OnConfigurationUpdated(const AppExecFwk::Configuration & } auto configUtils = std::make_shared(); - configUtils->UpdateGlobalConfig(configuration, context_->GetResourceManager()); + configUtils->UpdateGlobalConfig(configuration, context_->GetConfiguration(), context_->GetResourceManager()); ConfigurationUpdated(); } diff --git a/interfaces/kits/native/ability/native/configuration_utils.h b/interfaces/kits/native/ability/native/configuration_utils.h index ccbabb9e8d..c17bce2a2c 100644 --- a/interfaces/kits/native/ability/native/configuration_utils.h +++ b/interfaces/kits/native/ability/native/configuration_utils.h @@ -40,6 +40,16 @@ public: */ void UpdateGlobalConfig(const Configuration &configuration, std::shared_ptr resourceManager); + /** + * @brief Update global configuration to context configuration and resource manager. + * + * @param configuration global configuration + * @param contextConfig context configuration + * @param resourceManager resource manager + */ + void UpdateGlobalConfig(const Configuration &configuration, std::shared_ptr contextConfig, + std::shared_ptr resourceManager); + private: void GetGlobalConfig(const Configuration &configuration, OHOS::AbilityRuntime::ResourceConfigHelper &resourceConfig);