• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright (c) 2023 Huawei Device Co., Ltd.
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef FOUNDATION_ACE_ADAPTER_PREVIEW_ENTRANCE_ACE_VIEW_OHOS_H
18 #define FOUNDATION_ACE_ADAPTER_PREVIEW_ENTRANCE_ACE_VIEW_OHOS_H
19 
20 #include <memory>
21 
22 #include "adapter/preview/entrance/ace_resource_register.h"
23 #include "adapter/preview/external/multimodalinput/pointer_event.h"
24 #include "base/utils/noncopyable.h"
25 #include "core/common/ace_view.h"
26 #include "core/event/key_event_recognizer.h"
27 #include "core/common/flutter/flutter_thread_model.h"
28 
29 namespace OHOS::Ace::Platform {
30 using ReleaseCallback = std::function<void()>;
31 
32 class AceViewPreview : public AceView, public Referenced {
33 public:
34     AceViewPreview(int32_t instanceId, std::unique_ptr<FlutterThreadModel> threadModel);
35     ~AceViewPreview() override = default;
36     static AceViewPreview* CreateView(
37         int32_t instanceId, bool useCurrentEventRunner = false, bool usePlatformThread = false);
38 
Launch()39     void Launch() override {}
GetInstanceId()40     int32_t GetInstanceId() const override
41     {
42         return instanceId_;
43     }
44 
RegisterTouchEventCallback(TouchEventCallback && callback)45     void RegisterTouchEventCallback(TouchEventCallback&& callback) override
46     {
47         ACE_DCHECK(callback);
48         touchEventCallback_ = std::move(callback);
49     }
50 
RegisterKeyEventCallback(KeyEventCallback && callback)51     void RegisterKeyEventCallback(KeyEventCallback&& callback) override
52     {
53         ACE_DCHECK(callback);
54         keyEventCallback_ = std::move(callback);
55     }
56 
RegisterMouseEventCallback(MouseEventCallback && callback)57     void RegisterMouseEventCallback(MouseEventCallback&& callback) override
58     {
59         ACE_DCHECK(callback);
60         mouseEventCallback_ = std::move(callback);
61     }
62 
RegisterAxisEventCallback(AxisEventCallback && callback)63     void RegisterAxisEventCallback(AxisEventCallback&& callback) override
64     {
65         ACE_DCHECK(callback);
66         axisEventCallback_ = std::move(callback);
67     }
68 
RegisterRotationEventCallback(RotationEventCallBack && callback)69     void RegisterRotationEventCallback(RotationEventCallBack&& callback) override
70     {
71         ACE_DCHECK(callback);
72         rotationEventCallBack_ = std::move(callback);
73     }
74 
RegisterDragEventCallback(DragEventCallBack && callback)75     void RegisterDragEventCallback(DragEventCallBack&& callback) override {}
76 
RegisterCardViewPositionCallback(CardViewPositionCallBack && callback)77     void RegisterCardViewPositionCallback(CardViewPositionCallBack&& callback) override
78     {
79         ACE_DCHECK(callback);
80         cardViewPositionCallBack_ = std::move(callback);
81     }
82 
RegisterCardViewAccessibilityParamsCallback(CardViewAccessibilityParamsCallback && callback)83     void RegisterCardViewAccessibilityParamsCallback(CardViewAccessibilityParamsCallback&& callback) override
84     {
85         ACE_DCHECK(callback);
86         cardViewAccessibilityParamsCallback_ = std::move(callback);
87     }
88 
RegisterViewChangeCallback(ViewChangeCallback && callback)89     void RegisterViewChangeCallback(ViewChangeCallback&& callback) override
90     {
91         ACE_DCHECK(callback);
92         viewChangeCallback_ = std::move(callback);
93     }
94 
RegisterViewPositionChangeCallback(ViewPositionChangeCallback && callback)95     void RegisterViewPositionChangeCallback(ViewPositionChangeCallback&& callback) override {}
96 
RegisterDensityChangeCallback(DensityChangeCallback && callback)97     void RegisterDensityChangeCallback(DensityChangeCallback&& callback) override
98     {
99         ACE_DCHECK(callback);
100         densityChangeCallback_ = std::move(callback);
101     }
102 
RegisterSystemBarHeightChangeCallback(SystemBarHeightChangeCallback && callback)103     void RegisterSystemBarHeightChangeCallback(SystemBarHeightChangeCallback&& callback) override
104     {
105         ACE_DCHECK(callback);
106         systemBarHeightChangeCallback_ = std::move(callback);
107     }
108 
RegisterSurfaceDestroyCallback(SurfaceDestroyCallback && callback)109     void RegisterSurfaceDestroyCallback(SurfaceDestroyCallback&& callback) override
110     {
111         ACE_DCHECK(callback);
112         surfaceDestroyCallback_ = std::move(callback);
113     }
114 
RegisterIdleCallback(IdleCallback && callback)115     void RegisterIdleCallback(IdleCallback&& callback) override
116     {
117         ACE_DCHECK(callback);
118         idleCallback_ = std::move(callback);
119     }
120 
NotifyDensityChanged(double density)121     void NotifyDensityChanged(double density) const
122     {
123         CHECK_NULL_VOID(densityChangeCallback_);
124         densityChangeCallback_(density);
125     }
126 
NotifySystemBarHeightChanged(double statusBar,double navigationBar)127     void NotifySystemBarHeightChanged(double statusBar, double navigationBar) const
128     {
129         CHECK_NULL_VOID(systemBarHeightChangeCallback_);
130         systemBarHeightChangeCallback_(statusBar, navigationBar);
131     }
132 
NotifySurfaceDestroyed()133     void NotifySurfaceDestroyed() const
134     {
135         CHECK_NULL_VOID(surfaceDestroyCallback_);
136         surfaceDestroyCallback_();
137     }
138 
HandleKeyEvent(const KeyEvent & keyEvent)139     bool HandleKeyEvent(const KeyEvent& keyEvent) override
140     {
141         return keyEventCallback_ && keyEventCallback_(keyEvent);
142     }
143 
GetPlatformResRegister()144     const RefPtr<PlatformResRegister>& GetPlatformResRegister() const override
145     {
146         return resRegister_;
147     }
148 
Dump(const std::vector<std::string> & params)149     bool Dump(const std::vector<std::string>& params) override
150     {
151         return false;
152     }
153 
ProcessIdleEvent(int64_t deadline)154     void ProcessIdleEvent(int64_t deadline)
155     {
156         CHECK_NULL_VOID(idleCallback_);
157         idleCallback_(deadline);
158     }
159 
GetViewType()160     ViewType GetViewType() const override
161     {
162         return AceView::ViewType::SURFACE_VIEW;
163     }
164 
GetPlatformWindow()165     std::unique_ptr<PlatformWindow> GetPlatformWindow() override
166     {
167         return nullptr;
168     }
169 
GetNativeWindowById(uint64_t textureId)170     const void* GetNativeWindowById(uint64_t textureId) override
171     {
172         return nullptr;
173     }
174 
GetThreadModel()175     FlutterThreadModel* GetThreadModel() const
176     {
177         return threadModel_.get();
178     }
179 
180     void NotifySurfaceChanged(
181         int32_t width, int32_t height, WindowSizeChangeReason type = WindowSizeChangeReason::UNDEFINED,
182         const std::shared_ptr<Rosen::RSTransaction>& rsTransaction = nullptr);
183 
184     bool HandleMouseEvent(const MouseEvent& mouseEvent);
185     bool HandleAxisEvent(const AxisEvent& axisEvent);
186     bool HandleTouchEvent(const TouchEvent& touchEvent) override;
187     std::unique_ptr<DrawDelegate> GetDrawDelegate() override;
188 
189 private:
190     int32_t instanceId_ = 0;
191     RefPtr<PlatformResRegister> resRegister_ = Referenced::MakeRefPtr<AceResourceRegister>();
192 
193     TouchEventCallback touchEventCallback_;
194     MouseEventCallback mouseEventCallback_;
195     AxisEventCallback axisEventCallback_;
196     RotationEventCallBack rotationEventCallBack_;
197     CardViewPositionCallBack cardViewPositionCallBack_;
198     CardViewAccessibilityParamsCallback cardViewAccessibilityParamsCallback_;
199     ViewChangeCallback viewChangeCallback_;
200     DensityChangeCallback densityChangeCallback_;
201     SystemBarHeightChangeCallback systemBarHeightChangeCallback_;
202     SurfaceDestroyCallback surfaceDestroyCallback_;
203     IdleCallback idleCallback_;
204     KeyEventCallback keyEventCallback_;
205     KeyEventRecognizer keyEventRecognizer_;
206     std::unique_ptr<FlutterThreadModel> threadModel_;
207 
208     ACE_DISALLOW_COPY_AND_MOVE(AceViewPreview);
209 };
210 } // namespace OHOS::Ace::Platform
211 
212 #endif // FOUNDATION_ACE_ADAPTER_PREVIEW_ENTRANCE_ACE_VIEW_OHOS_H
213