From 2be495c505f8492f29f57a6b72ac6860f5ad3f44 Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Mon, 12 Jun 2023 06:33:55 +0000 Subject: [PATCH 1/8] update Signed-off-by: hellohyh001 Change-Id: Ibd8cfb1d304f91c13edbfb6c693861f91fa19227 --- window_scene/BUILD.gn | 1 + window_scene/intention_event/BUILD.gn | 47 ++++++ .../include/intention_event_manager.h | 59 ++++++++ .../src/intention_event_manager.cpp | 140 ++++++++++++++++++ wm/BUILD.gn | 14 +- wm/include/root_scene.h | 9 -- wm/src/root_scene.cpp | 61 +------- 7 files changed, 261 insertions(+), 70 deletions(-) create mode 100644 window_scene/intention_event/BUILD.gn create mode 100644 window_scene/intention_event/include/intention_event_manager.h create mode 100644 window_scene/intention_event/src/intention_event_manager.cpp diff --git a/window_scene/BUILD.gn b/window_scene/BUILD.gn index 59c2deb1b8..2efc183130 100644 --- a/window_scene/BUILD.gn +++ b/window_scene/BUILD.gn @@ -21,6 +21,7 @@ group("window_scene") { "session_manager:screen_session_manager", "session_manager:session_manager", "session_manager_service:session_manager_service", + "intention_event:libintention_event" ] } diff --git a/window_scene/intention_event/BUILD.gn b/window_scene/intention_event/BUILD.gn new file mode 100644 index 0000000000..a986810e08 --- /dev/null +++ b/window_scene/intention_event/BUILD.gn @@ -0,0 +1,47 @@ +# Copyright (c) 2023 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. + +import("//build/ohos.gni") + +ohos_shared_library("libintention_event") { + include_dirs = [ + "./include", + "//foundation/arkui/ace_engine/frameworks", + "//foundation/arkui/ace_engine/", + "../../wm/include", + "//foundation/graphic/graphic_2d/rosen/modules/render_service_client:librender_service_client" + ] + + sources = [ + "src/intention_event_manager.cpp", + ] + + deps = [ + #"../session_manager:scene_session_manager", + "../common:window_scene_common", + "../session:scene_session", + ] + + external_deps = [ + "ace_engine:ace_uicontent", + "c_utils:utils", + "eventhandler:libeventhandler", + "hilog_native:libhilog", + "hisysevent_native:libhisysevent", + "hitrace_native:hitrace_meter", + "input:libmmi-client", + "graphic_standard:window_animation", + ] + part_name = "window_manager" + subsystem_name = "window" +} \ No newline at end of file diff --git a/window_scene/intention_event/include/intention_event_manager.h b/window_scene/intention_event/include/intention_event_manager.h new file mode 100644 index 0000000000..8aab614e14 --- /dev/null +++ b/window_scene/intention_event/include/intention_event_manager.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2023 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. + */ + +#ifndef OHOS_ROSEN_WINDOW_SCENE_INPUT_MANAGER_H +#define OHOS_ROSEN_WINDOW_SCENE_INPUT_MANAGER_H + +#include "singleton.h" + +#include +#include "base/geometry/ng/point_t.h" +#include "base/geometry/ng/rect_t.h" +#include + +namespace OHOS::AppExecFwk { +class EventHandler; +} // namespace OHOS::AppExecFwk + +namespace OHOS::Rosen { +class IntentionEventManager { + DECLARE_DELAYED_SINGLETON(IntentionEventManager); +public: + int32_t EnableInputEventListener(Ace::UIContent* uiContent); + bool IsInWindowSceneRegin(const Ace::NG::RectF& windowSceneRect, + const Ace::NG::PointF& parentLocalPoint, int32_t souceType); + +private: + bool GreatOrEqual(double left, double right); + bool LessOrEqual(double left, double right); + std::shared_ptr eventHandler_; + +class InputEventListener : public MMI::IInputEventConsumer { +public: + explicit InputEventListener(Ace::UIContent* uiContent): uiContent_(uiContent) {} + virtual ~InputEventListener() = default; + void OnInputEvent(std::shared_ptr pointerEvent) const override; + void OnInputEvent(std::shared_ptr keyEvent) const override; + void OnInputEvent(std::shared_ptr axisEvent) const override; + +private: + Ace::UIContent* uiContent_ = nullptr; +}; + +#define IntentionManager DelayedSingleton::GetInstance() +}; // namespace +} // namespace OHOS::Rosen + +#endif // OHOS_ROSEN_WINDOW_SCENE_INPUT_MANAGER_H diff --git a/window_scene/intention_event/src/intention_event_manager.cpp b/window_scene/intention_event/src/intention_event_manager.cpp new file mode 100644 index 0000000000..d24cabb056 --- /dev/null +++ b/window_scene/intention_event/src/intention_event_manager.cpp @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2023 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 "intention_event_manager.h" + +#include + +#include "frameworks/core/event/ace_events.h" +#include "window_manager_hilog.h" +// #include "vsync_station.h" +// #include "session_manager/include/scene_session_manager.h" + +namespace OHOS { +namespace Rosen { +#define SCENE_SESSION_MANAGER SceneSessionManager::GetInstance() + +namespace { +constexpr HiviewDFX::HiLogLabel LABEL = { LOG_CORE, HILOG_DOMAIN_WINDOW, "IntentionEventManager" }; +constexpr double epsilon = -0.001f; +constexpr float MOUSE_RECT_HOT = 4; +constexpr float TOUCH_RECT_HOT = 20; +} // namespace + +IntentionEventManager::IntentionEventManager() {} +IntentionEventManager::~IntentionEventManager() {} + +int32_t IntentionEventManager::EnableInputEventListener(Ace::UIContent* uiContent) +{ + if (uiContent == nullptr) { + WLOGFE("uiContent is null"); + return -1; + } + auto listener = std::make_shared(uiContent); + auto mainEventRunner = AppExecFwk::EventRunner::GetMainEventRunner(); + if (mainEventRunner) { + WLOGFD("MainEventRunner is available"); + eventHandler_ = std::make_shared(mainEventRunner); + } else { + // WLOGFD("MainEventRunner is not available"); + // eventHandler_ = AppExecFwk::EventHandler::Current(); + // if (!eventHandler_) { + // eventHandler_ = + // std::make_shared(AppExecFwk::EventRunner::Create(INPUT_AND_VSYNC_THREAD)); + // } + // VsyncStation::GetInstance().SetIsMainHandlerAvailable(false); + // VsyncStation::GetInstance().SetVsyncEventHandler(eventHandler_); + } + MMI::InputManager::GetInstance()->SetWindowInputEventConsumer(listener, eventHandler_); + return ERR_OK; +} + +bool IntentionEventManager::IsInWindowSceneRegin(const Ace::NG::RectF& windowSceneRect, + const Ace::NG::PointF& parentLocalPoint, int32_t souceType) +{ + float hotOffset = (souceType == static_cast(Ace::SourceType::MOUSE)) + ? MOUSE_RECT_HOT : TOUCH_RECT_HOT; + + float x = windowSceneRect.GetX(); + float y = windowSceneRect.GetY(); + float width = windowSceneRect.Width(); + float height = windowSceneRect.Height(); + float hotX = 0; + float hotWidth = 0; + if (x > hotOffset || x == hotOffset) { + hotX = x - hotOffset; + hotWidth = width + hotOffset * 2; + } else { + hotX = x - hotOffset; + hotWidth = width + hotOffset + x; + } + + float hotY = 0; + float hotHeight = 0; + if (y > hotOffset || y == hotOffset) { + hotY = y - hotOffset; + hotHeight = height + hotOffset * 2; + } else { + hotY = y - hotOffset; + hotHeight = width + hotOffset + y; + } + return GreatOrEqual(parentLocalPoint.GetX(), hotX) && + LessOrEqual(parentLocalPoint.GetX(), hotX + hotWidth) && + GreatOrEqual(parentLocalPoint.GetY(), hotY) && + LessOrEqual(parentLocalPoint.GetY(), hotY + hotHeight); +} + +bool IntentionEventManager::LessOrEqual(double left, double right) +{ + constexpr double epsilon = 0.001f; + return (left - right) < epsilon; +} + +bool IntentionEventManager::GreatOrEqual(double left, double right) +{ + return (left - right) > epsilon; +} + +void IntentionEventManager::InputEventListener::OnInputEvent( + std::shared_ptr pointerEvent) const +{ + if (uiContent_ == nullptr) { + WLOGFE("uiContent_ is null"); + return; + } + uiContent_->ProcessPointerEvent(pointerEvent); +} + +void IntentionEventManager::InputEventListener::OnInputEvent( + std::shared_ptr keyEvent) const +{ + // uint64_t focusedSessionId = SceneSessionManager::GetInstance()->GetFocusedSessionId(); + // if (focusedSessionId == INVALID_SESSION_ID) { + // WLOGFE("focusedSessionId is invalid"); + // return; + // } + // auto focusedSceneSession = SceneSessionManager::GetInstance()->GetSceneSession(focusedSessionId); + // if (focusedSceneSession == nullptr) { + // WLOGFE("focusedSceneSession is null"); + // return; + // } + // focusedSceneSession->TransferKeyEvent(keyEvent); +} + +void IntentionEventManager::InputEventListener::OnInputEvent( + std::shared_ptr axisEvent) const +{ +} +} +} \ No newline at end of file diff --git a/wm/BUILD.gn b/wm/BUILD.gn index f6ac70c001..8fce1277a9 100644 --- a/wm/BUILD.gn +++ b/wm/BUILD.gn @@ -30,12 +30,16 @@ config("libwm_public_config") { "../interfaces/innerkits/wm", "../utils/include", "../window_scene", + "../window_scene/intention_event/include", ] } ## Build libwm_static.a ohos_static_library("libwm_static") { - include_dirs = [ "../utils/include" ] + include_dirs = [ + "../utils/include", + "//foundation/arkui/ace_engine/frameworks" + ] sources = [ "../wmserver/src/zidl/window_manager_proxy.cpp", @@ -137,7 +141,10 @@ ohos_static_library("libwm_static") { ## Build libwm.so ohos_shared_library("libwm") { - include_dirs = [ "../utils/include" ] + include_dirs = [ + "../utils/include", + "//foundation/arkui/ace_engine/frameworks" + ] sources = [ "../wmserver/src/zidl/window_manager_proxy.cpp", @@ -168,12 +175,13 @@ ohos_shared_library("libwm") { "../resources/config/build:coverage_flags", ] - public_configs = [ ":libwm_public_config" ] + public_configs = [":libwm_public_config",] deps = [ "${window_base_path}/window_scene/common:window_scene_common", "${window_base_path}/window_scene/session:scene_session", "${window_base_path}/window_scene/session_manager:session_manager", + "${window_base_path}/window_scene/intention_event:libintention_event", "../dm:libdm", "../utils:libwmutil", "//foundation/graphic/graphic_2d/rosen/modules/render_service_client:librender_service_client", diff --git a/wm/include/root_scene.h b/wm/include/root_scene.h index 4daf7404a7..cd37f0e31c 100644 --- a/wm/include/root_scene.h +++ b/wm/include/root_scene.h @@ -20,10 +20,6 @@ #include "window.h" -namespace OHOS::AppExecFwk { -class EventHandler; -} // namespace OHOS::AppExecFwk - namespace OHOS::Ace { class UIContent; } // namespace OHOS::Ace @@ -41,9 +37,6 @@ public: void RequestVsync(const std::shared_ptr& vsyncCallback) override; - void ConsumePointerEvent(const std::shared_ptr& inputEvent) override; - void ConsumeKeyEvent(std::shared_ptr& inputEvent) override; - void SetDisplayDensity(float density) { density_ = density; @@ -55,10 +48,8 @@ public: } private: - void RegisterInputEventListener(); std::unique_ptr uiContent_; - std::shared_ptr eventHandler_; std::recursive_mutex mutex_; diff --git a/wm/src/root_scene.cpp b/wm/src/root_scene.cpp index 056314080e..aa7f46747a 100644 --- a/wm/src/root_scene.cpp +++ b/wm/src/root_scene.cpp @@ -22,35 +22,13 @@ #include "vsync_station.h" #include "window_manager_hilog.h" +#include "intention_event_manager.h" namespace OHOS { namespace Rosen { namespace { constexpr HiviewDFX::HiLogLabel LABEL = { LOG_CORE, HILOG_DOMAIN_WINDOW, "RootScene" }; const std::string INPUT_AND_VSYNC_THREAD = "InputAndVsyncThread"; - -class InputEventListener : public MMI::IInputEventConsumer { -public: - explicit InputEventListener(RootScene* rootScene): rootScene_(rootScene) {} - virtual ~InputEventListener() = default; - - void OnInputEvent(std::shared_ptr pointerEvent) const override - { - rootScene_->ConsumePointerEvent(pointerEvent); - } - - void OnInputEvent(std::shared_ptr keyEvent) const override - { - rootScene_->ConsumeKeyEvent(keyEvent); - } - - void OnInputEvent(std::shared_ptr axisEvent) const override - { - } - -private: - RootScene* rootScene_; -}; } // namespace RootScene::RootScene() @@ -64,6 +42,7 @@ RootScene::~RootScene() void RootScene::LoadContent(const std::string& contentUrl, NativeEngine* engine, NativeValue* storage, AbilityRuntime::Context* context) { + WLOGFI("HYH_TEST LoadContent IN"); if (context == nullptr) { WLOGFE("context is nullptr!"); return; @@ -77,7 +56,7 @@ void RootScene::LoadContent(const std::string& contentUrl, NativeEngine* engine, uiContent_->Initialize(this, contentUrl, storage); uiContent_->Foreground(); - RegisterInputEventListener(); + IntentionManager->EnableInputEventListener(uiContent_.get()); } void RootScene::UpdateViewportConfig(const Rect& rect, WindowSizeChangeReason reason) @@ -94,40 +73,6 @@ void RootScene::UpdateViewportConfig(const Rect& rect, WindowSizeChangeReason re uiContent_->UpdateViewportConfig(config, reason); } -void RootScene::ConsumePointerEvent(const std::shared_ptr& inputEvent) -{ - if (uiContent_) { - uiContent_->ProcessPointerEvent(inputEvent); - } -} - -void RootScene::ConsumeKeyEvent(std::shared_ptr& inputEvent) -{ - if (uiContent_) { - uiContent_->ProcessKeyEvent(inputEvent); - } -} - -void RootScene::RegisterInputEventListener() -{ - auto listener = std::make_shared(this); - auto mainEventRunner = AppExecFwk::EventRunner::GetMainEventRunner(); - if (mainEventRunner) { - WLOGFD("MainEventRunner is available"); - eventHandler_ = std::make_shared(mainEventRunner); - } else { - WLOGFD("MainEventRunner is not available"); - eventHandler_ = AppExecFwk::EventHandler::Current(); - if (!eventHandler_) { - eventHandler_ = - std::make_shared(AppExecFwk::EventRunner::Create(INPUT_AND_VSYNC_THREAD)); - } - VsyncStation::GetInstance().SetIsMainHandlerAvailable(false); - VsyncStation::GetInstance().SetVsyncEventHandler(eventHandler_); - } - MMI::InputManager::GetInstance()->SetWindowInputEventConsumer(listener, eventHandler_); -} - void RootScene::RequestVsync(const std::shared_ptr& vsyncCallback) { std::lock_guard lock(mutex_); -- Gitee From 08bd474e16a2c6ffcbe50c4be72e4f2d6efaa48f Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Mon, 12 Jun 2023 08:20:40 +0000 Subject: [PATCH 2/8] update Signed-off-by: hellohyh001 Change-Id: Iba75792c2ae080d904417f9976c512245661ca0b --- window_scene/intention_event/BUILD.gn | 2 +- .../src/intention_event_manager.cpp | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/window_scene/intention_event/BUILD.gn b/window_scene/intention_event/BUILD.gn index a986810e08..80f1bbcda1 100644 --- a/window_scene/intention_event/BUILD.gn +++ b/window_scene/intention_event/BUILD.gn @@ -27,7 +27,7 @@ ohos_shared_library("libintention_event") { ] deps = [ - #"../session_manager:scene_session_manager", + "../session_manager:scene_session_manager", "../common:window_scene_common", "../session:scene_session", ] diff --git a/window_scene/intention_event/src/intention_event_manager.cpp b/window_scene/intention_event/src/intention_event_manager.cpp index d24cabb056..3e84c5b24e 100644 --- a/window_scene/intention_event/src/intention_event_manager.cpp +++ b/window_scene/intention_event/src/intention_event_manager.cpp @@ -19,7 +19,7 @@ #include "frameworks/core/event/ace_events.h" #include "window_manager_hilog.h" // #include "vsync_station.h" -// #include "session_manager/include/scene_session_manager.h" +#include "session_manager/include/scene_session_manager.h" namespace OHOS { namespace Rosen { @@ -119,17 +119,17 @@ void IntentionEventManager::InputEventListener::OnInputEvent( void IntentionEventManager::InputEventListener::OnInputEvent( std::shared_ptr keyEvent) const { - // uint64_t focusedSessionId = SceneSessionManager::GetInstance()->GetFocusedSessionId(); - // if (focusedSessionId == INVALID_SESSION_ID) { - // WLOGFE("focusedSessionId is invalid"); - // return; - // } - // auto focusedSceneSession = SceneSessionManager::GetInstance()->GetSceneSession(focusedSessionId); - // if (focusedSceneSession == nullptr) { - // WLOGFE("focusedSceneSession is null"); - // return; - // } - // focusedSceneSession->TransferKeyEvent(keyEvent); + uint64_t focusedSessionId = SceneSessionManager::GetInstance().GetFocusedSession(); + if (focusedSessionId == INVALID_SESSION_ID) { + WLOGFE("focusedSessionId is invalid"); + return; + } + auto focusedSceneSession = SceneSessionManager::GetInstance().GetSceneSession(focusedSessionId); + if (focusedSceneSession == nullptr) { + WLOGFE("focusedSceneSession is null"); + return; + } + focusedSceneSession->TransferKeyEvent(keyEvent); } void IntentionEventManager::InputEventListener::OnInputEvent( -- Gitee From ca9b8040dd3e19189194ab226a886c7a693c915f Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Tue, 13 Jun 2023 06:30:59 +0000 Subject: [PATCH 3/8] update Signed-off-by: hellohyh001 Change-Id: I6720169672fa9141c8eb15333fb94c474ac51494 --- window_scene/BUILD.gn | 3 +- window_scene/intention_event/BUILD.gn | 29 ++++++- .../include/intention_event_manager.h | 21 ++--- .../include/window_event_process.h | 39 +++++++++ .../src/intention_event_manager.cpp | 82 ++----------------- .../src/window_event_process.cpp | 78 ++++++++++++++++++ window_scene/session/host/src/session.cpp | 6 +- wm/BUILD.gn | 8 +- wm/include/root_scene.h | 6 +- wm/src/root_scene.cpp | 19 ++++- 10 files changed, 194 insertions(+), 97 deletions(-) create mode 100644 window_scene/intention_event/include/window_event_process.h create mode 100644 window_scene/intention_event/src/window_event_process.cpp diff --git a/window_scene/BUILD.gn b/window_scene/BUILD.gn index 2efc183130..dc1a553577 100644 --- a/window_scene/BUILD.gn +++ b/window_scene/BUILD.gn @@ -21,7 +21,8 @@ group("window_scene") { "session_manager:screen_session_manager", "session_manager:session_manager", "session_manager_service:session_manager_service", - "intention_event:libintention_event" + "intention_event:libintention_event", + "intention_event:libwindow_event_process" ] } diff --git a/window_scene/intention_event/BUILD.gn b/window_scene/intention_event/BUILD.gn index 80f1bbcda1..6eb435d866 100644 --- a/window_scene/intention_event/BUILD.gn +++ b/window_scene/intention_event/BUILD.gn @@ -12,14 +12,12 @@ # limitations under the License. import("//build/ohos.gni") +import("../../windowmanager_aafwk.gni") ohos_shared_library("libintention_event") { include_dirs = [ "./include", - "//foundation/arkui/ace_engine/frameworks", - "//foundation/arkui/ace_engine/", "../../wm/include", - "//foundation/graphic/graphic_2d/rosen/modules/render_service_client:librender_service_client" ] sources = [ @@ -30,6 +28,7 @@ ohos_shared_library("libintention_event") { "../session_manager:scene_session_manager", "../common:window_scene_common", "../session:scene_session", + "${window_base_path}/utils:libwmutil", ] external_deps = [ @@ -40,6 +39,30 @@ ohos_shared_library("libintention_event") { "hisysevent_native:libhisysevent", "hitrace_native:hitrace_meter", "input:libmmi-client", + ] + part_name = "window_manager" + subsystem_name = "window" +} + +ohos_shared_library("libwindow_event_process") { + include_dirs = [ + "./include", + "//foundation/arkui/ace_engine/frameworks", + "//foundation/arkui/ace_engine/", + "${window_base_path}/utils/include" + ] + + sources = [ + "src/window_event_process.cpp", + ] + + deps = [ "${window_base_path}/utils:libwmutil" ] + + external_deps = [ + "c_utils:utils", + "hilog_native:libhilog", + "hisysevent_native:libhisysevent", + "hitrace_native:hitrace_meter", "graphic_standard:window_animation", ] part_name = "window_manager" diff --git a/window_scene/intention_event/include/intention_event_manager.h b/window_scene/intention_event/include/intention_event_manager.h index 8aab614e14..b2b1cf254d 100644 --- a/window_scene/intention_event/include/intention_event_manager.h +++ b/window_scene/intention_event/include/intention_event_manager.h @@ -13,14 +13,12 @@ * limitations under the License. */ -#ifndef OHOS_ROSEN_WINDOW_SCENE_INPUT_MANAGER_H -#define OHOS_ROSEN_WINDOW_SCENE_INPUT_MANAGER_H +#ifndef OHOS_ROSEN_WINDOW_SCENE_INTENTION_EVENT_MANAGER_H +#define OHOS_ROSEN_WINDOW_SCENE_INTENTION_EVENT_MANAGER_H #include "singleton.h" #include -#include "base/geometry/ng/point_t.h" -#include "base/geometry/ng/rect_t.h" #include namespace OHOS::AppExecFwk { @@ -31,15 +29,11 @@ namespace OHOS::Rosen { class IntentionEventManager { DECLARE_DELAYED_SINGLETON(IntentionEventManager); public: - int32_t EnableInputEventListener(Ace::UIContent* uiContent); - bool IsInWindowSceneRegin(const Ace::NG::RectF& windowSceneRect, - const Ace::NG::PointF& parentLocalPoint, int32_t souceType); + DISALLOW_COPY_AND_MOVE(IntentionEventManager); + bool EnableInputEventListener(Ace::UIContent* uiContent, + std::shared_ptr); private: - bool GreatOrEqual(double left, double right); - bool LessOrEqual(double left, double right); - std::shared_ptr eventHandler_; - class InputEventListener : public MMI::IInputEventConsumer { public: explicit InputEventListener(Ace::UIContent* uiContent): uiContent_(uiContent) {} @@ -51,9 +45,8 @@ public: private: Ace::UIContent* uiContent_ = nullptr; }; +}; #define IntentionManager DelayedSingleton::GetInstance() -}; // namespace } // namespace OHOS::Rosen - -#endif // OHOS_ROSEN_WINDOW_SCENE_INPUT_MANAGER_H +#endif // OHOS_ROSEN_WINDOW_SCENE_INTENTION_EVENT_MANAGER_H diff --git a/window_scene/intention_event/include/window_event_process.h b/window_scene/intention_event/include/window_event_process.h new file mode 100644 index 0000000000..33232316d0 --- /dev/null +++ b/window_scene/intention_event/include/window_event_process.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2023 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. + */ + +#ifndef OHOS_ROSEN_WINDOW_SCENE_WINDOW_EVENT_PROCESS_H +#define OHOS_ROSEN_WINDOW_SCENE_WINDOW_EVENT_PROCESS_H + +#include "singleton.h" + +#include "base/geometry/ng/point_t.h" +#include "base/geometry/ng/rect_t.h" + +namespace OHOS::Rosen { +class WindowEventProcess { + DECLARE_DELAYED_SINGLETON(WindowEventProcess); +public: + DISALLOW_COPY_AND_MOVE(WindowEventProcess); + bool IsInWindowHotRect(const Ace::NG::RectF& windowSceneRect, + const Ace::NG::PointF& parentLocalPoint, int32_t souceType); + +private: + bool GreatOrEqual(double left, double right); + bool LessOrEqual(double left, double right); +}; + +#define WindowEventHandler DelayedSingleton::GetInstance() +} // namespace OHOS::Rosen +#endif // OHOS_ROSEN_WINDOW_SCENE_WINDOW_EVENT_PROCESS_H diff --git a/window_scene/intention_event/src/intention_event_manager.cpp b/window_scene/intention_event/src/intention_event_manager.cpp index 3e84c5b24e..af4bd3fae8 100644 --- a/window_scene/intention_event/src/intention_event_manager.cpp +++ b/window_scene/intention_event/src/intention_event_manager.cpp @@ -14,96 +14,32 @@ */ #include "intention_event_manager.h" -#include - -#include "frameworks/core/event/ace_events.h" #include "window_manager_hilog.h" -// #include "vsync_station.h" #include "session_manager/include/scene_session_manager.h" namespace OHOS { namespace Rosen { -#define SCENE_SESSION_MANAGER SceneSessionManager::GetInstance() - namespace { constexpr HiviewDFX::HiLogLabel LABEL = { LOG_CORE, HILOG_DOMAIN_WINDOW, "IntentionEventManager" }; -constexpr double epsilon = -0.001f; -constexpr float MOUSE_RECT_HOT = 4; -constexpr float TOUCH_RECT_HOT = 20; } // namespace IntentionEventManager::IntentionEventManager() {} IntentionEventManager::~IntentionEventManager() {} -int32_t IntentionEventManager::EnableInputEventListener(Ace::UIContent* uiContent) +bool IntentionEventManager::EnableInputEventListener(Ace::UIContent* uiContent, + std::shared_ptr eventHandler) { if (uiContent == nullptr) { WLOGFE("uiContent is null"); - return -1; + return false; } - auto listener = std::make_shared(uiContent); - auto mainEventRunner = AppExecFwk::EventRunner::GetMainEventRunner(); - if (mainEventRunner) { - WLOGFD("MainEventRunner is available"); - eventHandler_ = std::make_shared(mainEventRunner); - } else { - // WLOGFD("MainEventRunner is not available"); - // eventHandler_ = AppExecFwk::EventHandler::Current(); - // if (!eventHandler_) { - // eventHandler_ = - // std::make_shared(AppExecFwk::EventRunner::Create(INPUT_AND_VSYNC_THREAD)); - // } - // VsyncStation::GetInstance().SetIsMainHandlerAvailable(false); - // VsyncStation::GetInstance().SetVsyncEventHandler(eventHandler_); + if (eventHandler == nullptr) { + WLOGFE("eventHandler is null"); + return false; } - MMI::InputManager::GetInstance()->SetWindowInputEventConsumer(listener, eventHandler_); - return ERR_OK; -} - -bool IntentionEventManager::IsInWindowSceneRegin(const Ace::NG::RectF& windowSceneRect, - const Ace::NG::PointF& parentLocalPoint, int32_t souceType) -{ - float hotOffset = (souceType == static_cast(Ace::SourceType::MOUSE)) - ? MOUSE_RECT_HOT : TOUCH_RECT_HOT; - - float x = windowSceneRect.GetX(); - float y = windowSceneRect.GetY(); - float width = windowSceneRect.Width(); - float height = windowSceneRect.Height(); - float hotX = 0; - float hotWidth = 0; - if (x > hotOffset || x == hotOffset) { - hotX = x - hotOffset; - hotWidth = width + hotOffset * 2; - } else { - hotX = x - hotOffset; - hotWidth = width + hotOffset + x; - } - - float hotY = 0; - float hotHeight = 0; - if (y > hotOffset || y == hotOffset) { - hotY = y - hotOffset; - hotHeight = height + hotOffset * 2; - } else { - hotY = y - hotOffset; - hotHeight = width + hotOffset + y; - } - return GreatOrEqual(parentLocalPoint.GetX(), hotX) && - LessOrEqual(parentLocalPoint.GetX(), hotX + hotWidth) && - GreatOrEqual(parentLocalPoint.GetY(), hotY) && - LessOrEqual(parentLocalPoint.GetY(), hotY + hotHeight); -} - -bool IntentionEventManager::LessOrEqual(double left, double right) -{ - constexpr double epsilon = 0.001f; - return (left - right) < epsilon; -} - -bool IntentionEventManager::GreatOrEqual(double left, double right) -{ - return (left - right) > epsilon; + auto listener = std::make_shared(uiContent); + MMI::InputManager::GetInstance()->SetWindowInputEventConsumer(listener, eventHandler); + return true; } void IntentionEventManager::InputEventListener::OnInputEvent( diff --git a/window_scene/intention_event/src/window_event_process.cpp b/window_scene/intention_event/src/window_event_process.cpp new file mode 100644 index 0000000000..d55de71ccb --- /dev/null +++ b/window_scene/intention_event/src/window_event_process.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2023 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 "window_event_process.h" + +#include "frameworks/core/event/ace_events.h" +#include "window_manager_hilog.h" + +namespace OHOS { +namespace Rosen { +namespace { +// constexpr HiviewDFX::HiLogLabel LABEL = { LOG_CORE, HILOG_DOMAIN_WINDOW, "WindowEventProcess" }; +constexpr double epsilon = -0.001f; +constexpr float MOUSE_RECT_HOT = 4; +constexpr float TOUCH_RECT_HOT = 20; +} // namespace + +WindowEventProcess::WindowEventProcess() {} +WindowEventProcess::~WindowEventProcess() {} + +bool WindowEventProcess::IsInWindowHotRect(const Ace::NG::RectF& windowSceneRect, + const Ace::NG::PointF& parentLocalPoint, int32_t souceType) +{ + float hotOffset = (souceType == static_cast(Ace::SourceType::MOUSE)) + ? MOUSE_RECT_HOT : TOUCH_RECT_HOT; + + float x = windowSceneRect.GetX(); + float y = windowSceneRect.GetY(); + float width = windowSceneRect.Width(); + float height = windowSceneRect.Height(); + float hotX = 0; + float hotWidth = 0; + if (x > hotOffset || x == hotOffset) { + hotX = x - hotOffset; + hotWidth = width + hotOffset * 2; + } else { + hotX = x - hotOffset; + hotWidth = width + hotOffset + x; + } + + float hotY = 0; + float hotHeight = 0; + if (y > hotOffset || y == hotOffset) { + hotY = y - hotOffset; + hotHeight = height + hotOffset * 2; + } else { + hotY = y - hotOffset; + hotHeight = width + hotOffset + y; + } + return GreatOrEqual(parentLocalPoint.GetX(), hotX) && + LessOrEqual(parentLocalPoint.GetX(), hotX + hotWidth) && + GreatOrEqual(parentLocalPoint.GetY(), hotY) && + LessOrEqual(parentLocalPoint.GetY(), hotY + hotHeight); +} + +bool WindowEventProcess::LessOrEqual(double left, double right) +{ + constexpr double epsilon = 0.001f; + return (left - right) < epsilon; +} + +bool WindowEventProcess::GreatOrEqual(double left, double right) +{ + return (left - right) > epsilon; +} +} +} \ No newline at end of file diff --git a/window_scene/session/host/src/session.cpp b/window_scene/session/host/src/session.cpp index 7359b3be98..cf01c1b939 100644 --- a/window_scene/session/host/src/session.cpp +++ b/window_scene/session/host/src/session.cpp @@ -418,7 +418,11 @@ std::shared_ptr Session::GetSnapshot() const std::shared_ptr Session::Snapshot() { auto callback = std::make_shared(); - RSInterfaces::GetInstance().TakeSurfaceCapture(surfaceNode_, callback); + bool ret = RSInterfaces::GetInstance().TakeSurfaceCapture(surfaceNode_, callback); + if (!ret) { + WLOGFE("TakeSurfaceCapture failed"); + return nullptr; + } auto pixelMap = callback->GetResult(2000); // wait for <= 2000ms if (pixelMap != nullptr) { WLOGFD("Save pixelMap WxH = %{public}dx%{public}d", pixelMap->GetWidth(), pixelMap->GetHeight()); diff --git a/wm/BUILD.gn b/wm/BUILD.gn index 8fce1277a9..2dba859380 100644 --- a/wm/BUILD.gn +++ b/wm/BUILD.gn @@ -30,7 +30,6 @@ config("libwm_public_config") { "../interfaces/innerkits/wm", "../utils/include", "../window_scene", - "../window_scene/intention_event/include", ] } @@ -38,7 +37,8 @@ config("libwm_public_config") { ohos_static_library("libwm_static") { include_dirs = [ "../utils/include", - "//foundation/arkui/ace_engine/frameworks" + "//foundation/arkui/ace_engine/frameworks", + "${window_base_path}/window_scene/intention_event/include" ] sources = [ @@ -79,6 +79,7 @@ ohos_static_library("libwm_static") { "${window_base_path}/window_scene/common:window_scene_common", "${window_base_path}/window_scene/session:scene_session", "${window_base_path}/window_scene/session_manager:session_manager", + "${window_base_path}/window_scene/intention_event:libintention_event", ] external_deps = [ @@ -143,7 +144,8 @@ ohos_static_library("libwm_static") { ohos_shared_library("libwm") { include_dirs = [ "../utils/include", - "//foundation/arkui/ace_engine/frameworks" + "//foundation/arkui/ace_engine/frameworks", + "${window_base_path}/window_scene/intention_event/include" ] sources = [ diff --git a/wm/include/root_scene.h b/wm/include/root_scene.h index cd37f0e31c..5f8daf5625 100644 --- a/wm/include/root_scene.h +++ b/wm/include/root_scene.h @@ -20,6 +20,10 @@ #include "window.h" +namespace OHOS::AppExecFwk { +class EventHandler; +} // namespace OHOS::AppExecFwk + namespace OHOS::Ace { class UIContent; } // namespace OHOS::Ace @@ -52,7 +56,7 @@ private: std::unique_ptr uiContent_; std::recursive_mutex mutex_; - + std::shared_ptr eventHandler_; float density_ = 1.0f; }; } // namespace Rosen diff --git a/wm/src/root_scene.cpp b/wm/src/root_scene.cpp index aa7f46747a..dbc1c2ac04 100644 --- a/wm/src/root_scene.cpp +++ b/wm/src/root_scene.cpp @@ -56,7 +56,24 @@ void RootScene::LoadContent(const std::string& contentUrl, NativeEngine* engine, uiContent_->Initialize(this, contentUrl, storage); uiContent_->Foreground(); - IntentionManager->EnableInputEventListener(uiContent_.get()); + auto mainEventRunner = AppExecFwk::EventRunner::GetMainEventRunner(); + if (mainEventRunner) { + WLOGFD("MainEventRunner is available"); + eventHandler_ = std::make_shared(mainEventRunner); + } else { + WLOGFD("MainEventRunner is not available"); + eventHandler_ = AppExecFwk::EventHandler::Current(); + if (!eventHandler_) { + eventHandler_ = + std::make_shared(AppExecFwk::EventRunner::Create(INPUT_AND_VSYNC_THREAD)); + } + VsyncStation::GetInstance().SetIsMainHandlerAvailable(false); + VsyncStation::GetInstance().SetVsyncEventHandler(eventHandler_); + } + + if (!IntentionManager->EnableInputEventListener(uiContent_.get(), eventHandler_)) { + WLOGFE("EnableInputEventListener fail"); + } } void RootScene::UpdateViewportConfig(const Rect& rect, WindowSizeChangeReason reason) -- Gitee From 09e2857aa2e75cc33e885344135eecda9c754b5c Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Thu, 15 Jun 2023 12:42:23 +0000 Subject: [PATCH 4/8] update Signed-off-by: hellohyh001 Change-Id: I449146e6a79aa8da9e3133220977a15823cb140b --- window_scene/BUILD.gn | 4 ++-- .../src/window_event_process.cpp | 22 ++++--------------- wm/BUILD.gn | 10 ++++----- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/window_scene/BUILD.gn b/window_scene/BUILD.gn index dc1a553577..6a135eeac4 100644 --- a/window_scene/BUILD.gn +++ b/window_scene/BUILD.gn @@ -15,14 +15,14 @@ import("//build/ohos.gni") group("window_scene") { public_deps = [ + "intention_event:libintention_event", + "intention_event:libwindow_event_process", "session:scene_session", "session:screen_session", "session_manager:scene_session_manager", "session_manager:screen_session_manager", "session_manager:session_manager", "session_manager_service:session_manager_service", - "intention_event:libintention_event", - "intention_event:libwindow_event_process" ] } diff --git a/window_scene/intention_event/src/window_event_process.cpp b/window_scene/intention_event/src/window_event_process.cpp index d55de71ccb..4d41511ba3 100644 --- a/window_scene/intention_event/src/window_event_process.cpp +++ b/window_scene/intention_event/src/window_event_process.cpp @@ -39,25 +39,11 @@ bool WindowEventProcess::IsInWindowHotRect(const Ace::NG::RectF& windowSceneRect float y = windowSceneRect.GetY(); float width = windowSceneRect.Width(); float height = windowSceneRect.Height(); - float hotX = 0; - float hotWidth = 0; - if (x > hotOffset || x == hotOffset) { - hotX = x - hotOffset; - hotWidth = width + hotOffset * 2; - } else { - hotX = x - hotOffset; - hotWidth = width + hotOffset + x; - } + float hotX = x - hotOffset; + float hotWidth = width + hotOffset * 2; + float hotY = y - hotOffset; + float hotHeight = height + hotOffset * 2; - float hotY = 0; - float hotHeight = 0; - if (y > hotOffset || y == hotOffset) { - hotY = y - hotOffset; - hotHeight = height + hotOffset * 2; - } else { - hotY = y - hotOffset; - hotHeight = width + hotOffset + y; - } return GreatOrEqual(parentLocalPoint.GetX(), hotX) && LessOrEqual(parentLocalPoint.GetX(), hotX + hotWidth) && GreatOrEqual(parentLocalPoint.GetY(), hotY) && diff --git a/wm/BUILD.gn b/wm/BUILD.gn index 2dba859380..69c2297127 100644 --- a/wm/BUILD.gn +++ b/wm/BUILD.gn @@ -38,7 +38,7 @@ ohos_static_library("libwm_static") { include_dirs = [ "../utils/include", "//foundation/arkui/ace_engine/frameworks", - "${window_base_path}/window_scene/intention_event/include" + "${window_base_path}/window_scene/intention_event/include", ] sources = [ @@ -77,9 +77,9 @@ ohos_static_library("libwm_static") { "${window_base_path}/dm:libdm", "${window_base_path}/utils:libwmutil", "${window_base_path}/window_scene/common:window_scene_common", + "${window_base_path}/window_scene/intention_event:libintention_event", "${window_base_path}/window_scene/session:scene_session", "${window_base_path}/window_scene/session_manager:session_manager", - "${window_base_path}/window_scene/intention_event:libintention_event", ] external_deps = [ @@ -145,7 +145,7 @@ ohos_shared_library("libwm") { include_dirs = [ "../utils/include", "//foundation/arkui/ace_engine/frameworks", - "${window_base_path}/window_scene/intention_event/include" + "${window_base_path}/window_scene/intention_event/include", ] sources = [ @@ -177,13 +177,13 @@ ohos_shared_library("libwm") { "../resources/config/build:coverage_flags", ] - public_configs = [":libwm_public_config",] + public_configs = [ ":libwm_public_config" ] deps = [ "${window_base_path}/window_scene/common:window_scene_common", + "${window_base_path}/window_scene/intention_event:libintention_event", "${window_base_path}/window_scene/session:scene_session", "${window_base_path}/window_scene/session_manager:session_manager", - "${window_base_path}/window_scene/intention_event:libintention_event", "../dm:libdm", "../utils:libwmutil", "//foundation/graphic/graphic_2d/rosen/modules/render_service_client:librender_service_client", -- Gitee From 109b81051e829be2b6d790df824be89d6ccee01c Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Thu, 15 Jun 2023 13:40:46 +0000 Subject: [PATCH 5/8] update Signed-off-by: hellohyh001 Change-Id: I52bdb8c9609dffd0892081f3612a2227dde7c1cb --- window_scene/intention_event/BUILD.gn | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/window_scene/intention_event/BUILD.gn b/window_scene/intention_event/BUILD.gn index 6eb435d866..12fcf2d847 100644 --- a/window_scene/intention_event/BUILD.gn +++ b/window_scene/intention_event/BUILD.gn @@ -20,15 +20,13 @@ ohos_shared_library("libintention_event") { "../../wm/include", ] - sources = [ - "src/intention_event_manager.cpp", - ] + sources = [ "src/intention_event_manager.cpp" ] deps = [ - "../session_manager:scene_session_manager", + "${window_base_path}/utils:libwmutil", "../common:window_scene_common", "../session:scene_session", - "${window_base_path}/utils:libwmutil", + "../session_manager:scene_session_manager", ] external_deps = [ @@ -49,22 +47,20 @@ ohos_shared_library("libwindow_event_process") { "./include", "//foundation/arkui/ace_engine/frameworks", "//foundation/arkui/ace_engine/", - "${window_base_path}/utils/include" + "${window_base_path}/utils/include", ] - sources = [ - "src/window_event_process.cpp", - ] + sources = [ "src/window_event_process.cpp" ] deps = [ "${window_base_path}/utils:libwmutil" ] external_deps = [ "c_utils:utils", + "graphic_standard:window_animation", "hilog_native:libhilog", "hisysevent_native:libhisysevent", "hitrace_native:hitrace_meter", - "graphic_standard:window_animation", ] part_name = "window_manager" subsystem_name = "window" -} \ No newline at end of file +} -- Gitee From d6a44b5b1191c754f92021e388f2b76c8bc1a969 Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Fri, 16 Jun 2023 02:41:17 +0000 Subject: [PATCH 6/8] update Signed-off-by: hellohyh001 Change-Id: I83b1600bf944142167b0b7205280620b64bde21d --- window_scene/intention_event/BUILD.gn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/window_scene/intention_event/BUILD.gn b/window_scene/intention_event/BUILD.gn index 12fcf2d847..01a3bc40d5 100644 --- a/window_scene/intention_event/BUILD.gn +++ b/window_scene/intention_event/BUILD.gn @@ -45,8 +45,8 @@ ohos_shared_library("libintention_event") { ohos_shared_library("libwindow_event_process") { include_dirs = [ "./include", - "//foundation/arkui/ace_engine/frameworks", - "//foundation/arkui/ace_engine/", + "${arkui_base_path}/ace_engine/frameworks", + "${arkui_base_path}/ace_engine/", "${window_base_path}/utils/include", ] -- Gitee From 6168eabc4ef907d7f0293dc8b4d8caf2c4cd42cf Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Fri, 16 Jun 2023 03:15:08 +0000 Subject: [PATCH 7/8] update Signed-off-by: hellohyh001 Change-Id: I11861ddd0e83febdc7553fec3146d2f0de732713 --- window_scene/intention_event/BUILD.gn | 1 - windowmanager_aafwk.gni | 1 + wm/BUILD.gn | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/window_scene/intention_event/BUILD.gn b/window_scene/intention_event/BUILD.gn index 01a3bc40d5..4609fa2ced 100644 --- a/window_scene/intention_event/BUILD.gn +++ b/window_scene/intention_event/BUILD.gn @@ -46,7 +46,6 @@ ohos_shared_library("libwindow_event_process") { include_dirs = [ "./include", "${arkui_base_path}/ace_engine/frameworks", - "${arkui_base_path}/ace_engine/", "${window_base_path}/utils/include", ] diff --git a/windowmanager_aafwk.gni b/windowmanager_aafwk.gni index f5138eb180..7222c076e1 100644 --- a/windowmanager_aafwk.gni +++ b/windowmanager_aafwk.gni @@ -20,6 +20,7 @@ ability_runtime_napi_path = "${ability_runtime_path}/frameworks/js/napi" window_base_path = "//foundation/window/window_manager" graphic_base_path = "//foundation/graphic" screenlock_mgr_path = "//base/theme/screenlock_mgr" +arkui_base_path = "//foundation/arkui" declare_args() { efficiency_manager_enable = true diff --git a/wm/BUILD.gn b/wm/BUILD.gn index 69c2297127..74719732d4 100644 --- a/wm/BUILD.gn +++ b/wm/BUILD.gn @@ -37,7 +37,7 @@ config("libwm_public_config") { ohos_static_library("libwm_static") { include_dirs = [ "../utils/include", - "//foundation/arkui/ace_engine/frameworks", + "${arkui_base_path}/ace_engine/frameworks", "${window_base_path}/window_scene/intention_event/include", ] @@ -144,7 +144,7 @@ ohos_static_library("libwm_static") { ohos_shared_library("libwm") { include_dirs = [ "../utils/include", - "//foundation/arkui/ace_engine/frameworks", + "${arkui_base_path}/ace_engine/frameworks", "${window_base_path}/window_scene/intention_event/include", ] -- Gitee From 20d8e493df32b9955eb06c63596ba483dfa4ce4c Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Fri, 16 Jun 2023 04:03:34 +0000 Subject: [PATCH 8/8] update Signed-off-by: hellohyh001 Change-Id: I1957f78227d5dc121d5c51a038a9cf7734a535bd --- window_scene/intention_event/BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/window_scene/intention_event/BUILD.gn b/window_scene/intention_event/BUILD.gn index 4609fa2ced..2e5626c804 100644 --- a/window_scene/intention_event/BUILD.gn +++ b/window_scene/intention_event/BUILD.gn @@ -46,6 +46,7 @@ ohos_shared_library("libwindow_event_process") { include_dirs = [ "./include", "${arkui_base_path}/ace_engine/frameworks", + "${arkui_base_path}/ace_engine", "${window_base_path}/utils/include", ] -- Gitee