From f7b7b2a9d191311876f170ee6053404a66c98eb9 Mon Sep 17 00:00:00 2001 From: tian-xun Date: Wed, 29 Nov 2023 21:49:39 +0800 Subject: [PATCH] Add property named drawableRect in windowProperties Signed-off-by: tian-xun --- .../window_runtime/window_napi/js_window.cpp | 18 ++++++++++++++++-- .../window_napi/js_window_utils.cpp | 19 +++++++++++++------ .../window_napi/js_window_utils.h | 2 +- test/common/mock/mock_uicontent.h | 1 + 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/interfaces/kits/napi/window_runtime/window_napi/js_window.cpp b/interfaces/kits/napi/window_runtime/window_napi/js_window.cpp index 32890e483d..004a8e1974 100644 --- a/interfaces/kits/napi/window_runtime/window_napi/js_window.cpp +++ b/interfaces/kits/napi/window_runtime/window_napi/js_window.cpp @@ -1389,7 +1389,14 @@ napi_value JsWindow::OnGetProperties(napi_env env, napi_callback_info info) WLOGFE("window is nullptr or get invalid param"); return; } - auto objValue = CreateJsWindowPropertiesObject(env, weakWindow); + Rect drawableRect = g_emptyRect; + auto uicontent = weakWindow->GetUIContent(); + if (uicontent == nullptr) { + WLOGFW("uicontent is nullptr"); + } else { + uicontent->GetAppPaintSize(drawableRect); + } + auto objValue = CreateJsWindowPropertiesObject(env, weakWindow, drawableRect); if (objValue != nullptr) { task.Resolve(env, objValue); } else { @@ -1415,7 +1422,14 @@ napi_value JsWindow::OnGetWindowPropertiesSync(napi_env env, napi_callback_info WLOGFE("window is nullptr or get invalid param"); return NapiThrowError(env, WmErrorCode::WM_ERROR_STATE_ABNORMALLY); } - auto objValue = CreateJsWindowPropertiesObject(env, window); + Rect drawableRect = g_emptyRect; + auto uicontent = window->GetUIContent(); + if (uicontent == nullptr) { + WLOGFW("uicontent is nullptr"); + } else { + uicontent->GetAppPaintSize(drawableRect); + } + auto objValue = CreateJsWindowPropertiesObject(env, window, drawableRect); WLOGI("Window [%{public}u, %{public}s] get properties end", window->GetWindowId(), window->GetWindowName().c_str()); if (objValue != nullptr) { diff --git a/interfaces/kits/napi/window_runtime/window_napi/js_window_utils.cpp b/interfaces/kits/napi/window_runtime/window_napi/js_window_utils.cpp index 28c1cf1325..1d4bd7ea4e 100644 --- a/interfaces/kits/napi/window_runtime/window_napi/js_window_utils.cpp +++ b/interfaces/kits/napi/window_runtime/window_napi/js_window_utils.cpp @@ -419,7 +419,7 @@ napi_value GetRectAndConvertToJsValue(napi_env env, const Rect& rect) return objValue; } -napi_value CreateJsWindowPropertiesObject(napi_env env, sptr& window) +napi_value CreateJsWindowPropertiesObject(napi_env env, sptr& window, const Rect& drawableRect) { WLOGI("CreateJsWindowPropertiesObject"); napi_value objValue = nullptr; @@ -429,12 +429,19 @@ napi_value CreateJsWindowPropertiesObject(napi_env env, sptr& window) return nullptr; } - Rect rect = window->GetRect(); - napi_value rectObj = GetRectAndConvertToJsValue(env, rect); - if (rectObj == nullptr) { - WLOGFE("GetRect failed!"); + Rect windowRect = window->GetRect(); + napi_value windowRectObj = GetRectAndConvertToJsValue(env, windowRect); + if (windowRectObj == nullptr) { + WLOGFE("GetWindowRect failed!"); } - napi_set_named_property(env, objValue, "windowRect", rectObj); + napi_set_named_property(env, objValue, "windowRect", windowRectObj); + + napi_value drawableRectObj = GetRectAndConvertToJsValue(env, drawableRect); + if (drawableRectObj == nullptr) { + WLOGFE("GetDrawableRect failed!"); + } + napi_set_named_property(env, objValue, "drawableRect", drawableRectObj); + WindowType type = window->GetType(); if (NATIVE_JS_TO_WINDOW_TYPE_MAP.count(type) != 0) { napi_set_named_property(env, objValue, "type", CreateJsValue(env, NATIVE_JS_TO_WINDOW_TYPE_MAP.at(type))); diff --git a/interfaces/kits/napi/window_runtime/window_napi/js_window_utils.h b/interfaces/kits/napi/window_runtime/window_napi/js_window_utils.h index dfeeac17fa..8b5dce7016 100644 --- a/interfaces/kits/napi/window_runtime/window_napi/js_window_utils.h +++ b/interfaces/kits/napi/window_runtime/window_napi/js_window_utils.h @@ -173,7 +173,7 @@ struct SystemBarPropertyFlag { }; napi_value GetRectAndConvertToJsValue(napi_env env, const Rect& rect); - napi_value CreateJsWindowPropertiesObject(napi_env env, sptr& window); + napi_value CreateJsWindowPropertiesObject(napi_env env, sptr& window, const Rect& drawableRect); bool SetSystemBarPropertiesFromJs(napi_env env, napi_value jsObject, std::map& properties, std::map& propertyFlags, sptr& window); diff --git a/test/common/mock/mock_uicontent.h b/test/common/mock/mock_uicontent.h index c774ba8ff6..51e77a8614 100644 --- a/test/common/mock/mock_uicontent.h +++ b/test/common/mock/mock_uicontent.h @@ -87,6 +87,7 @@ public: MOCK_METHOD4( FocusMoveSearch, void(int32_t elementId, int32_t direction, int32_t baseParent, Accessibility::AccessibilityElementInfo &output)); + MOCK_METHOD1(GetAppPaintSize, void(OHOS::Rosen::Rect& drawableRect)); }; } // namespace Ace } // namespace OHOS