From 19e649898494874d1c405a29db0736c9a491cc81 Mon Sep 17 00:00:00 2001 From: kaicui Date: Thu, 14 Nov 2024 21:34:21 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=B5=8C=E5=85=A5=E5=BC=8FUIExtension?= =?UTF-8?q?=E6=94=AF=E6=8C=81windowRectChange=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: kaicui --- .../kits/napi/extension_window/BUILD.gn | 1 + .../js_extension_window_listener.cpp | 58 ++++++++++++++++++- .../js_extension_window_listener.h | 7 ++- .../js_extension_window_register_manager.cpp | 22 +++++++ .../js_extension_window_register_manager.h | 3 + 5 files changed, 86 insertions(+), 5 deletions(-) diff --git a/interfaces/kits/napi/extension_window/BUILD.gn b/interfaces/kits/napi/extension_window/BUILD.gn index cb3a51d445..c4bcd5b7fa 100644 --- a/interfaces/kits/napi/extension_window/BUILD.gn +++ b/interfaces/kits/napi/extension_window/BUILD.gn @@ -90,6 +90,7 @@ ohos_shared_library("extensionwindow_napi") { ":extension_window_kit_config", "../../../../resources/config/build:coverage_flags", ] + public_configs = [":extension_window_kit_config"] include_dirs = [ "extension_window" ] deps = [ diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp index 7ede0ce022..88ec7135d8 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp @@ -28,6 +28,7 @@ namespace Rosen { using namespace AbilityRuntime; namespace { const std::string WINDOW_SIZE_CHANGE_CB = "windowSizeChange"; +const std::string WINDOW_RECT_CHANGE_CB = "windowRectChange"; const std::string SYSTEM_AVOID_AREA_CHANGE_CB = "systemAvoidAreaChange"; const std::string AVOID_AREA_CHANGE_CB = "avoidAreaChange"; const std::string LIFECYCLE_EVENT_CB = "lifeCycleEvent"; @@ -70,7 +71,8 @@ void JsExtensionWindowListener::OnSizeChange(Rect rect, WindowSizeChangeReason r { TLOGI(WmsLogTag::WMS_UIEXT, "[NAPI]OnSizeChange, [%{public}u, %{public}u], reason=%{public}u", rect.width_, rect.height_, reason); - if (currentWidth_ == rect.width_ && currentHeight_ == rect.height_ && reason != WindowSizeChangeReason::DRAG_END) { + if (currentRect_.width_ == rect.width_ && currentRect_.height_ == rect.height_ && + reason != WindowSizeChangeReason::DRAG_END) { TLOGD(WmsLogTag::WMS_UIEXT, "[NAPI]no need to change size"); return; } @@ -111,8 +113,58 @@ void JsExtensionWindowListener::OnSizeChange(Rect rect, WindowSizeChangeReason r eventHandler_->PostTask(jsCallback, "wms:JsExtensionWindowListener::OnSizeChange", 0, AppExecFwk::EventQueue::Priority::IMMEDIATE); } - currentWidth_ = rect.width_; - currentHeight_ = rect.height_; + currRect_ = rect; +} + +void JsExtensionWindowListener::OnRectChange(Rect rect, WindowSizeChangeReason reason) +{ + if (currRect_ == rect && reason == WindowSizeChangeReason::UNDEFINED) { + TLOGD(WmsLogTag::WMS_UIEXT, "[NAPI]Skip redundant rect update"); + return; + } + RectChangeReason rectChangReason = RectChangeReason::UNDEFINED; + if (JS_SIZE_CHANGE_REASON.count(reason) != 0 && + !(reason == WindowSizeChangeReason::MAXIMIZE && rect.posX_ != 0)) { + rectChangReason = JS_SIZE_CHANGE_REASON.at(reason); + } + if (currentReason_ != RectChangeReason::DRAG && rectChangReason == RectChangeReason::DRAG_END) { + rectChangReason = RectChangeReason::MOVE; + } + // js callback should run in js thread + auto jsCallback = [self = weakRef_, rect, rectChangReason, env = env_] () { + HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER, "JsExtensionWindowListener::OnRectChange"); + auto thisListener = self.promote(); + if (thisListener == nullptr || env == nullptr) { + TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]This listener or env is nullptr"); + return; + } + napi_handle_scope scope = nullptr; + napi_open_handle_scope(env, &scope); + napi_value objValue = nullptr; + napi_create_object(env, &objValue); + if (objValue == nullptr) { + TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]Failed to create js object"); + return; + } + napi_value rectObjValue = GetRectAndConvertToJsValue(env, rect); + if (rectObjValue == nullptr) { + TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]Failed to create rect js object"); + return; + } + napi_set_named_property(env, objValue, "rect", rectObjValue); + napi_set_named_property(env, objValue, "reason", CreateJsValue(env, rectChangReason)); + napi_value argv[] = {objValue}; + thisListener->CallJsMethod(WINDOW_RECT_CHANGE_CB.c_str(), argv, ArraySize(argv)); + napi_close_handle_scope(env, scope); + }; + if (!eventHandler_) { + TLOGE(WmsLogTag::WMS_UIEXTJsExtensionWindowListener, "Get main event handler failed!"); + return; + } + eventHandler_->PostTask(jsCallback, "wms:JsExtensionWindowListener::OnRectChange", 0, + AppExecFwk::EventQueue::Priority::IMMEDIATE); + currRect_ = rect; + currentReason_ = rectChangReason; } void JsExtensionWindowListener::OnModeChange(WindowMode mode, bool hasDeco) diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.h b/interfaces/kits/napi/extension_window/js_extension_window_listener.h index 101d8c91ce..0f9151eb16 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.h +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.h @@ -26,11 +26,13 @@ #include "window.h" #include "window_manager.h" #include "wm_common.h" +#include "js_window_utils.h" #include "js_extension_window_utils.h" namespace OHOS { namespace Rosen { class JsExtensionWindowListener : public IWindowChangeListener, + public IWindowRectChangeListener, public IAvoidAreaChangedListener, public IWindowLifeCycle, public IOccupiedAreaChangeListener { @@ -41,6 +43,7 @@ public: ~JsExtensionWindowListener(); void OnSizeChange(Rect rect, WindowSizeChangeReason reason, const std::shared_ptr& rsTransaction = nullptr) override; + void OnRectChange(Rect rect, WindowSizeChangeReason reason) override; void OnModeChange(WindowMode mode, bool hasDeco) override; void OnAvoidAreaChanged(const AvoidArea avoidArea, AvoidAreaType type) override; void AfterForeground() override; @@ -56,8 +59,8 @@ public: void SetMainEventHandler(); private: - uint32_t currentWidth_ = 0; - uint32_t currentHeight_ = 0; + Rect currRect_ = {0, 0, 0, 0}; + RectChangeReason currentReason_ = RectChangeReason::UNDEFINED; napi_env env_ = nullptr; WindowState state_ {WindowState::STATE_INITIAL}; std::shared_ptr jsCallBack_; diff --git a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp index 397836f2df..fb4590fbf5 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp @@ -21,6 +21,7 @@ namespace OHOS { namespace Rosen { namespace { const std::string WINDOW_SIZE_CHANGE_CB = "windowSizeChange"; +const std::string WINDOW_RECT_CHANGE_CB = "windowRectChange"; const std::string AVOID_AREA_CHANGE_CB = "avoidAreaChange"; const std::string WINDOW_STAGE_EVENT_CB = "windowStageEvent"; const std::string WINDOW_EVENT_CB = "windowEvent"; @@ -31,6 +32,7 @@ JsExtensionWindowRegisterManager::JsExtensionWindowRegisterManager() // white register list for window listenerCodeMap_[CaseType::CASE_WINDOW] = { {WINDOW_SIZE_CHANGE_CB, ListenerType::WINDOW_SIZE_CHANGE_CB}, + {WINDOW_RECT_CHANGE_CB, ListenerType::WINDOW_RECT_CHANGE_CB}, {AVOID_AREA_CHANGE_CB, ListenerType::AVOID_AREA_CHANGE_CB}, {WINDOW_EVENT_CB, ListenerType::WINDOW_EVENT_CB}, }; @@ -61,6 +63,23 @@ WmErrorCode JsExtensionWindowRegisterManager::ProcessWindowChangeRegister(sptr listener, + sptr window, bool isRegister) +{ + if (window == nullptr) { + TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]Window is nullptr"); + return WmErrorCode::WM_ERROR_STATE_ABNORMALLY; + } + sptr thisListener(listener); + WmErrorCode ret = WmErrorCode::WM_OK; + if (isRegister) { + ret = WM_JS_TO_ERROR_CODE_MAP.at(window->RegisterWindowRectChangeListener(thisListener)); + } else { + ret = WM_JS_TO_ERROR_CODE_MAP.at(window->UnregisterWindowRectChangeListener(thisListener)); + } + return ret; +} + WmErrorCode JsExtensionWindowRegisterManager::ProcessAvoidAreaChangeRegister(sptr listener, sptr window, bool isRegister) { @@ -208,6 +227,9 @@ WmErrorCode JsExtensionWindowRegisterManager::ProcessRegister(CaseType caseType, case ListenerType::WINDOW_SIZE_CHANGE_CB: ret = ProcessWindowChangeRegister(listener, window, isRegister); break; + case ListenerType::WINDOW_RECT_CHANGE_CB: + ret = ProcessWindowRectChangeRegister(listener, window, isRegister); + break; case ListenerType::AVOID_AREA_CHANGE_CB: ret = ProcessAvoidAreaChangeRegister(listener, window, isRegister); break; diff --git a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.h b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.h index dde8170577..428f4be6ea 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.h +++ b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.h @@ -39,6 +39,7 @@ public: private: enum class ListenerType : uint32_t { WINDOW_SIZE_CHANGE_CB, + WINDOW_RECT_CHANGE_CB, AVOID_AREA_CHANGE_CB, WINDOW_EVENT_CB, WINDOW_STAGE_EVENT_CB, @@ -47,6 +48,8 @@ private: bool IsCallbackRegistered(napi_env env, std::string type, napi_value jsListenerObject); WmErrorCode ProcessWindowChangeRegister(sptr listener, sptr window, bool isRegister); + WmErrorCode ProcessWindowRectChangeRegister(sptr listener, + sptr window, bool isRegister); WmErrorCode ProcessAvoidAreaChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessLifeCycleEventRegister(sptr listener, -- Gitee From 6544717e2d9dee9a4a20b084e95057274cd1b9fe Mon Sep 17 00:00:00 2001 From: kaicui Date: Thu, 14 Nov 2024 22:09:25 +0800 Subject: [PATCH 2/7] Fix typo Signed-off-by: kaicui --- .../napi/extension_window/js_extension_window_listener.cpp | 4 ++-- .../extension_window/js_extension_window_register_manager.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp index 88ec7135d8..dc02e21fa5 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp @@ -71,7 +71,7 @@ void JsExtensionWindowListener::OnSizeChange(Rect rect, WindowSizeChangeReason r { TLOGI(WmsLogTag::WMS_UIEXT, "[NAPI]OnSizeChange, [%{public}u, %{public}u], reason=%{public}u", rect.width_, rect.height_, reason); - if (currentRect_.width_ == rect.width_ && currentRect_.height_ == rect.height_ && + if (currRect_.width_ == rect.width_ && currRect_.height_ == rect.height_ && reason != WindowSizeChangeReason::DRAG_END) { TLOGD(WmsLogTag::WMS_UIEXT, "[NAPI]no need to change size"); return; @@ -158,7 +158,7 @@ void JsExtensionWindowListener::OnRectChange(Rect rect, WindowSizeChangeReason r napi_close_handle_scope(env, scope); }; if (!eventHandler_) { - TLOGE(WmsLogTag::WMS_UIEXTJsExtensionWindowListener, "Get main event handler failed!"); + TLOGE(WmsLogTag::WMS_UIEXT, "Get main event handler failed!"); return; } eventHandler_->PostTask(jsCallback, "wms:JsExtensionWindowListener::OnRectChange", 0, diff --git a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp index fb4590fbf5..c0510dd45b 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp @@ -63,7 +63,7 @@ WmErrorCode JsExtensionWindowRegisterManager::ProcessWindowChangeRegister(sptr listener, +WmErrorCode JsExtensionWindowRegisterManager::ProcessWindowRectChangeRegister(sptr listener, sptr window, bool isRegister) { if (window == nullptr) { -- Gitee From 46065f83562b8151614155fe0c740e217d90dbd9 Mon Sep 17 00:00:00 2001 From: kaicui Date: Fri, 15 Nov 2024 10:06:53 +0800 Subject: [PATCH 3/7] gn file format Signed-off-by: kaicui --- interfaces/kits/napi/extension_window/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/kits/napi/extension_window/BUILD.gn b/interfaces/kits/napi/extension_window/BUILD.gn index c4bcd5b7fa..6c92ac75cf 100644 --- a/interfaces/kits/napi/extension_window/BUILD.gn +++ b/interfaces/kits/napi/extension_window/BUILD.gn @@ -90,7 +90,7 @@ ohos_shared_library("extensionwindow_napi") { ":extension_window_kit_config", "../../../../resources/config/build:coverage_flags", ] - public_configs = [":extension_window_kit_config"] + public_configs = [ ":extension_window_kit_config" ] include_dirs = [ "extension_window" ] deps = [ -- Gitee From 41205d6b5cc19d1982844ebe4ecf404fe4a3c6b8 Mon Sep 17 00:00:00 2001 From: kaicui Date: Fri, 15 Nov 2024 14:56:33 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=AE=8F=EF=BC=8C=E4=BC=98=E5=8C=96=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: kaicui --- .../napi/extension_window/js_extension_window_listener.cpp | 6 +++--- .../napi/extension_window/js_extension_window_listener.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp index dc02e21fa5..974c98fccf 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp @@ -135,7 +135,7 @@ void JsExtensionWindowListener::OnRectChange(Rect rect, WindowSizeChangeReason r HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER, "JsExtensionWindowListener::OnRectChange"); auto thisListener = self.promote(); if (thisListener == nullptr || env == nullptr) { - TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]This listener or env is nullptr"); + TLOGNE(WmsLogTag::WMS_UIEXT, "[NAPI]This listener or env is nullptr"); return; } napi_handle_scope scope = nullptr; @@ -143,12 +143,12 @@ void JsExtensionWindowListener::OnRectChange(Rect rect, WindowSizeChangeReason r napi_value objValue = nullptr; napi_create_object(env, &objValue); if (objValue == nullptr) { - TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]Failed to create js object"); + TLOGNE(WmsLogTag::WMS_UIEXT, "[NAPI]Failed to create js object"); return; } napi_value rectObjValue = GetRectAndConvertToJsValue(env, rect); if (rectObjValue == nullptr) { - TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]Failed to create rect js object"); + TLOGNE(WmsLogTag::WMS_UIEXT, "[NAPI]Failed to create rect js object"); return; } napi_set_named_property(env, objValue, "rect", rectObjValue); diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.h b/interfaces/kits/napi/extension_window/js_extension_window_listener.h index 0f9151eb16..0affae59d8 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.h +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.h @@ -59,7 +59,7 @@ public: void SetMainEventHandler(); private: - Rect currRect_ = {0, 0, 0, 0}; + Rect currRect_ = {}; RectChangeReason currentReason_ = RectChangeReason::UNDEFINED; napi_env env_ = nullptr; WindowState state_ {WindowState::STATE_INITIAL}; -- Gitee From a2044dcfaaac743c08b1e1696a0b8d7cf201e0cb Mon Sep 17 00:00:00 2001 From: kaicui Date: Fri, 15 Nov 2024 17:13:56 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E5=81=9A=E5=AF=B9=E5=BA=94=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: kaicui --- .../js_extension_window_listener.cpp | 22 +++++++++---------- .../js_extension_window_listener.h | 8 +++---- .../js_extension_window_register_manager.cpp | 4 ++-- .../js_extension_window_register_manager.h | 4 ++-- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp index 974c98fccf..e19a148d2c 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp @@ -116,30 +116,29 @@ void JsExtensionWindowListener::OnSizeChange(Rect rect, WindowSizeChangeReason r currRect_ = rect; } -void JsExtensionWindowListener::OnRectChange(Rect rect, WindowSizeChangeReason reason) +void JsExtensionWindowListener::OnRectChange(const Rect& rect, WindowSizeChangeReason reason) { if (currRect_ == rect && reason == WindowSizeChangeReason::UNDEFINED) { TLOGD(WmsLogTag::WMS_UIEXT, "[NAPI]Skip redundant rect update"); return; } - RectChangeReason rectChangReason = RectChangeReason::UNDEFINED; + RectChangeReason rectChangeReason = RectChangeReason::UNDEFINED; if (JS_SIZE_CHANGE_REASON.count(reason) != 0 && !(reason == WindowSizeChangeReason::MAXIMIZE && rect.posX_ != 0)) { - rectChangReason = JS_SIZE_CHANGE_REASON.at(reason); + rectChangeReason = JS_SIZE_CHANGE_REASON.at(reason); } - if (currentReason_ != RectChangeReason::DRAG && rectChangReason == RectChangeReason::DRAG_END) { - rectChangReason = RectChangeReason::MOVE; + if (currentRectChangeReason_ != RectChangeReason::DRAG && rectChangeReason == RectChangeReason::DRAG_END) { + rectChangeReason = RectChangeReason::MOVE; } // js callback should run in js thread - auto jsCallback = [self = weakRef_, rect, rectChangReason, env = env_] () { + auto jsCallback = [self = weakRef_, rect, rectChangeReason, env = env_] { HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER, "JsExtensionWindowListener::OnRectChange"); auto thisListener = self.promote(); if (thisListener == nullptr || env == nullptr) { TLOGNE(WmsLogTag::WMS_UIEXT, "[NAPI]This listener or env is nullptr"); return; } - napi_handle_scope scope = nullptr; - napi_open_handle_scope(env, &scope); + HandleScope handleScope(env); napi_value objValue = nullptr; napi_create_object(env, &objValue); if (objValue == nullptr) { @@ -152,10 +151,9 @@ void JsExtensionWindowListener::OnRectChange(Rect rect, WindowSizeChangeReason r return; } napi_set_named_property(env, objValue, "rect", rectObjValue); - napi_set_named_property(env, objValue, "reason", CreateJsValue(env, rectChangReason)); - napi_value argv[] = {objValue}; + napi_set_named_property(env, objValue, "reason", CreateJsValue(env, rectChangeReason)); + napi_value argv[] = { objValue }; thisListener->CallJsMethod(WINDOW_RECT_CHANGE_CB.c_str(), argv, ArraySize(argv)); - napi_close_handle_scope(env, scope); }; if (!eventHandler_) { TLOGE(WmsLogTag::WMS_UIEXT, "Get main event handler failed!"); @@ -164,7 +162,7 @@ void JsExtensionWindowListener::OnRectChange(Rect rect, WindowSizeChangeReason r eventHandler_->PostTask(jsCallback, "wms:JsExtensionWindowListener::OnRectChange", 0, AppExecFwk::EventQueue::Priority::IMMEDIATE); currRect_ = rect; - currentReason_ = rectChangReason; + currentRectChangeReason_ = rectChangeReason; } void JsExtensionWindowListener::OnModeChange(WindowMode mode, bool hasDeco) diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.h b/interfaces/kits/napi/extension_window/js_extension_window_listener.h index 0affae59d8..65fd5083b5 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.h +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.h @@ -26,8 +26,8 @@ #include "window.h" #include "window_manager.h" #include "wm_common.h" -#include "js_window_utils.h" #include "js_extension_window_utils.h" +#include "js_window_utils.h" namespace OHOS { namespace Rosen { @@ -43,7 +43,7 @@ public: ~JsExtensionWindowListener(); void OnSizeChange(Rect rect, WindowSizeChangeReason reason, const std::shared_ptr& rsTransaction = nullptr) override; - void OnRectChange(Rect rect, WindowSizeChangeReason reason) override; + void OnRectChange(const Rect& rect, WindowSizeChangeReason reason) override; void OnModeChange(WindowMode mode, bool hasDeco) override; void OnAvoidAreaChanged(const AvoidArea avoidArea, AvoidAreaType type) override; void AfterForeground() override; @@ -59,8 +59,8 @@ public: void SetMainEventHandler(); private: - Rect currRect_ = {}; - RectChangeReason currentReason_ = RectChangeReason::UNDEFINED; + Rect currRect_; + RectChangeReason currentRectChangeReason_ = RectChangeReason::UNDEFINED; napi_env env_ = nullptr; WindowState state_ {WindowState::STATE_INITIAL}; std::shared_ptr jsCallBack_; diff --git a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp index c0510dd45b..f406003ef8 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp @@ -63,8 +63,8 @@ WmErrorCode JsExtensionWindowRegisterManager::ProcessWindowChangeRegister(sptr listener, - sptr window, bool isRegister) +WmErrorCode JsExtensionWindowRegisterManager::ProcessWindowRectChangeRegister(const sptr& listener, + const sptr& window, bool isRegister) { if (window == nullptr) { TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]Window is nullptr"); diff --git a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.h b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.h index 428f4be6ea..dfe442d1b3 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.h +++ b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.h @@ -48,8 +48,8 @@ private: bool IsCallbackRegistered(napi_env env, std::string type, napi_value jsListenerObject); WmErrorCode ProcessWindowChangeRegister(sptr listener, sptr window, bool isRegister); - WmErrorCode ProcessWindowRectChangeRegister(sptr listener, - sptr window, bool isRegister); + WmErrorCode ProcessWindowRectChangeRegister(const sptr& listener, + const sptr& window, bool isRegister); WmErrorCode ProcessAvoidAreaChangeRegister(sptr listener, sptr window, bool isRegister); WmErrorCode ProcessLifeCycleEventRegister(sptr listener, -- Gitee From 09e4fa5a0338f43514ace36c5a6df8912742b8dc Mon Sep 17 00:00:00 2001 From: kaicui Date: Fri, 15 Nov 2024 17:29:13 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9OnRectChange=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=85=A5=E5=8F=82rect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: kaicui --- .../kits/napi/extension_window/js_extension_window_listener.cpp | 2 +- .../kits/napi/extension_window/js_extension_window_listener.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp index e19a148d2c..828183888a 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.cpp @@ -116,7 +116,7 @@ void JsExtensionWindowListener::OnSizeChange(Rect rect, WindowSizeChangeReason r currRect_ = rect; } -void JsExtensionWindowListener::OnRectChange(const Rect& rect, WindowSizeChangeReason reason) +void JsExtensionWindowListener::OnRectChange(Rect rect, WindowSizeChangeReason reason) { if (currRect_ == rect && reason == WindowSizeChangeReason::UNDEFINED) { TLOGD(WmsLogTag::WMS_UIEXT, "[NAPI]Skip redundant rect update"); diff --git a/interfaces/kits/napi/extension_window/js_extension_window_listener.h b/interfaces/kits/napi/extension_window/js_extension_window_listener.h index 65fd5083b5..757dae4c21 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_listener.h +++ b/interfaces/kits/napi/extension_window/js_extension_window_listener.h @@ -43,7 +43,7 @@ public: ~JsExtensionWindowListener(); void OnSizeChange(Rect rect, WindowSizeChangeReason reason, const std::shared_ptr& rsTransaction = nullptr) override; - void OnRectChange(const Rect& rect, WindowSizeChangeReason reason) override; + void OnRectChange(Rect rect, WindowSizeChangeReason reason) override; void OnModeChange(WindowMode mode, bool hasDeco) override; void OnAvoidAreaChanged(const AvoidArea avoidArea, AvoidAreaType type) override; void AfterForeground() override; -- Gitee From 9f6262d82683d0f538089659c2664ac06fef2261 Mon Sep 17 00:00:00 2001 From: kaicui Date: Fri, 15 Nov 2024 17:49:58 +0800 Subject: [PATCH 7/7] =?UTF-8?q?ProcessWindowRectChangeRegister=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=AE=9A=E4=B9=89=E5=85=A5=E5=8F=82=E6=8D=A2=E8=A1=8C?= =?UTF-8?q?=E4=BB=A5=E8=A7=A3=E5=86=B3=E8=A1=8C=E5=AE=BD=E8=BF=87=E5=AE=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: kaicui --- .../extension_window/js_extension_window_register_manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp index f406003ef8..2a3ff90a68 100644 --- a/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp +++ b/interfaces/kits/napi/extension_window/js_extension_window_register_manager.cpp @@ -63,8 +63,8 @@ WmErrorCode JsExtensionWindowRegisterManager::ProcessWindowChangeRegister(sptr& listener, - const sptr& window, bool isRegister) +WmErrorCode JsExtensionWindowRegisterManager::ProcessWindowRectChangeRegister( + const sptr& listener, const sptr& window, bool isRegister) { if (window == nullptr) { TLOGE(WmsLogTag::WMS_UIEXT, "[NAPI]Window is nullptr"); -- Gitee