1 /*
2 * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "mock_pipeline_context.h"
17
18 #include "base/memory/ace_type.h"
19 #include "base/memory/referenced.h"
20 #include "base/mousestyle/mouse_style.h"
21 #include "base/utils/utils.h"
22 #include "core/accessibility/accessibility_manager.h"
23 #include "core/common/page_viewport_config.h"
24 #include "core/components/common/layout/constants.h"
25 #include "core/components_ng/base/frame_node.h"
26 #include "core/components_ng/pattern/root/root_pattern.h"
27 #include "core/components_ng/pattern/stage/stage_pattern.h"
28 #include "core/pipeline/pipeline_base.h"
29 #include "core/pipeline_ng/pipeline_context.h"
30 #include "test/mock/base/mock_task_executor.h"
31 #include "test/mock/core/common/mock_container.h"
32
33 #include "interfaces/inner_api/ace_kit/src/view/ui_context_impl.h"
34
35 namespace OHOS::Ace {
36
37 static bool g_setBoolStatus = false;
38 class MockAccessibilityManager : public AccessibilityManager {
39 public:
40 MOCK_METHOD(void, SendAccessibilityAsyncEvent, (const AccessibilityEvent& accessibilityEvent), (override));
41 MOCK_METHOD(void, SendWebAccessibilityAsyncEvent,
42 (const AccessibilityEvent& accessibilityEvent, const RefPtr<NG::WebPattern>& webPattern), (override));
43 MOCK_METHOD(void, UpdateVirtualNodeFocus, (), (override));
44 MOCK_METHOD(int64_t, GenerateNextAccessibilityId, (), (override));
45 MOCK_METHOD(RefPtr<AccessibilityNode>, CreateSpecializedNode,
46 (const std::string& tag, int32_t nodeId, int32_t parentNodeId), (override));
47 MOCK_METHOD(RefPtr<AccessibilityNode>, CreateAccessibilityNode,
48 (const std::string& tag, int32_t nodeId, int32_t parentNodeId, int32_t itemIndex), (override));
49 MOCK_METHOD(RefPtr<AccessibilityNode>, GetAccessibilityNodeById, (NodeId nodeId), (const, override));
50 MOCK_METHOD(std::string, GetInspectorNodeById, (NodeId nodeId), (const, override));
51 MOCK_METHOD(void, RemoveAccessibilityNodes, (RefPtr<AccessibilityNode> & node), (override));
52 MOCK_METHOD(void, RemoveAccessibilityNodeById, (NodeId nodeId), (override));
53 MOCK_METHOD(void, ClearPageAccessibilityNodes, (int32_t pageId), (override));
54 MOCK_METHOD(void, SetRootNodeId, (int32_t nodeId), (override));
55 MOCK_METHOD(void, TrySaveTargetAndIdNode,
56 (const std::string& id, const std::string& target, const RefPtr<AccessibilityNode>& node), (override));
57 MOCK_METHOD(void, HandleComponentPostBinding, (), (override));
58 MOCK_METHOD(void, OnDumpInfo, (const std::vector<std::string>& params), (override));
59 MOCK_METHOD(
60 void, OnDumpInfoNG, (const std::vector<std::string>& params, uint32_t windowId, bool hasJson), (override));
61 MOCK_METHOD(void, SetCardViewPosition, (int id, float offsetX, float offsetY), (override));
62 MOCK_METHOD(void, SetCardViewParams, (const std::string& key, bool focus), (override));
63 MOCK_METHOD(void, SetSupportAction, (uint32_t action, bool isEnable), (override));
64 MOCK_METHOD(void, ClearNodeRectInfo, (RefPtr<AccessibilityNode> & node, bool isPopDialog), (override));
65 MOCK_METHOD(void, AddComposedElement, (const std::string& key, const RefPtr<ComposedElement>& node), (override));
66 MOCK_METHOD(void, RemoveComposedElementById, (const std::string& key), (override));
67 MOCK_METHOD(WeakPtr<ComposedElement>, GetComposedElementFromPage, (NodeId nodeId), (override));
68 MOCK_METHOD(void, TriggerVisibleChangeEvent, (), (override));
69 MOCK_METHOD(void, AddVisibleChangeNode, (NodeId nodeId, double ratio, VisibleRatioCallback callback), (override));
70 MOCK_METHOD(void, RemoveVisibleChangeNode, (NodeId nodeId), (override));
71 MOCK_METHOD(bool, IsVisibleChangeNodeExists, (NodeId nodeId), (override));
72 MOCK_METHOD(void, UpdateEventTarget, (NodeId id, BaseEventInfo& info), (override));
73 MOCK_METHOD(void, SetWindowPos, (int32_t left, int32_t top, int32_t windowId), (override));
74 #ifdef WINDOW_SCENE_SUPPORTED
75 MOCK_METHOD(void, SearchElementInfoByAccessibilityIdNG,
76 (int64_t elementId, int32_t mode, std::list<Accessibility::AccessibilityElementInfo>& infos,
77 const RefPtr<PipelineBase>& context, int64_t uiExtensionOffset),
78 (override));
79 MOCK_METHOD(void, SearchElementInfosByTextNG,
80 (int64_t elementId, const std::string& text, std::list<Accessibility::AccessibilityElementInfo>& infos,
81 const RefPtr<PipelineBase>& context, const int64_t uiExtensionOffset),
82 (override));
83 MOCK_METHOD(void, FindFocusedElementInfoNG,
84 (int64_t elementId, int32_t focusType, Accessibility::AccessibilityElementInfo& info,
85 const RefPtr<PipelineBase>& context, const int64_t uiExtensionOffset),
86 (override));
87 MOCK_METHOD(void, FocusMoveSearchNG,
88 (int64_t elementId, int32_t direction, Accessibility::AccessibilityElementInfo& info,
89 const RefPtr<PipelineBase>& context, const int64_t uiExtensionOffset),
90 (override));
91 MOCK_METHOD(bool, ExecuteExtensionActionNG,
92 (int64_t elementId, const std::map<std::string, std::string>& actionArguments, int32_t action,
93 const RefPtr<PipelineBase>& context, int64_t uiExtensionOffset),
94 (override));
95 MOCK_METHOD(bool, TransferAccessibilityAsyncEvent,
96 (const Accessibility::AccessibilityEventInfo& eventInfo, int64_t uiExtensionOffset), (override));
97 MOCK_METHOD(void, SendExtensionAccessibilityEvent,
98 (const Accessibility::AccessibilityEventInfo& eventInfo, int64_t uiExtensionOffset), (override));
99 #endif
100 #ifdef WEB_SUPPORTED
101 MOCK_METHOD(bool, RegisterWebInteractionOperationAsChildTree,
102 (int64_t accessibilityId, const WeakPtr<NG::WebPattern>& webPattern), (override));
103 MOCK_METHOD(bool, DeregisterWebInteractionOperationAsChildTree,
104 (int32_t treeId, const WeakPtr<NG::WebPattern>& webPattern), (override));
105 #endif
RegisterAccessibilityChildTreeCallback(int64_t elementId,const std::shared_ptr<AccessibilityChildTreeCallback> & callback)106 void RegisterAccessibilityChildTreeCallback(
107 int64_t elementId, const std::shared_ptr<AccessibilityChildTreeCallback>& callback) override
108 {}
DeregisterAccessibilityChildTreeCallback(int64_t elementId)109 void DeregisterAccessibilityChildTreeCallback(int64_t elementId) override {}
RegisterInteractionOperationAsChildTree(uint32_t parentWindowId,int32_t parentTreeId,int64_t parentElementId)110 void RegisterInteractionOperationAsChildTree(
111 uint32_t parentWindowId, int32_t parentTreeId, int64_t parentElementId) override
112 {
113 Register(g_setBoolStatus);
114 }
SetAccessibilityGetParentRectHandler(std::function<void (int32_t &,int32_t &)> && callback)115 void SetAccessibilityGetParentRectHandler(std::function<void(int32_t&, int32_t&)>&& callback) override {}
SetAccessibilityGetParentRectHandler(std::function<void (AccessibilityParentRectInfo &)> && callback)116 void SetAccessibilityGetParentRectHandler(std::function<void(AccessibilityParentRectInfo&)>&& callback) override {}
117 MOCK_METHOD(void, DeregisterInteractionOperationAsChildTree, (), (override));
118 MOCK_METHOD(void, SendEventToAccessibilityWithNode,
119 (const AccessibilityEvent& accessibilityEvent, const RefPtr<AceType>& node,
120 const RefPtr<PipelineBase>& context),
121 (override));
122 MOCK_METHOD(void, RegisterAccessibilitySAObserverCallback,
123 (int64_t elementId, const std::shared_ptr<AccessibilitySAObserverCallback>& callback), (override));
124 MOCK_METHOD(void, DeregisterAccessibilitySAObserverCallback, (int64_t elementId), (override));
125 MOCK_METHOD(bool, RegisterInteractionOperationAsChildTree, (const Registration& registration), (override));
126 MOCK_METHOD(bool, DeregisterInteractionOperationAsChildTree, (uint32_t windowId, int32_t treeId), (override));
127 MOCK_METHOD(void, TransferThirdProviderHoverEvent,
128 (const WeakPtr<NG::FrameNode>& hostNode, const NG::PointF& point, SourceType source,
129 NG::AccessibilityHoverEventType eventType, TimeStamp time),
130 (override));
131 MOCK_METHOD(bool, OnDumpChildInfoForThird,
132 (int64_t hostElementId, const std::vector<std::string>& params, std::vector<std::string>& info), (override));
133 };
134 } // namespace OHOS::Ace
135
136 namespace OHOS::Ace::NG {
137 namespace {
138 constexpr double DISPLAY_WIDTH = 720;
139 constexpr double DISPLAY_HEIGHT = 1280;
140 static std::list<PipelineContext::PredictTask> predictTasks_;
141 static Rect windowRect_;
142 static bool g_isDragging = false;
143 static bool hasModalButtonsRect_;
144 static bool g_isContainerCustomTitleVisible = false;
145 static bool g_isContainerControlButtonVisible = false;
146 static RectF g_buttonRect = RectF(0.0f, 0.0f, 0.0f, 0.0f);
147 static int32_t g_containerModalTitleHeight = 0;
148 } // namespace
149
150 RefPtr<MockPipelineContext> MockPipelineContext::pipeline_;
151
152 // mock_pipeline_context =======================================================
SetUp()153 void MockPipelineContext::SetUp()
154 {
155 pipeline_ = AceType::MakeRefPtr<MockPipelineContext>();
156 pipeline_->eventManager_ = AceType::MakeRefPtr<EventManager>();
157 pipeline_->windowManager_ = AceType::MakeRefPtr<WindowManager>();
158 pipeline_->rootWidth_ = DISPLAY_WIDTH;
159 pipeline_->rootHeight_ = DISPLAY_HEIGHT;
160 pipeline_->taskExecutor_ = AceType::MakeRefPtr<MockTaskExecutor>();
161 pipeline_->SetupRootElement();
162 windowRect_ = { 0., 0., NG::DISPLAY_WIDTH, NG::DISPLAY_HEIGHT };
163 hasModalButtonsRect_ = true;
164 }
165
TearDown()166 void MockPipelineContext::TearDown()
167 {
168 if (pipeline_) {
169 pipeline_->Destroy();
170 pipeline_ = nullptr;
171 }
172 predictTasks_.clear();
173 }
174
GetBundleName()175 std::string PipelineContext::GetBundleName()
176 {
177 return "";
178 }
179
GetModuleName()180 std::string PipelineContext::GetModuleName()
181 {
182 return "";
183 }
184
GetCurrent()185 RefPtr<MockPipelineContext> MockPipelineContext::GetCurrent()
186 {
187 return pipeline_;
188 }
189
SetRootSize(double rootWidth,double rootHeight)190 void MockPipelineContext::SetRootSize(double rootWidth, double rootHeight)
191 {
192 rootWidth_ = rootWidth;
193 rootHeight_ = rootHeight;
194 }
195
SetInstanceId(int32_t instanceId)196 void MockPipelineContext::SetInstanceId(int32_t instanceId)
197 {
198 pipeline_->instanceId_ = instanceId;
199 }
200
SetContainerModalButtonsRect(bool hasModalButtonsRect)201 void MockPipelineContext::SetContainerModalButtonsRect(bool hasModalButtonsRect)
202 {
203 hasModalButtonsRect_ = hasModalButtonsRect;
204 }
205
SetCurrentWindowRect(Rect rect)206 void MockPipelineContext::SetCurrentWindowRect(Rect rect)
207 {
208 windowRect_ = rect;
209 }
210
SetContainerCustomTitleVisible(bool visible)211 void MockPipelineContext::SetContainerCustomTitleVisible(bool visible)
212 {
213 g_isContainerCustomTitleVisible = visible;
214 }
215
SetContainerControlButtonVisible(bool visible)216 void MockPipelineContext::SetContainerControlButtonVisible(bool visible)
217 {
218 g_isContainerControlButtonVisible = visible;
219 }
220
SetContainerModalButtonsRect(RectF buttons)221 void MockPipelineContext::SetContainerModalButtonsRect(RectF buttons)
222 {
223 g_buttonRect = buttons;
224 }
225
SetContainerModalTitleHeight(int32_t height)226 void MockPipelineContext::SetContainerModalTitleHeight(int32_t height)
227 {
228 g_containerModalTitleHeight = height;
229 }
230 // mock_pipeline_context =======================================================
231
232 // pipeline_context ============================================================
PipelineContext()233 PipelineContext::PipelineContext()
234 {
235 if (navigationMgr_) {
236 navigationMgr_->SetPipelineContext(WeakClaim(this));
237 }
238 if (forceSplitMgr_) {
239 forceSplitMgr_->SetPipelineContext(WeakClaim(this));
240 }
241 }
242
GetCurrentRootWidth()243 float PipelineContext::GetCurrentRootWidth()
244 {
245 return static_cast<float>(MockPipelineContext::GetCurrent()->rootWidth_);
246 }
247
RegisterTouchEventListener(const std::shared_ptr<ITouchEventCallback> & listener)248 void PipelineContext::RegisterTouchEventListener(const std::shared_ptr<ITouchEventCallback>& listener) {}
249
GetCurrentRootHeight()250 float PipelineContext::GetCurrentRootHeight()
251 {
252 return static_cast<float>(MockPipelineContext::GetCurrent()->rootHeight_);
253 }
254
GetNavigationController(const std::string & id)255 std::shared_ptr<NavigationController> PipelineContext::GetNavigationController(const std::string& id)
256 {
257 return nullptr;
258 }
259
AddOrReplaceNavigationNode(const std::string & id,const WeakPtr<FrameNode> & node)260 void PipelineContext::AddOrReplaceNavigationNode(const std::string& id, const WeakPtr<FrameNode>& node) {}
261
DeleteNavigationNode(const std::string & id)262 void PipelineContext::DeleteNavigationNode(const std::string& id) {}
263
SetHostParentOffsetToWindow(const Offset & offset)264 void PipelineContext::SetHostParentOffsetToWindow(const Offset& offset)
265 {
266 lastHostParentOffsetToWindow_ = offset;
267 }
268
GetCurrentContext()269 RefPtr<PipelineContext> PipelineContext::GetCurrentContext()
270 {
271 return MockPipelineContext::GetCurrent();
272 }
273
GetCurrentContextSafely()274 RefPtr<PipelineContext> PipelineContext::GetCurrentContextSafely()
275 {
276 return MockPipelineContext::GetCurrent();
277 }
278
GetCurrentContextSafelyWithCheck()279 RefPtr<PipelineContext> PipelineContext::GetCurrentContextSafelyWithCheck()
280 {
281 return MockPipelineContext::GetCurrent();
282 }
283
GetCurrentContextPtrSafely()284 PipelineContext* PipelineContext::GetCurrentContextPtrSafely()
285 {
286 auto context = MockPipelineContext::GetCurrent();
287 return AceType::RawPtr(context);
288 }
289
GetCurrentContextPtrSafelyWithCheck()290 PipelineContext* PipelineContext::GetCurrentContextPtrSafelyWithCheck()
291 {
292 auto context = MockPipelineContext::GetCurrent();
293 return AceType::RawPtr(context);
294 }
295
GetMainPipelineContext()296 RefPtr<PipelineContext> PipelineContext::GetMainPipelineContext()
297 {
298 return MockPipelineContext::GetCurrent();
299 }
300
GetContextByContainerId(int32_t)301 RefPtr<PipelineContext> PipelineContext::GetContextByContainerId(int32_t /* containerId */)
302 {
303 return MockPipelineContext::GetCurrent();
304 }
305
AddWindowFocusChangedCallback(int32_t nodeId)306 void PipelineContext::AddWindowFocusChangedCallback(int32_t nodeId) {}
307
RemoveWindowFocusChangedCallback(int32_t nodeId)308 void PipelineContext::RemoveWindowFocusChangedCallback(int32_t nodeId) {}
309
SetupRootElement()310 void PipelineContext::SetupRootElement()
311 {
312 rootNode_ = FrameNode::CreateFrameNodeWithTree(
313 V2::ROOT_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), MakeRefPtr<RootPattern>());
314 rootNode_->SetHostRootId(GetInstanceId());
315 rootNode_->SetHostPageId(-1);
316 rootNode_->SetActive(true);
317 CalcSize idealSize { CalcLength(rootWidth_), CalcLength(rootHeight_) };
318 MeasureProperty layoutConstraint;
319 layoutConstraint.selfIdealSize = idealSize;
320 layoutConstraint.maxSize = idealSize;
321 rootNode_->UpdateLayoutConstraint(layoutConstraint);
322 auto rootFocusHub = rootNode_->GetOrCreateFocusHub();
323 rootFocusHub->SetFocusType(FocusType::SCOPE);
324 rootFocusHub->SetFocusable(true);
325 rootNode_->AttachToMainTree(false, this);
326 auto stageNode = FrameNode::CreateFrameNode(
327 V2::STAGE_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), MakeRefPtr<StagePattern>());
328 rootNode_->AddChild(stageNode);
329 stageManager_ = MakeRefPtr<StageManager>(stageNode);
330 auto getPagePathCallback = [weakFrontend = weakFrontend_](const std::string& url) -> std::string {
331 auto frontend = weakFrontend.Upgrade();
332 CHECK_NULL_RETURN(frontend, "");
333 return frontend->GetPagePathByUrl(url);
334 };
335 stageManager_->SetGetPagePathCallback(std::move(getPagePathCallback));
336 overlayManager_ = MakeRefPtr<OverlayManager>(rootNode_);
337 fullScreenManager_ = MakeRefPtr<FullScreenManager>(rootNode_);
338 selectOverlayManager_ = MakeRefPtr<SelectOverlayManager>(rootNode_);
339 dragDropManager_ = MakeRefPtr<DragDropManager>();
340 focusManager_ = MakeRefPtr<FocusManager>(AceType::Claim(this));
341 sharedTransitionManager_ = MakeRefPtr<SharedOverlayManager>(rootNode_);
342 }
343
SendEventToAccessibilityWithNode(const AccessibilityEvent & accessibilityEvent,const RefPtr<FrameNode> & node)344 void PipelineContext::SendEventToAccessibilityWithNode(
345 const AccessibilityEvent& accessibilityEvent, const RefPtr<FrameNode>& node)
346 {}
347
OnTouchEvent(const TouchEvent & point,const RefPtr<FrameNode> & node,bool isSubPipe)348 void PipelineContext::OnTouchEvent(
349 const TouchEvent& point, const RefPtr<FrameNode>& node, bool isSubPipe)
350 {}
351
ReDispatch(KeyEvent & keyEvent)352 void PipelineContext::ReDispatch(KeyEvent& keyEvent) {}
353
OnMouseEvent(const MouseEvent & event,const RefPtr<FrameNode> & node)354 void PipelineContext::OnMouseEvent(const MouseEvent& event, const RefPtr<FrameNode>& node) {}
355
OnMouseMoveEventForAxisEvent(const MouseEvent & event,const RefPtr<NG::FrameNode> & node)356 void PipelineContext::OnMouseMoveEventForAxisEvent(const MouseEvent& event, const RefPtr<NG::FrameNode>& node) {};
357
OnAxisEvent(const AxisEvent & event,const RefPtr<FrameNode> & node)358 void PipelineContext::OnAxisEvent(const AxisEvent& event, const RefPtr<FrameNode>& node) {}
359
OnTouchEvent(const TouchEvent & point,bool isSubPipe)360 void PipelineContext::OnTouchEvent(const TouchEvent& point, bool isSubPipe) {}
361
OnAccessibilityHoverEvent(const TouchEvent & point,const RefPtr<NG::FrameNode> & node)362 void PipelineContext::OnAccessibilityHoverEvent(const TouchEvent& point, const RefPtr<NG::FrameNode>& node) {}
363
OnPenHoverEvent(const TouchEvent & point,const RefPtr<NG::FrameNode> & node)364 void PipelineContext::OnPenHoverEvent(const TouchEvent& point, const RefPtr<NG::FrameNode>& node) {}
365
HandlePenHoverOut(const TouchEvent & point)366 void PipelineContext::HandlePenHoverOut(const TouchEvent& point) {}
367
OnMouseEvent(const MouseEvent & event)368 void PipelineContext::OnMouseEvent(const MouseEvent& event) {}
369
FlushTouchEvents()370 void PipelineContext::FlushTouchEvents() {}
371
OnAxisEvent(const AxisEvent & event)372 void PipelineContext::OnAxisEvent(const AxisEvent& event) {}
373
OnDragEvent(const DragPointerEvent & pointerEvent,DragEventAction action,const RefPtr<NG::FrameNode> & node)374 void PipelineContext::OnDragEvent(
375 const DragPointerEvent& pointerEvent, DragEventAction action, const RefPtr<NG::FrameNode>& node)
376 {}
377
OnIdle(int64_t deadline)378 void PipelineContext::OnIdle(int64_t deadline)
379 {
380 const auto tasks(std::move(predictTasks_));
381 for (const auto& task : tasks) {
382 task(deadline, true);
383 }
384 }
385
Destroy()386 void PipelineContext::Destroy()
387 {
388 dragDropManager_.Reset();
389 rootNode_.Reset();
390 }
391
OnShow()392 void PipelineContext::OnShow() {}
393
OnHide()394 void PipelineContext::OnHide() {}
395
RemoveOnAreaChangeNode(int32_t nodeId)396 void PipelineContext::RemoveOnAreaChangeNode(int32_t nodeId) {}
397
AddWindowStateChangedCallback(int32_t nodeId)398 void PipelineContext::AddWindowStateChangedCallback(int32_t nodeId)
399 {
400 onWindowStateChangedCallbacks_.emplace(nodeId);
401 }
402
RemoveWindowStateChangedCallback(int32_t nodeId)403 void PipelineContext::RemoveWindowStateChangedCallback(int32_t nodeId)
404 {
405 onWindowStateChangedCallbacks_.erase(nodeId);
406 }
407
AddNodesToNotifyMemoryLevel(int32_t nodeId)408 void PipelineContext::AddNodesToNotifyMemoryLevel(int32_t nodeId) {}
409
RemoveNodesToNotifyMemoryLevel(int32_t nodeId)410 void PipelineContext::RemoveNodesToNotifyMemoryLevel(int32_t nodeId) {}
411
WindowFocus(bool isFocus)412 void PipelineContext::WindowFocus(bool isFocus)
413 {
414 onFocus_ = isFocus;
415 if (!isFocus) {
416 RootLostFocus(BlurReason::WINDOW_BLUR);
417 } else {
418 isWindowHasFocused_ = true;
419 }
420 GetOrCreateFocusManager()->WindowFocus(isFocus);
421 }
422
WindowActivate(bool isActive)423 void PipelineContext::WindowActivate(bool isActive) {}
424
AddWindowActivateChangedCallback(int32_t nodeId)425 void PipelineContext::AddWindowActivateChangedCallback(int32_t nodeId) {}
426
RemoveWindowActivateChangedCallback(int32_t nodeId)427 void PipelineContext::RemoveWindowActivateChangedCallback(int32_t nodeId) {}
428
FlushWindowActivateChangedCallback(bool isActivate)429 void PipelineContext::FlushWindowActivateChangedCallback(bool isActivate) {}
430
RootLostFocus(BlurReason reason) const431 void PipelineContext::RootLostFocus(BlurReason reason) const {}
432
ContainerModalUnFocus()433 void PipelineContext::ContainerModalUnFocus() {}
434
ShowContainerTitle(bool isShow,bool hasDeco,bool needUpdate)435 void PipelineContext::ShowContainerTitle(bool isShow, bool hasDeco, bool needUpdate) {}
436
UpdateTitleInTargetPos(bool isShow,int32_t height)437 void PipelineContext::UpdateTitleInTargetPos(bool isShow, int32_t height) {}
438
SetContainerWindow(bool isShow,RRect & rRect)439 void PipelineContext::SetContainerWindow(bool isShow, RRect& rRect) {}
440
SetAppBgColor(const Color & color)441 void PipelineContext::SetAppBgColor(const Color& color) {}
442
SetWindowContainerColor(const Color & activeColor,const Color & inactiveColor)443 void PipelineContext::SetWindowContainerColor(const Color& activeColor, const Color& inactiveColor) {};
444
ChangeDarkModeBrightness()445 void PipelineContext::ChangeDarkModeBrightness() {}
446
SetAppTitle(const std::string & title)447 void PipelineContext::SetAppTitle(const std::string& title) {}
448
SetAppIcon(const RefPtr<PixelMap> & icon)449 void PipelineContext::SetAppIcon(const RefPtr<PixelMap>& icon) {}
450
OnSurfaceDensityChanged(double density)451 void PipelineContext::OnSurfaceDensityChanged(double density) {}
452
OnTransformHintChanged(uint32_t transform)453 void PipelineContext::OnTransformHintChanged(uint32_t transform) {}
454
SetRootRect(double width,double height,double offset)455 void PipelineContext::SetRootRect(double width, double height, double offset) {}
456
FlushBuild()457 void PipelineContext::FlushBuild() {}
458
FlushBuildFinishCallbacks()459 void PipelineContext::FlushBuildFinishCallbacks()
460 {
461 decltype(buildFinishCallbacks_) buildFinishCallbacks(std::move(buildFinishCallbacks_));
462 for (const auto& func : buildFinishCallbacks) {
463 if (func) {
464 func();
465 }
466 }
467 }
468
NotifyMemoryLevel(int32_t level)469 void PipelineContext::NotifyMemoryLevel(int32_t level) {}
470
FlushMessages(std::function<void ()> callback)471 void PipelineContext::FlushMessages(std::function<void()> callback) {}
472
FlushModifier()473 void PipelineContext::FlushModifier() {}
474
FlushDirtyNodeUpdate()475 void PipelineContext::FlushDirtyNodeUpdate() {}
476
FlushUITasks(bool triggeredByImplicitAnimation)477 void PipelineContext::FlushUITasks(bool triggeredByImplicitAnimation)
478 {
479 if (!MockPipelineContext::GetCurrent()->UseFlushUITasks()) {
480 return;
481 }
482 decltype(dirtyPropertyNodes_) dirtyPropertyNodes(std::move(dirtyPropertyNodes_));
483 dirtyPropertyNodes_.clear();
484 for (const auto& dirtyNode : dirtyPropertyNodes) {
485 dirtyNode->ProcessPropertyDiff();
486 }
487 taskScheduler_->FlushTask();
488 taskScheduler_->FlushAfterRenderTask();
489 }
490
FlushAfterLayoutCallbackInImplicitAnimationTask()491 void PipelineContext::FlushAfterLayoutCallbackInImplicitAnimationTask() {}
492
DetachNode(RefPtr<UINode>)493 void PipelineContext::DetachNode(RefPtr<UINode>) {}
494
Finish(bool autoFinish) const495 void PipelineContext::Finish(bool autoFinish) const {}
496
FlushVsync(uint64_t nanoTimestamp,uint64_t frameCount)497 void PipelineContext::FlushVsync(uint64_t nanoTimestamp, uint64_t frameCount) {}
498
FlushPipelineWithoutAnimation()499 void PipelineContext::FlushPipelineWithoutAnimation() {}
500
FlushFocus()501 void PipelineContext::FlushFocus()
502 {
503 FlushRequestFocus();
504
505 auto focusNode = dirtyFocusNode_.Upgrade();
506 if (!focusNode || focusNode->GetFocusType() != FocusType::NODE) {
507 dirtyFocusNode_.Reset();
508 } else {
509 FlushFocusWithNode(focusNode, false);
510 return;
511 }
512 auto focusScope = dirtyFocusScope_.Upgrade();
513 if (!focusScope || focusScope->GetFocusType() != FocusType::SCOPE) {
514 dirtyFocusScope_.Reset();
515 } else {
516 FlushFocusWithNode(focusScope, true);
517 return;
518 }
519 GetOrCreateFocusManager()->WindowFocusMoveEnd();
520 }
521
FlushFocusWithNode(RefPtr<FrameNode> focusNode,bool isScope)522 void PipelineContext::FlushFocusWithNode(RefPtr<FrameNode> focusNode, bool isScope)
523 {
524 auto focusNodeHub = focusNode->GetFocusHub();
525 if (focusNodeHub) {
526 focusNodeHub->RequestFocusImmediately();
527 }
528 dirtyFocusNode_.Reset();
529 dirtyFocusScope_.Reset();
530 dirtyRequestFocusNode_.Reset();
531 GetOrCreateFocusManager()->WindowFocusMoveEnd();
532 }
533
FlushOnceVsyncTask()534 void PipelineContext::FlushOnceVsyncTask() {}
535
SetOnWindowFocused(const std::function<void ()> & callback)536 void PipelineContext::SetOnWindowFocused(const std::function<void()>& callback) {}
537
DispatchDisplaySync(uint64_t nanoTimestamp)538 void PipelineContext::DispatchDisplaySync(uint64_t nanoTimestamp) {}
539
FlushAnimation(uint64_t nanoTimestamp)540 void PipelineContext::FlushAnimation(uint64_t nanoTimestamp) {}
541
FlushRequestFocus()542 void PipelineContext::FlushRequestFocus()
543 {
544 auto requestFocusNode = dirtyRequestFocusNode_.Upgrade();
545 if (!requestFocusNode) {
546 dirtyFocusNode_.Reset();
547 dirtyFocusScope_.Reset();
548 dirtyRequestFocusNode_.Reset();
549 } else {
550 auto focusNodeHub = requestFocusNode->GetFocusHub();
551 if (focusNodeHub) {
552 focusNodeHub->RequestFocusImmediately();
553 }
554 dirtyFocusNode_.Reset();
555 dirtyFocusScope_.Reset();
556 dirtyRequestFocusNode_.Reset();
557 return;
558 }
559 }
560
CheckNeedUpdateBackgroundColor(Color & color)561 void PipelineContext::CheckNeedUpdateBackgroundColor(Color& color) {}
562
CheckNeedDisableUpdateBackgroundImage()563 bool PipelineContext::CheckNeedDisableUpdateBackgroundImage()
564 {
565 if (!isFormRender_) {
566 return false;
567 }
568 return true;
569 }
570
OnVirtualKeyboardHeightChange(float keyboardHeight,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,const float safeHeight,const bool supportAvoidance,bool forceChange)571 void PipelineContext::OnVirtualKeyboardHeightChange(float keyboardHeight,
572 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction, const float safeHeight, const bool supportAvoidance,
573 bool forceChange)
574 {}
575
OnVirtualKeyboardHeightChange(float keyboardHeight,double positionY,double height,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,bool forceChange)576 void PipelineContext::OnVirtualKeyboardHeightChange(float keyboardHeight, double positionY, double height,
577 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction, bool forceChange)
578 {}
579
AvoidanceLogic(float keyboardHeight,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,const float safeHeight,const bool supportAvoidance)580 void PipelineContext::AvoidanceLogic(float keyboardHeight, const std::shared_ptr<Rosen::RSTransaction>& rsTransaction,
581 const float safeHeight, const bool supportAvoidance)
582 {}
583
OriginalAvoidanceLogic(float keyboardHeight,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction)584 void PipelineContext::OriginalAvoidanceLogic(
585 float keyboardHeight, const std::shared_ptr<Rosen::RSTransaction>& rsTransaction)
586 {}
587
OnFoldStatusChange(FoldStatus foldStatus)588 void PipelineContext::OnFoldStatusChange(FoldStatus foldStatus) {}
589
OnRawKeyboardChangedCallback()590 void PipelineContext::OnRawKeyboardChangedCallback() {}
591
OnFoldDisplayModeChange(FoldDisplayMode foldDisplayMode)592 void PipelineContext::OnFoldDisplayModeChange(FoldDisplayMode foldDisplayMode) {}
593
OnSurfaceChanged(int32_t width,int32_t height,WindowSizeChangeReason type,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction)594 void PipelineContext::OnSurfaceChanged(int32_t width, int32_t height, WindowSizeChangeReason type,
595 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction)
596 {}
597
OnLayoutCompleted(const std::string & componentId)598 void PipelineContext::OnLayoutCompleted(const std::string& componentId) {}
599
CheckOverlayFocus()600 bool PipelineContext::CheckOverlayFocus()
601 {
602 return false;
603 }
604
OnDrawCompleted(const std::string & componentId)605 void PipelineContext::OnDrawCompleted(const std::string& componentId) {}
606
SetNeedRenderNode(const WeakPtr<FrameNode> & node)607 void PipelineContext::SetNeedRenderNode(const WeakPtr<FrameNode>& node) {}
608
SetNeedRenderForDrawChildrenNode(const WeakPtr<NG::UINode> & node)609 void PipelineContext::SetNeedRenderForDrawChildrenNode(const WeakPtr<NG::UINode>& node) {}
610
OnSurfacePositionChanged(int32_t posX,int32_t posY)611 void PipelineContext::OnSurfacePositionChanged(int32_t posX, int32_t posY) {}
612
FlushReload(const ConfigurationChange & configurationChange,bool fullUpdate)613 void PipelineContext::FlushReload(const ConfigurationChange& configurationChange, bool fullUpdate) {}
614
SetContainerButtonHide(bool hideSplit,bool hideMaximize,bool hideMinimize,bool hideClose)615 void PipelineContext::SetContainerButtonHide(bool hideSplit, bool hideMaximize, bool hideMinimize, bool hideClose) {}
616
AddAnimationClosure(std::function<void ()> && animation)617 void PipelineContext::AddAnimationClosure(std::function<void()>&& animation) {}
618
SetCloseButtonStatus(bool isEnabled)619 void PipelineContext::SetCloseButtonStatus(bool isEnabled) {}
620
GetSelectOverlayManager()621 const RefPtr<SelectOverlayManager>& PipelineContext::GetSelectOverlayManager()
622 {
623 return selectOverlayManager_;
624 }
625
GetDragDropManager()626 const RefPtr<DragDropManager>& PipelineContext::GetDragDropManager()
627 {
628 return dragDropManager_;
629 }
630
GetFocusManager() const631 const RefPtr<FocusManager>& PipelineContext::GetFocusManager() const
632 {
633 return focusManager_;
634 }
635
GetOrCreateFocusManager()636 const RefPtr<FocusManager>& PipelineContext::GetOrCreateFocusManager()
637 {
638 if (!focusManager_) {
639 focusManager_ = MakeRefPtr<FocusManager>(AceType::Claim(this));
640 }
641 return focusManager_;
642 }
643
GetStageManager()644 const RefPtr<StageManager>& PipelineContext::GetStageManager()
645 {
646 return stageManager_;
647 }
648
GetFullScreenManager()649 const RefPtr<FullScreenManager>& PipelineContext::GetFullScreenManager()
650 {
651 return fullScreenManager_;
652 }
653
GetOverlayManager()654 const RefPtr<OverlayManager>& PipelineContext::GetOverlayManager()
655 {
656 return overlayManager_;
657 }
658
AddScheduleTask(const RefPtr<ScheduleTask> & task)659 uint32_t PipelineContext::AddScheduleTask(const RefPtr<ScheduleTask>& task)
660 {
661 return 0;
662 }
663
RemoveScheduleTask(uint32_t id)664 void PipelineContext::RemoveScheduleTask(uint32_t id) {}
665
AddOnAreaChangeNode(int32_t nodeId)666 void PipelineContext::AddOnAreaChangeNode(int32_t nodeId) {}
667
OnNonPointerEvent(const NonPointerEvent & event)668 bool PipelineContext::OnNonPointerEvent(const NonPointerEvent& event)
669 {
670 return false;
671 }
672
RequestFocus(const std::string & targetNodeId,bool isSyncRequest)673 bool PipelineContext::RequestFocus(const std::string& targetNodeId, bool isSyncRequest)
674 {
675 return false;
676 }
677
OnDumpInfo(const std::vector<std::string> & params) const678 bool PipelineContext::OnDumpInfo(const std::vector<std::string>& params) const
679 {
680 return false;
681 }
682
OnBackPressed()683 bool PipelineContext::OnBackPressed()
684 {
685 auto deviceType = SystemProperties::GetDeviceType();
686 if ((deviceType == DeviceType::WEARABLE || deviceType == DeviceType::WATCH) && !enableSwipeBack_) {
687 return true;
688 }
689 return false;
690 }
691
AddDirtyFocus(const RefPtr<FrameNode> & node)692 void PipelineContext::AddDirtyFocus(const RefPtr<FrameNode>& node) {}
693
AddDirtyPropertyNode(const RefPtr<FrameNode> & dirty)694 void PipelineContext::AddDirtyPropertyNode(const RefPtr<FrameNode>& dirty)
695 {
696 dirtyPropertyNodes_.emplace(dirty);
697 }
698
AddDirtyRequestFocus(const RefPtr<FrameNode> & node)699 void PipelineContext::AddDirtyRequestFocus(const RefPtr<FrameNode>& node)
700 {
701 CHECK_NULL_VOID(node);
702 dirtyRequestFocusNode_ = WeakPtr<FrameNode>(node);
703 RequestFrame();
704 }
705
AddDirtyFreezeNode(FrameNode * node)706 void PipelineContext::AddDirtyFreezeNode(FrameNode* node) {}
707
AddDirtyLayoutNode(const RefPtr<FrameNode> & dirty)708 void PipelineContext::AddDirtyLayoutNode(const RefPtr<FrameNode>& dirty)
709 {
710 if (MockPipelineContext::GetCurrent()->UseFlushUITasks()) {
711 taskScheduler_->AddDirtyLayoutNode(dirty);
712 }
713 }
714
AddIgnoreLayoutSafeAreaBundle(IgnoreLayoutSafeAreaBundle && bundle)715 void PipelineContext::AddIgnoreLayoutSafeAreaBundle(IgnoreLayoutSafeAreaBundle&& bundle)
716 {
717 if (MockPipelineContext::GetCurrent()->UseFlushUITasks())
718 {
719 taskScheduler_->AddIgnoreLayoutSafeAreaBundle(std::move(bundle));
720 }
721 }
722
AddPendingDeleteCustomNode(const RefPtr<CustomNode> & node)723 void PipelineContext::AddPendingDeleteCustomNode(const RefPtr<CustomNode>& node) {}
724
AddLayoutNode(const RefPtr<FrameNode> & layoutNode)725 void PipelineContext::AddLayoutNode(const RefPtr<FrameNode>& layoutNode) {}
726
AddDirtyRenderNode(const RefPtr<FrameNode> & dirty)727 void PipelineContext::AddDirtyRenderNode(const RefPtr<FrameNode>& dirty)
728 {
729 if (MockPipelineContext::GetCurrent()->UseFlushUITasks()) {
730 taskScheduler_->AddDirtyRenderNode(dirty);
731 }
732 }
733
AddBuildFinishCallBack(std::function<void ()> && callback)734 void PipelineContext::AddBuildFinishCallBack(std::function<void()>&& callback)
735 {
736 buildFinishCallbacks_.emplace_back(std::move(callback));
737 }
738
AddPredictTask(PredictTask && task)739 void PipelineContext::AddPredictTask(PredictTask&& task)
740 {
741 predictTasks_.emplace_back(task);
742 }
743
AddAfterLayoutTask(std::function<void ()> && task,bool isFlushInImplicitAnimationTask)744 void PipelineContext::AddAfterLayoutTask(std::function<void()>&& task, bool isFlushInImplicitAnimationTask)
745 {
746 if (MockPipelineContext::GetCurrent()->UseFlushUITasks()) {
747 taskScheduler_->AddAfterLayoutTask(std::move(task), isFlushInImplicitAnimationTask);
748 } else if (task) {
749 task();
750 }
751 }
752
AddAfterModifierTask(std::function<void ()> && task)753 void PipelineContext::AddAfterModifierTask(std::function<void()>&& task)
754 {
755 if (MockPipelineContext::GetCurrent()->UseFlushUITasks()) {
756 taskScheduler_->AddAfterModifierTask(std::move(task));
757 } else if (task) {
758 task();
759 }
760 }
761
AddSyncGeometryNodeTask(std::function<void ()> && task)762 void PipelineContext::AddSyncGeometryNodeTask(std::function<void()>&& task)
763 {
764 if (task) {
765 task();
766 }
767 }
768
StopWindowAnimation()769 void PipelineContext::StopWindowAnimation() {}
770
FlushSyncGeometryNodeTasks()771 void PipelineContext::FlushSyncGeometryNodeTasks() {}
772
AddAfterRenderTask(std::function<void ()> && task)773 void PipelineContext::AddAfterRenderTask(std::function<void()>&& task)
774 {
775 if (MockPipelineContext::GetCurrent()->UseFlushUITasks()) {
776 taskScheduler_->AddAfterRenderTask(std::move(task));
777 } else if (task) {
778 task();
779 }
780 }
781
FlushPipelineImmediately()782 void PipelineContext::FlushPipelineImmediately() {}
783
RebuildFontNode()784 void PipelineContext::RebuildFontNode() {}
785
GetCurrentFrameInfo(uint64_t,uint64_t)786 FrameInfo* PipelineContext::GetCurrentFrameInfo(uint64_t /* recvTime */, uint64_t /* timeStamp */)
787 {
788 return nullptr;
789 }
790
DumpPipelineInfo() const791 void PipelineContext::DumpPipelineInfo() const {}
792
AddVisibleAreaChangeNode(int32_t nodeId)793 void PipelineContext::AddVisibleAreaChangeNode(int32_t nodeId) {}
794
AddVisibleAreaChangeNode(const RefPtr<FrameNode> & node,const std::vector<double> & ratio,const VisibleRatioCallback & callback,bool isUserCallback,bool isCalculateInnerClip)795 void PipelineContext::AddVisibleAreaChangeNode(const RefPtr<FrameNode>& node, const std::vector<double>& ratio,
796 const VisibleRatioCallback& callback, bool isUserCallback, bool isCalculateInnerClip)
797 {
798 CHECK_NULL_VOID(callback);
799 callback(false, 0.0);
800 callback(true, ratio[0]);
801 }
802
RemoveVisibleAreaChangeNode(int32_t nodeId)803 void PipelineContext::RemoveVisibleAreaChangeNode(int32_t nodeId) {}
804
HandleVisibleAreaChangeEvent(uint64_t nanoTimestamp)805 void PipelineContext::HandleVisibleAreaChangeEvent(uint64_t nanoTimestamp) {}
806
ChangeMouseStyle(int32_t nodeId,MouseFormat format,int32_t windowId,bool isBypass,MouseStyleChangeReason reason)807 bool PipelineContext::ChangeMouseStyle(int32_t nodeId, MouseFormat format, int32_t windowId,
808 bool isBypass, MouseStyleChangeReason reason)
809 {
810 return true;
811 }
812
RestoreNodeInfo(std::unique_ptr<JsonValue> nodeInfo)813 void PipelineContext::RestoreNodeInfo(std::unique_ptr<JsonValue> nodeInfo) {}
814
GetStoredNodeInfo()815 std::unique_ptr<JsonValue> PipelineContext::GetStoredNodeInfo()
816 {
817 return nullptr;
818 }
819
StoreNode(int32_t restoreId,const WeakPtr<FrameNode> & node)820 void PipelineContext::StoreNode(int32_t restoreId, const WeakPtr<FrameNode>& node) {}
821
GetRestoreInfo(int32_t restoreId,std::string & restoreInfo)822 bool PipelineContext::GetRestoreInfo(int32_t restoreId, std::string& restoreInfo)
823 {
824 return false;
825 }
826
AddDirtyCustomNode(const RefPtr<UINode> & dirtyNode)827 void PipelineContext::AddDirtyCustomNode(const RefPtr<UINode>& dirtyNode) {}
828
SetFlushTSUpdates(std::function<bool (int32_t)> && flushTSUpdates)829 void PipelineContext::SetFlushTSUpdates(std::function<bool(int32_t)>&& flushTSUpdates) {}
830
AddWindowSizeChangeCallback(int32_t nodeId)831 void PipelineContext::AddWindowSizeChangeCallback(int32_t nodeId) {}
832
RemoveWindowSizeChangeCallback(int32_t nodeId)833 void PipelineContext::RemoveWindowSizeChangeCallback(int32_t nodeId) {}
834
AddWindowSizeDragEndCallback(std::function<void ()> && callback)835 void PipelineContext::AddWindowSizeDragEndCallback(std::function<void()>&& callback)
836 {
837 onWindowSizeDragEndCallbacks_.emplace_back(std::move(callback));
838 }
839
SetIsWindowSizeDragging(bool isDragging)840 void PipelineContext::SetIsWindowSizeDragging(bool isDragging)
841 {
842 isWindowSizeDragging_ = isDragging;
843 if (!isDragging) {
844 decltype(onWindowSizeDragEndCallbacks_) dragEndCallbacks(std::move(onWindowSizeDragEndCallbacks_));
845 for (const auto& func : dragEndCallbacks) {
846 if (func) {
847 func();
848 }
849 }
850 }
851 }
852
AddNavigationNode(int32_t pageId,WeakPtr<UINode> navigationNode)853 void PipelineContext::AddNavigationNode(int32_t pageId, WeakPtr<UINode> navigationNode) {}
854
RemoveNavigationNode(int32_t pageId,int32_t nodeId)855 void PipelineContext::RemoveNavigationNode(int32_t pageId, int32_t nodeId) {}
856
FirePageChanged(int32_t pageId,bool isOnShow)857 void PipelineContext::FirePageChanged(int32_t pageId, bool isOnShow) {}
858
UpdateSystemSafeArea(const SafeAreaInsets & systemSafeArea,bool checkSceneBoardWindow)859 void PipelineContext::UpdateSystemSafeArea(const SafeAreaInsets& systemSafeArea, bool checkSceneBoardWindow)
860 {
861 if (checkSceneBoardWindow) {
862 safeAreaManager_->UpdateScbSystemSafeArea(systemSafeArea);
863 return;
864 }
865 safeAreaManager_->UpdateSystemSafeArea(systemSafeArea);
866 }
867
UpdateCutoutSafeArea(const SafeAreaInsets & cutoutSafeArea,bool checkSceneBoardWindow)868 void PipelineContext::UpdateCutoutSafeArea(const SafeAreaInsets& cutoutSafeArea, bool checkSceneBoardWindow)
869 {
870 if (checkSceneBoardWindow) {
871 safeAreaManager_->UpdateScbCutoutSafeArea(cutoutSafeArea);
872 return;
873 }
874 safeAreaManager_->UpdateCutoutSafeArea(cutoutSafeArea);
875 }
876
UpdateNavSafeArea(const SafeAreaInsets & navSafeArea,bool checkSceneBoardWindow)877 void PipelineContext::UpdateNavSafeArea(const SafeAreaInsets& navSafeArea, bool checkSceneBoardWindow)
878 {
879 if (checkSceneBoardWindow) {
880 safeAreaManager_->UpdateScbNavSafeArea(navSafeArea);
881 return;
882 }
883 safeAreaManager_->UpdateNavSafeArea(navSafeArea);
884 }
885
UpdateSystemSafeAreaWithoutAnimation(const SafeAreaInsets & systemSafeArea,bool checkSceneBoardWindow)886 void PipelineContext::UpdateSystemSafeAreaWithoutAnimation(
887 const SafeAreaInsets& systemSafeArea, bool checkSceneBoardWindow)
888 {
889 if (checkSceneBoardWindow) {
890 safeAreaManager_->UpdateScbSystemSafeArea(systemSafeArea);
891 return;
892 }
893 safeAreaManager_->UpdateSystemSafeArea(systemSafeArea);
894 }
895
UpdateCutoutSafeAreaWithoutAnimation(const SafeAreaInsets & cutoutSafeArea,bool checkSceneBoardWindow)896 void PipelineContext::UpdateCutoutSafeAreaWithoutAnimation(
897 const SafeAreaInsets& cutoutSafeArea, bool checkSceneBoardWindow)
898 {
899 if (checkSceneBoardWindow) {
900 safeAreaManager_->UpdateScbCutoutSafeArea(cutoutSafeArea);
901 return;
902 }
903 safeAreaManager_->UpdateCutoutSafeArea(cutoutSafeArea);
904 }
905
UpdateNavSafeAreaWithoutAnimation(const SafeAreaInsets & navSafeArea,bool checkSceneBoardWindow)906 void PipelineContext::UpdateNavSafeAreaWithoutAnimation(
907 const SafeAreaInsets& navSafeArea, bool checkSceneBoardWindow)
908 {
909 if (checkSceneBoardWindow) {
910 safeAreaManager_->UpdateScbNavSafeArea(navSafeArea);
911 return;
912 }
913 safeAreaManager_->UpdateNavSafeArea(navSafeArea);
914 }
915
GetEnableKeyBoardAvoidMode()916 KeyBoardAvoidMode PipelineContext::GetEnableKeyBoardAvoidMode()
917 {
918 return KeyBoardAvoidMode::OFFSET;
919 }
920
SetEnableKeyBoardAvoidMode(KeyBoardAvoidMode value)921 void PipelineContext::SetEnableKeyBoardAvoidMode(KeyBoardAvoidMode value) {};
922
UsingCaretAvoidMode()923 bool PipelineContext::UsingCaretAvoidMode()
924 {
925 CHECK_NULL_RETURN(safeAreaManager_, false);
926 return safeAreaManager_->GetKeyBoardAvoidMode() == KeyBoardAvoidMode::OFFSET_WITH_CARET ||
927 safeAreaManager_->GetKeyBoardAvoidMode() == KeyBoardAvoidMode::RESIZE_WITH_CARET;
928 }
929
IsEnableKeyBoardAvoidMode()930 bool PipelineContext::IsEnableKeyBoardAvoidMode()
931 {
932 return false;
933 }
934
SetIgnoreViewSafeArea(bool value)935 void PipelineContext::SetIgnoreViewSafeArea(bool value) {};
SetIsLayoutFullScreen(bool value)936 void PipelineContext::SetIsLayoutFullScreen(bool value) {};
SetIsNeedAvoidWindow(bool value)937 void PipelineContext::SetIsNeedAvoidWindow(bool value) {};
938
GetSafeArea() const939 SafeAreaInsets PipelineContext::GetSafeArea() const
940 {
941 // top inset = 1
942 return SafeAreaInsets({}, { 0, 1 }, {}, {});
943 }
944
GetSafeAreaWithoutProcess() const945 SafeAreaInsets PipelineContext::GetSafeAreaWithoutProcess() const
946 {
947 return SafeAreaInsets({}, { 0, 1 }, {}, {});
948 }
949
GetPageAvoidOffset()950 float PipelineContext::GetPageAvoidOffset()
951 {
952 return 0.0f;
953 }
954
CheckNeedAvoidInSubWindow()955 bool PipelineContext::CheckNeedAvoidInSubWindow()
956 {
957 return false;
958 }
959
GetResponseRegion(const RefPtr<NG::FrameNode> & rootNode)960 std::string PipelineContext::GetResponseRegion(const RefPtr<NG::FrameNode>& rootNode)
961 {
962 return "";
963 }
964
NotifyResponseRegionChanged(const RefPtr<NG::FrameNode> & rootNode)965 void PipelineContext::NotifyResponseRegionChanged(const RefPtr<NG::FrameNode>& rootNode) {};
966
DisableNotifyResponseRegionChanged()967 void PipelineContext::DisableNotifyResponseRegionChanged() {};
968
AddFontNodeNG(const WeakPtr<UINode> & node)969 void PipelineContext::AddFontNodeNG(const WeakPtr<UINode>& node) {}
970
RemoveFontNodeNG(const WeakPtr<UINode> & node)971 void PipelineContext::RemoveFontNodeNG(const WeakPtr<UINode>& node) {}
972
SetWindowSceneConsumed(bool isConsumed)973 void PipelineContext::SetWindowSceneConsumed(bool isConsumed) {}
974
AddIsFocusActiveUpdateEvent(const RefPtr<FrameNode> & node,const std::function<void (bool)> & eventCallback)975 void PipelineContext::AddIsFocusActiveUpdateEvent(
976 const RefPtr<FrameNode>& node, const std::function<void(bool)>& eventCallback)
977 {}
978
RemoveIsFocusActiveUpdateEvent(const RefPtr<FrameNode> & node)979 void PipelineContext::RemoveIsFocusActiveUpdateEvent(const RefPtr<FrameNode>& node) {}
980
HasDifferentDirectionGesture() const981 bool PipelineContext::HasDifferentDirectionGesture() const
982 {
983 return false;
984 }
985
SetJSViewActive(bool active,WeakPtr<CustomNode> custom)986 void PipelineContext::SetJSViewActive(bool active, WeakPtr<CustomNode> custom) {}
987
FindNavigationNodeToHandleBack(const RefPtr<UINode> & node,bool & isEntry)988 RefPtr<FrameNode> PipelineContext::FindNavigationNodeToHandleBack(const RefPtr<UINode>& node, bool& isEntry)
989 {
990 return nullptr;
991 }
992
SetIsFocusActive(bool isFocusActive,FocusActiveReason reason,bool autoFocusInactive)993 bool PipelineContext::SetIsFocusActive(bool isFocusActive, FocusActiveReason reason, bool autoFocusInactive)
994 {
995 return false;
996 }
997
NeedSoftKeyboard()998 bool PipelineContext::NeedSoftKeyboard()
999 {
1000 return false;
1001 }
1002
SetCursor(int32_t cursorValue)1003 void PipelineContext::SetCursor(int32_t cursorValue) {}
1004
RestoreDefault(int32_t windowId,MouseStyleChangeReason reason)1005 void PipelineContext::RestoreDefault(int32_t windowId, MouseStyleChangeReason reason) {}
1006
HandleSubwindow(bool isShow)1007 void PipelineContext::HandleSubwindow(bool isShow) {}
1008
GetCurrentExtraInfo()1009 std::string PipelineContext::GetCurrentExtraInfo()
1010 {
1011 return std::string();
1012 }
1013
CloseFrontendAnimation()1014 void PipelineContext::CloseFrontendAnimation() {}
1015
OpenFrontendAnimation(const AnimationOption & option,const RefPtr<Curve> & curve,const std::function<void ()> & finishCallback)1016 void PipelineContext::OpenFrontendAnimation(
1017 const AnimationOption& option, const RefPtr<Curve>& curve, const std::function<void()>& finishCallback)
1018 {}
1019
IsDragging() const1020 bool PipelineContext::IsDragging() const
1021 {
1022 return g_isDragging;
1023 }
1024
SetIsDragging(bool isDragging)1025 void PipelineContext::SetIsDragging(bool isDragging)
1026 {
1027 g_isDragging = isDragging;
1028 }
1029
ResetDragging()1030 void PipelineContext::ResetDragging() {}
1031
UpdateOriginAvoidArea(const Rosen::AvoidArea & avoidArea,uint32_t type)1032 void PipelineContext::UpdateOriginAvoidArea(const Rosen::AvoidArea& avoidArea, uint32_t type) {}
1033
CheckAndUpdateKeyboardInset(float keyboardHeight)1034 void PipelineContext::CheckAndUpdateKeyboardInset(float keyboardHeight) {}
1035
PrintVsyncInfoIfNeed() const1036 bool PipelineContext::PrintVsyncInfoIfNeed() const
1037 {
1038 return false;
1039 }
1040
GetSerializedGesture() const1041 const SerializedGesture& PipelineContext::GetSerializedGesture() const
1042 {
1043 return serializedGesture_;
1044 }
1045
FlushFocusView()1046 void PipelineContext::FlushFocusView()
1047 {
1048 CHECK_NULL_VOID(focusManager_);
1049 auto lastFocusView = (focusManager_->GetLastFocusView()).Upgrade();
1050 CHECK_NULL_VOID(lastFocusView);
1051 auto lastFocusViewHub = lastFocusView->GetFocusHub();
1052 CHECK_NULL_VOID(lastFocusViewHub);
1053 if (lastFocusView && (!lastFocusViewHub->IsCurrentFocus() || !lastFocusView->GetIsViewHasFocused()) &&
1054 lastFocusViewHub->IsFocusableNode()) {
1055 lastFocusView->RequestDefaultFocus();
1056 }
1057 }
1058
SetOverlayNodePositions(std::vector<Ace::RectF> rects)1059 void PipelineContext::SetOverlayNodePositions(std::vector<Ace::RectF> rects) {}
1060
GetOverlayNodePositions()1061 std::vector<Ace::RectF> PipelineContext::GetOverlayNodePositions()
1062 {
1063 return {};
1064 }
1065
RegisterOverlayNodePositionsUpdateCallback(const std::function<void (std::vector<Ace::RectF>)> && callback)1066 void PipelineContext::RegisterOverlayNodePositionsUpdateCallback(
1067 const std::function<void(std::vector<Ace::RectF>)>&& callback)
1068 {}
1069
TriggerOverlayNodePositionsUpdateCallback(std::vector<Ace::RectF> rects)1070 void PipelineContext::TriggerOverlayNodePositionsUpdateCallback(std::vector<Ace::RectF> rects) {}
1071
IsContainerModalVisible() const1072 bool PipelineContext::IsContainerModalVisible() const
1073 {
1074 return false;
1075 }
1076
CheckAndLogLastReceivedTouchEventInfo(int32_t eventId,TouchType type)1077 void PipelineContext::CheckAndLogLastReceivedTouchEventInfo(int32_t eventId, TouchType type) {}
1078
CheckAndLogLastConsumedTouchEventInfo(int32_t eventId,TouchType type)1079 void PipelineContext::CheckAndLogLastConsumedTouchEventInfo(int32_t eventId, TouchType type) {}
1080
CheckAndLogLastReceivedMouseEventInfo(int32_t eventId,MouseAction action)1081 void PipelineContext::CheckAndLogLastReceivedMouseEventInfo(int32_t eventId, MouseAction action) {}
1082
CheckAndLogLastConsumedMouseEventInfo(int32_t eventId,MouseAction action)1083 void PipelineContext::CheckAndLogLastConsumedMouseEventInfo(int32_t eventId, MouseAction action) {}
1084
CheckAndLogLastReceivedAxisEventInfo(int32_t eventId,AxisAction action)1085 void PipelineContext::CheckAndLogLastReceivedAxisEventInfo(int32_t eventId, AxisAction action) {}
1086
CheckAndLogLastConsumedAxisEventInfo(int32_t eventId,AxisAction action)1087 void PipelineContext::CheckAndLogLastConsumedAxisEventInfo(int32_t eventId, AxisAction action) {}
1088
PreLayout(uint64_t nanoTimestamp,uint32_t frameCount)1089 void PipelineContext::PreLayout(uint64_t nanoTimestamp, uint32_t frameCount) {}
1090
AddFrameNodeChangeListener(const WeakPtr<FrameNode> & node)1091 void PipelineContext::AddFrameNodeChangeListener(const WeakPtr<FrameNode>& node) {}
1092
RemoveFrameNodeChangeListener(int32_t nodeId)1093 void PipelineContext::RemoveFrameNodeChangeListener(int32_t nodeId) {}
1094
AddChangedFrameNode(const WeakPtr<FrameNode> & node)1095 bool PipelineContext::AddChangedFrameNode(const WeakPtr<FrameNode>& node)
1096 {
1097 return true;
1098 }
1099
RemoveChangedFrameNode(int32_t nodeId)1100 void PipelineContext::RemoveChangedFrameNode(int32_t nodeId) {}
1101
FlushNodeChangeFlag()1102 void PipelineContext::FlushNodeChangeFlag() {}
1103
CleanNodeChangeFlag()1104 void PipelineContext::CleanNodeChangeFlag() {}
1105
HasOnAreaChangeNode(int32_t nodeId)1106 bool PipelineContext::HasOnAreaChangeNode(int32_t nodeId)
1107 {
1108 return false;
1109 }
1110
UnregisterTouchEventListener(const WeakPtr<NG::Pattern> & pattern)1111 void PipelineContext::UnregisterTouchEventListener(const WeakPtr<NG::Pattern>& pattern) {}
1112
GetContainerModalTitleHeight()1113 int32_t PipelineContext::GetContainerModalTitleHeight()
1114 {
1115 return g_containerModalTitleHeight;
1116 }
1117
GetContainerModalButtonsRect(RectF & containerModal,RectF & buttons)1118 bool PipelineContext::GetContainerModalButtonsRect(RectF& containerModal, RectF& buttons)
1119 {
1120 buttons = g_buttonRect;
1121 return hasModalButtonsRect_;
1122 }
1123
GetColorMode() const1124 ColorMode PipelineContext::GetColorMode() const
1125 {
1126 return MockContainer::mockColorMode_;
1127 }
1128
GetNodeRenderStatusMonitor()1129 const RefPtr<NodeRenderStatusMonitor>& PipelineContext::GetNodeRenderStatusMonitor()
1130 {
1131 if (!nodeRenderStatusMonitor_) {
1132 nodeRenderStatusMonitor_ = AceType::MakeRefPtr<NodeRenderStatusMonitor>();
1133 }
1134 return nodeRenderStatusMonitor_;
1135 }
1136
FlushDirtyPropertyNodes()1137 void PipelineContext::FlushDirtyPropertyNodes()
1138 {
1139 }
1140
DumpForceColor(const std::vector<std::string> & params) const1141 void PipelineContext::DumpForceColor(const std::vector<std::string>& params) const {}
AddFrameCallback(FrameCallbackFunc && frameCallbackFunc,IdleCallbackFunc && idleCallbackFunc,int64_t delayMillis)1142 void PipelineContext::AddFrameCallback(FrameCallbackFunc&& frameCallbackFunc, IdleCallbackFunc&& idleCallbackFunc,
1143 int64_t delayMillis) {}
1144 } // namespace OHOS::Ace::NG
1145 // pipeline_context ============================================================
1146
1147 // pipeline_base ===============================================================
1148 namespace OHOS::Ace {
1149 namespace {
1150 const int32_t IGNORE_POSITION_TRANSITION_SWITCH = -990;
1151 } // namespace
1152
1153 class ManagerInterface : public AceType {
1154 DECLARE_ACE_TYPE(ManagerInterface, AceType);
1155 };
1156
OpenImplicitAnimation(const AnimationOption & option,const RefPtr<Curve> & curve,const std::function<void ()> & finishCallBack)1157 void PipelineBase::OpenImplicitAnimation(
1158 const AnimationOption& option, const RefPtr<Curve>& curve, const std::function<void()>& finishCallBack)
1159 {}
1160
CloseImplicitAnimation()1161 bool PipelineBase::CloseImplicitAnimation()
1162 {
1163 return true;
1164 }
1165
IsDestroyed()1166 bool PipelineBase::IsDestroyed()
1167 {
1168 return false;
1169 }
1170
CheckIfGetTheme()1171 bool PipelineBase::CheckIfGetTheme()
1172 {
1173 return false;
1174 }
1175
SetDestroyed()1176 void PipelineBase::SetDestroyed() {}
1177
GetFrontend() const1178 RefPtr<Frontend> PipelineBase::GetFrontend() const
1179 {
1180 return weakFrontend_.Upgrade();
1181 }
1182
SetTouchPipeline(const WeakPtr<PipelineBase> & context)1183 void PipelineBase::SetTouchPipeline(const WeakPtr<PipelineBase>& context) {}
1184
GetImageCache() const1185 RefPtr<ImageCache> PipelineBase::GetImageCache() const
1186 {
1187 return nullptr;
1188 }
1189
OnVirtualKeyboardAreaChange(Rect keyboardArea,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,const float safeHeight,const bool supportAvoidance,bool forceChange)1190 void PipelineBase::OnVirtualKeyboardAreaChange(Rect keyboardArea,
1191 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction, const float safeHeight, const bool supportAvoidance,
1192 bool forceChange)
1193 {}
1194
OnVirtualKeyboardAreaChange(Rect keyboardArea,double positionY,double height,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,bool forceChange)1195 void PipelineBase::OnVirtualKeyboardAreaChange(Rect keyboardArea, double positionY, double height,
1196 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction, bool forceChange)
1197 {}
1198
OnVsyncEvent(uint64_t nanoTimestamp,uint64_t frameCount)1199 void PipelineBase::OnVsyncEvent(uint64_t nanoTimestamp, uint64_t frameCount) {}
1200
ReachResponseDeadline() const1201 bool PipelineBase::ReachResponseDeadline() const
1202 {
1203 return false;
1204 }
1205
SendEventToAccessibility(const AccessibilityEvent & accessibilityEvent)1206 void PipelineBase::SendEventToAccessibility(const AccessibilityEvent& accessibilityEvent) {}
1207
OnActionEvent(const std::string & action)1208 void PipelineBase::OnActionEvent(const std::string& action) {}
1209
SetRootSize(double density,float width,float height)1210 void PipelineBase::SetRootSize(double density, float width, float height) {}
1211
GetCurrentContext()1212 RefPtr<PipelineBase> PipelineBase::GetCurrentContext()
1213 {
1214 return NG::MockPipelineContext::GetCurrent();
1215 }
1216
GetCurrentContextSafely()1217 RefPtr<PipelineBase> PipelineBase::GetCurrentContextSafely()
1218 {
1219 return NG::MockPipelineContext::GetCurrent();
1220 }
1221
GetCurrentContextSafelyWithCheck()1222 RefPtr<PipelineBase> PipelineBase::GetCurrentContextSafelyWithCheck()
1223 {
1224 return NG::MockPipelineContext::GetCurrent();
1225 }
1226
GetCurrentDensity()1227 double PipelineBase::GetCurrentDensity()
1228 {
1229 auto pipelineContext = NG::MockPipelineContext::GetCurrentContext();
1230 return pipelineContext ? pipelineContext->GetDensity() : 1.0;
1231 }
1232
Px2VpWithCurrentDensity(double px)1233 double PipelineBase::Px2VpWithCurrentDensity(double px)
1234 {
1235 double density = GetCurrentDensity();
1236 return px / density;
1237 }
1238
Vp2PxWithCurrentDensity(double vp)1239 double PipelineBase::Vp2PxWithCurrentDensity(double vp)
1240 {
1241 double density = GetCurrentDensity();
1242 return vp * density;
1243 }
1244
NormalizeToPx(const Dimension & dimension) const1245 double PipelineBase::NormalizeToPx(const Dimension& dimension) const
1246 {
1247 if ((dimension.Unit() == DimensionUnit::VP) || (dimension.Unit() == DimensionUnit::FP)) {
1248 return (dimension.Value() * dipScale_);
1249 }
1250 if (dimension.Unit() == DimensionUnit::LPX) {
1251 return (dimension.Value() * designWidthScale_);
1252 }
1253 return dimension.Value();
1254 }
1255
1256 PipelineBase::~PipelineBase() = default;
1257
GetTimeFromExternalTimer()1258 uint64_t PipelineBase::GetTimeFromExternalTimer()
1259 {
1260 return 1;
1261 }
1262
PostAsyncEvent(TaskExecutor::Task && task,const std::string & name,TaskExecutor::TaskType type)1263 void PipelineBase::PostAsyncEvent(TaskExecutor::Task&& task, const std::string& name, TaskExecutor::TaskType type)
1264 {
1265 if (taskExecutor_) {
1266 taskExecutor_->PostTask(std::move(task), type, name);
1267 }
1268 }
1269
PostAsyncEvent(const TaskExecutor::Task & task,const std::string & name,TaskExecutor::TaskType type)1270 void PipelineBase::PostAsyncEvent(const TaskExecutor::Task& task, const std::string& name, TaskExecutor::TaskType type)
1271 {}
1272
PostSyncEvent(const TaskExecutor::Task & task,const std::string & name,TaskExecutor::TaskType type)1273 void PipelineBase::PostSyncEvent(const TaskExecutor::Task& task, const std::string& name, TaskExecutor::TaskType type)
1274 {}
1275
GetAccessibilityManager() const1276 RefPtr<AccessibilityManager> PipelineBase::GetAccessibilityManager() const
1277 {
1278 if (instanceId_ == IGNORE_POSITION_TRANSITION_SWITCH) {
1279 return nullptr;
1280 }
1281 return AceType::MakeRefPtr<MockAccessibilityManager>();
1282 }
1283
1284 #ifdef WINDOW_SCENE_SUPPORTED
GetUIExtensionManager()1285 const RefPtr<UIExtensionManager>& GetUIExtensionManager()
1286 {
1287 return AceType::MakeRefPtr<UIExtensionManager>();
1288 }
1289 #endif
1290
Animate(const AnimationOption & option,const RefPtr<Curve> & curve,const std::function<void ()> & propertyCallback,const std::function<void ()> & finishCallback)1291 bool PipelineBase::Animate(const AnimationOption& option, const RefPtr<Curve>& curve,
1292 const std::function<void()>& propertyCallback, const std::function<void()>& finishCallback)
1293 {
1294 return true;
1295 }
1296
Destroy()1297 void PipelineBase::Destroy() {}
MaybeRelease()1298 bool PipelineBase::MaybeRelease()
1299 {
1300 return AceType::MaybeRelease();
1301 }
1302
ConvertPxToVp(const Dimension & dimension) const1303 double PipelineBase::ConvertPxToVp(const Dimension& dimension) const
1304 {
1305 if (dimension.Unit() == DimensionUnit::PX) {
1306 return dimension.Value() / dipScale_;
1307 }
1308 return dimension.Value();
1309 }
1310
HyperlinkStartAbility(const std::string & address) const1311 void PipelineBase::HyperlinkStartAbility(const std::string& address) const {}
1312
StartAbilityOnQuery(const std::string & queryWord) const1313 void PipelineBase::StartAbilityOnQuery(const std::string& queryWord) const {}
1314
CalcPageWidth(double rootWidth) const1315 double PipelineBase::CalcPageWidth(double rootWidth) const
1316 {
1317 return rootWidth;
1318 }
1319
GetPageWidth() const1320 double PipelineBase::GetPageWidth() const
1321 {
1322 return 0;
1323 }
1324
IsArkUIHookEnabled() const1325 bool PipelineBase::IsArkUIHookEnabled() const
1326 {
1327 auto hookEnabled = SystemProperties::GetArkUIHookEnabled();
1328 if (hookEnabled.has_value()) {
1329 return hookEnabled.value();
1330 }
1331 return isArkUIHookEnabled_;
1332 }
1333
RequestFrame()1334 void PipelineBase::RequestFrame() {}
1335
GetCurrentWindowRect() const1336 Rect PipelineBase::GetCurrentWindowRect() const
1337 {
1338 return NG::windowRect_;
1339 }
1340
GetGlobalDisplayWindowRect() const1341 Rect PipelineBase::GetGlobalDisplayWindowRect() const
1342 {
1343 return NG::windowRect_;
1344 }
1345
SetTextFieldManager(const RefPtr<ManagerInterface> & manager)1346 void PipelineBase::SetTextFieldManager(const RefPtr<ManagerInterface>& manager)
1347 {
1348 textFieldManager_ = manager;
1349 }
1350
HasFloatTitle() const1351 bool PipelineBase::HasFloatTitle() const
1352 {
1353 return true;
1354 }
1355
AddUIExtensionCallbackEvent(NG::UIExtCallbackEventId eventId)1356 void PipelineBase::AddUIExtensionCallbackEvent(NG::UIExtCallbackEventId eventId)
1357 {
1358 uiExtensionEvents_.insert(NG::UIExtCallbackEvent(eventId));
1359 }
1360
AddAccessibilityCallbackEvent(AccessibilityCallbackEventId event,int64_t parameter)1361 void PipelineBase::AddAccessibilityCallbackEvent(AccessibilityCallbackEventId event, int64_t parameter)
1362 {
1363 }
1364
GetCustomTitleHeight()1365 Dimension NG::PipelineContext::GetCustomTitleHeight()
1366 {
1367 return Dimension();
1368 }
1369
SetUiDVSyncCommandTime(uint64_t vsyncTime)1370 void PipelineBase::SetUiDVSyncCommandTime(uint64_t vsyncTime)
1371 {
1372 }
1373
ForceUpdateDesignWidthScale(int32_t width)1374 void PipelineBase::ForceUpdateDesignWidthScale(int32_t width)
1375 {
1376 }
1377
SetFontScale(float fontScale)1378 void PipelineBase::SetFontScale(float fontScale)
1379 {
1380 fontScale_ = fontScale;
1381 }
1382
CatchInteractiveAnimations(const std::function<void ()> & animationCallback)1383 bool NG::PipelineContext::CatchInteractiveAnimations(const std::function<void()>& animationCallback)
1384 {
1385 return false;
1386 }
1387
SetUiDvsyncSwitch(bool on)1388 void PipelineBase::SetUiDvsyncSwitch(bool on) {}
1389
CheckThreadSafe()1390 bool NG::PipelineContext::CheckThreadSafe()
1391 {
1392 return false;
1393 }
1394
1395 #ifdef NEED_PIPELINE_CONTEXT_BE_NULLPTR
GetContext()1396 PipelineContext* TextPattern::GetContext()
1397 {
1398 return nullptr;
1399 }
1400 #endif
1401
FlushUITaskWithSingleDirtyNode(const RefPtr<NG::FrameNode> & node)1402 void NG::PipelineContext::FlushUITaskWithSingleDirtyNode(const RefPtr<NG::FrameNode>& node)
1403 {
1404 CHECK_NULL_VOID(node);
1405 auto layoutProperty = node->GetLayoutProperty();
1406 CHECK_NULL_VOID(layoutProperty);
1407 auto layoutConstraint = node->GetLayoutConstraint();
1408 if (layoutProperty->GetLayoutRect()) {
1409 node->SetActive(true, true);
1410 node->Measure(std::nullopt);
1411 node->Layout();
1412 } else {
1413 auto ancestorNodeOfFrame = node->GetAncestorNodeOfFrame(true);
1414 node->Measure(layoutConstraint);
1415 node->Layout();
1416 }
1417 }
1418
SetBoolStatus(bool value)1419 void SetBoolStatus(bool value)
1420 {
1421 g_setBoolStatus = value;
1422 }
1423
DumpUIExt() const1424 void NG::PipelineContext::DumpUIExt() const {}
1425
RegisterAttachedNode(UINode * uiNode)1426 void NG::PipelineContext::RegisterAttachedNode(UINode* uiNode) {}
1427
RemoveAttachedNode(UINode * uiNode)1428 void NG::PipelineContext::RemoveAttachedNode(UINode* uiNode) {}
1429
EnableContainerModalGesture(bool isEnable)1430 void NG::PipelineContext::EnableContainerModalGesture(bool isEnable) {}
1431
GetContainerFloatingTitleVisible()1432 bool NG::PipelineContext::GetContainerFloatingTitleVisible()
1433 {
1434 return false;
1435 }
1436
GetContainerCustomTitleVisible()1437 bool NG::PipelineContext::GetContainerCustomTitleVisible()
1438 {
1439 return g_isContainerCustomTitleVisible;
1440 }
1441
GetContainerControlButtonVisible()1442 bool NG::PipelineContext::GetContainerControlButtonVisible()
1443 {
1444 return g_isContainerControlButtonVisible;
1445 }
1446
SetBackgroundColorModeUpdated(bool backgroundColorModeUpdated)1447 void NG::PipelineContext::SetBackgroundColorModeUpdated(bool backgroundColorModeUpdated) {}
1448
GetUIContext()1449 RefPtr<Kit::UIContext> NG::PipelineContext::GetUIContext()
1450 {
1451 return nullptr;
1452 }
1453
ScopedLayout(PipelineContext * pipeline)1454 NG::ScopedLayout::ScopedLayout(PipelineContext* pipeline) {}
~ScopedLayout()1455 NG::ScopedLayout::~ScopedLayout() {}
1456
SetDisplayWindowRectInfo(const Rect & displayWindowRectInfo)1457 void NG::PipelineContext::SetDisplayWindowRectInfo(const Rect& displayWindowRectInfo)
1458 {
1459 auto offSetPosX_ = displayWindowRectInfo_.Left() - displayWindowRectInfo.Left();
1460 auto offSetPosY_ = displayWindowRectInfo_.Top() - displayWindowRectInfo.Top();
1461 if (!NearZero(offSetPosX_) || !NearZero(offSetPosY_)) {
1462 if (lastMouseEvent_) {
1463 lastMouseEvent_->x += offSetPosX_;
1464 lastMouseEvent_->y += offSetPosY_;
1465 }
1466 }
1467 displayWindowRectInfo_ = displayWindowRectInfo;
1468 }
1469
SetIsTransFlag(bool result)1470 void NG::PipelineContext::SetIsTransFlag(bool result)
1471 {
1472 isTransFlag_ = result;
1473 }
1474
SetWindowSizeChangeReason(WindowSizeChangeReason reason)1475 void NG::PipelineContext::SetWindowSizeChangeReason(WindowSizeChangeReason reason)
1476 {
1477 windowSizeChangeReason_ = reason;
1478 }
1479
NotifyColorModeChange(uint32_t colorMode)1480 void NG::PipelineContext::NotifyColorModeChange(uint32_t colorMode) {}
1481
GetRSUIDirector()1482 std::shared_ptr<Rosen::RSUIDirector> NG::PipelineContext::GetRSUIDirector()
1483 {
1484 return nullptr;
1485 }
1486
GetCurrentPageNameCallback()1487 std::string NG::PipelineContext::GetCurrentPageNameCallback()
1488 {
1489 return "";
1490 }
1491
SetVsyncListener(VsyncCallbackFun vsync)1492 void NG::PipelineContext::SetVsyncListener(VsyncCallbackFun vsync)
1493 {
1494 vsyncListener_ = std::move(vsync);
1495 }
1496
RegisterArkUIObjectLifecycleCallback(Kit::ArkUIObjectLifecycleCallback && callback)1497 void NG::PipelineContext::RegisterArkUIObjectLifecycleCallback(Kit::ArkUIObjectLifecycleCallback&& callback)
1498 {
1499 objectLifecycleCallback_ = std::move(callback);
1500 }
1501
UnregisterArkUIObjectLifecycleCallback()1502 void NG::PipelineContext::UnregisterArkUIObjectLifecycleCallback()
1503 {
1504 objectLifecycleCallback_ = nullptr;
1505 }
1506
FireArkUIObjectLifecycleCallback(void * data)1507 void NG::PipelineContext::FireArkUIObjectLifecycleCallback(void* data)
1508 {
1509 CHECK_NULL_VOID(objectLifecycleCallback_);
1510 objectLifecycleCallback_(data);
1511 }
1512
CheckSourceTypeChange(SourceType currentSourceType)1513 bool NG::PipelineContext::CheckSourceTypeChange(SourceType currentSourceType)
1514 {
1515 bool ret = false;
1516 if (currentSourceType != lastSourceType_) {
1517 ret = true;
1518 lastSourceType_ = currentSourceType;
1519 }
1520 return ret;
1521 }
1522
GetPostEventManager()1523 const RefPtr<NG::PostEventManager>& NG::PipelineContext::GetPostEventManager()
1524 {
1525 return postEventManager_;
1526 }
1527
StartImplicitAnimation(const AnimationOption & option,const RefPtr<Curve> & curve,const std::function<void ()> & finishCallback,const std::optional<int32_t> & count)1528 void PipelineBase::StartImplicitAnimation(const AnimationOption& option, const RefPtr<Curve>& curve,
1529 const std::function<void()>& finishCallback, const std::optional<int32_t>& count) {}
1530 } // namespace OHOS::Ace
1531 // pipeline_base ===============================================================
1532
1533 // WindowManager ===============================================================
1534 namespace OHOS::Ace {
GetCurrentViewportConfig()1535 RefPtr<PageViewportConfig> WindowManager::GetCurrentViewportConfig()
1536 {
1537 if (getCurrentViewportConfigCallback_) {
1538 return getCurrentViewportConfigCallback_();
1539 }
1540 return nullptr;
1541 }
1542
GetTargetViewportConfig(std::optional<Orientation> orientation,std::optional<bool> enableStatusBar,std::optional<bool> statusBarAnimation,std::optional<bool> enableNavIndicator)1543 RefPtr<PageViewportConfig> WindowManager::GetTargetViewportConfig(
1544 std::optional<Orientation> orientation, std::optional<bool> enableStatusBar,
1545 std::optional<bool> statusBarAnimation, std::optional<bool> enableNavIndicator)
1546 {
1547 if (getTargetViewportConfigCallback_) {
1548 return getTargetViewportConfigCallback_(
1549 orientation, enableStatusBar, statusBarAnimation, enableNavIndicator);
1550 }
1551 return nullptr;
1552 }
1553 } // namespace OHOS::Ace
1554 // WindowManager ===============================================================
1555