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