diff --git a/frameworks/ets/ani/ui_extension_ability/include/ets_ui_extension.h b/frameworks/ets/ani/ui_extension_ability/include/ets_ui_extension.h index 5316b90aad7e3cfb2b981ebe7207698035a551f8..3148066bffbccfe6a431b1166efebe9633cb5dea 100644 --- a/frameworks/ets/ani/ui_extension_ability/include/ets_ui_extension.h +++ b/frameworks/ets/ani/ui_extension_ability/include/ets_ui_extension.h @@ -161,8 +161,6 @@ private: std::shared_ptr etsObj_ = nullptr; std::shared_ptr shellContextRef_ = nullptr; std::mutex uiWindowMutex_; - std::map> uiWindowMap_; - std::set foregroundWindows_; std::map contentSessions_; int32_t screenMode_ = AAFwk::IDLE_SCREEN_MODE; std::shared_ptr screenModePtr_; diff --git a/frameworks/ets/ani/ui_extension_ability/include/ets_ui_extension_content_session.h b/frameworks/ets/ani/ui_extension_ability/include/ets_ui_extension_content_session.h index c829015e6bd188659c9a62484b13ea859e74c18c..d4fea8956449320306313afc09768a26388f2b13 100644 --- a/frameworks/ets/ani/ui_extension_ability/include/ets_ui_extension_content_session.h +++ b/frameworks/ets/ani/ui_extension_ability/include/ets_ui_extension_content_session.h @@ -101,7 +101,7 @@ private: ani_ref receiveDataCallback_ = nullptr; bool isRegistered_ = false; std::shared_ptr receiveDataForResultCallback_; - bool isSyncRegistered = false; + bool isSyncRegistered_ = false; std::shared_ptr listener_; bool isFirstTriggerBindModal_ = true; }; diff --git a/frameworks/ets/ani/ui_extension_ability/src/ets_ui_extension_content_session.cpp b/frameworks/ets/ani/ui_extension_ability/src/ets_ui_extension_content_session.cpp index f70007004596467c42ff0ed89c276801bd901d5d..cb965963194cd5962db25af5dfa933b169d29d97 100644 --- a/frameworks/ets/ani/ui_extension_ability/src/ets_ui_extension_content_session.cpp +++ b/frameworks/ets/ani/ui_extension_ability/src/ets_ui_extension_content_session.cpp @@ -276,21 +276,22 @@ void EtsUIExtensionContentSession::SendData(ani_env *env, ani_object object, ani void EtsUIExtensionContentSession::LoadContent(ani_env *env, ani_object object, ani_string path, ani_object storage) { - TAG_LOGD(AAFwkTag::UI_EXT, "called"); + TAG_LOGD(AAFwkTag::UI_EXT, "LoadContent called"); std::string contextPath; - ani_size sz {}; - env->String_GetUTF8Size(path, &sz); - contextPath.resize(sz + 1); - env->String_GetUTF8SubString(path, 0, sz, contextPath.data(), contextPath.size(), &sz); - + if (!OHOS::AppExecFwk::GetStdString(env, path, contextPath)) { + TAG_LOGE(AAFwkTag::UI_EXT, "invalid param"); + EtsErrorUtil::ThrowInvalidParamError(env, "Parameter error: Path must be a string."); + return; + } + TAG_LOGD(AAFwkTag::UI_EXT, "contextPath: %{public}s", contextPath.c_str()); if (uiWindow_ == nullptr || sessionInfo_ == nullptr) { TAG_LOGE(AAFwkTag::UI_EXT, "uiWindow_ or sessionInfo_ is nullptr"); EtsErrorUtil::ThrowErrorByNativeErr(env, static_cast(AbilityErrorCode::ERROR_CODE_INNER)); return; } - if (sessionInfo_->isAsyncModalBinding && isFirstTriggerBindModal_) { + TAG_LOGD(AAFwkTag::UI_EXT, "Trigger binding UIExtension modal window"); uiWindow_->TriggerBindModalUIExtension(); isFirstTriggerBindModal_ = false; } @@ -302,6 +303,7 @@ void EtsUIExtensionContentSession::LoadContent(ani_env *env, ani_object object, EtsErrorUtil::ThrowErrorByNativeErr(env, static_cast(AbilityErrorCode::ERROR_CODE_INNER)); } + TAG_LOGD(AAFwkTag::UI_EXT, "LoadContent end"); return; } @@ -321,10 +323,11 @@ void EtsUIExtensionContentSession::SetWindowBackgroundColor(ani_env *env, ani_st { TAG_LOGD(AAFwkTag::UI_EXT, "SetWindowBackgroundColor call"); std::string strColor; - ani_size sz {}; - env->String_GetUTF8Size(color, &sz); - strColor.resize(sz + 1); - env->String_GetUTF8SubString(color, 0, sz, strColor.data(), strColor.size(), &sz); + if (!OHOS::AppExecFwk::GetStdString(env, color, strColor)) { + TAG_LOGE(AAFwkTag::UI_EXT, "invalid param"); + EtsErrorUtil::ThrowInvalidParamError(env, "Parameter error: color must be a string."); + return; + } if (uiWindow_ == nullptr) { TAG_LOGE(AAFwkTag::UI_EXT, "uiWindow_ is nullptr"); EtsErrorUtil::ThrowError(env, AbilityErrorCode::ERROR_CODE_INNER); @@ -394,7 +397,7 @@ void EtsUIExtensionContentSession::SetReceiveDataCallback(ani_env *env, ani_obje TAG_LOGD(AAFwkTag::UI_EXT, "SetReceiveDataCallback end"); } -void EtsUIExtensionContentSession::SetReceiveDataCallbackRegister(ani_env* env, ani_object functionObj) +void EtsUIExtensionContentSession::SetReceiveDataCallbackRegister(ani_env *env, ani_object functionObj) { if (uiWindow_ == nullptr) { TAG_LOGE(AAFwkTag::UI_EXT, "uiWindow_ is nullptr"); @@ -419,19 +422,21 @@ void EtsUIExtensionContentSession::SetReceiveDataCallbackRegister(ani_env* env, } auto callbackRef = receiveDataCallback_; auto handler = std::make_shared(AppExecFwk::EventRunner::GetMainEventRunner()); - uiWindow_->RegisterTransferComponentDataListener([aniVM, handler, callbackRef] ( - const AAFwk::WantParams& wantParams) { - if (handler) { - handler->PostTask([aniVM, callbackRef, wantParams]() { - EtsUIExtensionContentSession::CallReceiveDataCallback(aniVM, callbackRef, wantParams); - }, "EtsUIExtensionContentSession:OnSetReceiveDataCallback"); - } - }); + uiWindow_->RegisterTransferComponentDataListener( + [aniVM, handler, callbackRef](const AAFwk::WantParams &wantParams) { + if (handler) { + handler->PostTask( + [aniVM, callbackRef, wantParams]() { + EtsUIExtensionContentSession::CallReceiveDataCallback(aniVM, callbackRef, wantParams); + }, + "EtsUIExtensionContentSession:OnSetReceiveDataCallback"); + } + }); isRegistered_ = true; } -void EtsUIExtensionContentSession::CallReceiveDataCallback(ani_vm* vm, ani_ref callbackRef, - const AAFwk::WantParams& wantParams) +void EtsUIExtensionContentSession::CallReceiveDataCallback(ani_vm *vm, ani_ref callbackRef, + const AAFwk::WantParams &wantParams) { TAG_LOGD(AAFwkTag::UI_EXT, "CallReceiveDataCallback call"); if (vm == nullptr) { diff --git a/frameworks/native/ability/native/ui_extension_ability/ui_extension.cpp b/frameworks/native/ability/native/ui_extension_ability/ui_extension.cpp index 4131cc0b350f3f18f2b343112e7fb6a37058c4b3..60e55b30c0d9d59d991b2de964af33bed1fffb71 100755 --- a/frameworks/native/ability/native/ui_extension_ability/ui_extension.cpp +++ b/frameworks/native/ability/native/ui_extension_ability/ui_extension.cpp @@ -15,6 +15,10 @@ #include "ui_extension.h" +#include "ability_manager_client.h" +#include "array_wrapper.h" +#include "connection_manager.h" +#include "ets_ui_extension.h" #include "ets_ui_extension_instance.h" #include "ability_manager_client.h" #include "array_wrapper.h" diff --git a/frameworks/native/appkit/ability_runtime/app/ets_ability_stage.cpp b/frameworks/native/appkit/ability_runtime/app/ets_ability_stage.cpp index a6b0158e27d41fcb324228d3ee34d6ddfd4e4fd7..844e932fb2dd4b50bd7a02bb2e06a695b7ec37b8 100644 --- a/frameworks/native/appkit/ability_runtime/app/ets_ability_stage.cpp +++ b/frameworks/native/appkit/ability_runtime/app/ets_ability_stage.cpp @@ -42,7 +42,7 @@ namespace OHOS { namespace AbilityRuntime { AbilityStage *ETSAbilityStage::Create( - const std::unique_ptr& runtime, const AppExecFwk::HapModuleInfo& hapModuleInfo) + const std::unique_ptr &runtime, const AppExecFwk::HapModuleInfo &hapModuleInfo) { if (runtime == nullptr) { TAG_LOGE(AAFwkTag::APPKIT, "null runtime"); diff --git a/interfaces/kits/native/appkit/ability_runtime/app/ets_ability_stage.h b/interfaces/kits/native/appkit/ability_runtime/app/ets_ability_stage.h index 55eca830a9daf94e26f24cf8ef4693ff1aa6bfbc..d1dd02a8985b16571a201a581b80ba4be7adf553 100644 --- a/interfaces/kits/native/appkit/ability_runtime/app/ets_ability_stage.h +++ b/interfaces/kits/native/appkit/ability_runtime/app/ets_ability_stage.h @@ -32,7 +32,7 @@ namespace AbilityRuntime { class ETSAbilityStage : public AbilityStage { public: static AbilityStage *Create( - const std::unique_ptr& runtime, const AppExecFwk::HapModuleInfo& hapModuleInfo); + const std::unique_ptr &runtime, const AppExecFwk::HapModuleInfo &hapModuleInfo); ETSAbilityStage(ETSRuntime &etsRuntime, std::unique_ptr &&ETSAbilityStageObj); ~ETSAbilityStage() override {}