1 /*
2 * Copyright (c) 2022-2023 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/utils/utils.h"
21 #include "core/components_ng/base/frame_node.h"
22 #include "core/components_ng/pattern/root/root_pattern.h"
23 #include "core/components_ng/pattern/stage/stage_pattern.h"
24 #include "core/pipeline/pipeline_base.h"
25 #include "core/pipeline_ng/pipeline_context.h"
26 #include "core/pipeline_ng/ui_task_scheduler.h"
27
28 namespace OHOS::Ace::NG {
29 namespace {
30 constexpr double DISPLAY_WIDTH = 720;
31 constexpr double DISPLAY_HEIGHT = 1280;
32 static std::list<PipelineContext::PredictTask> predictTasks_;
33 static Rect windowRect_;
34 } // namespace
35
36 RefPtr<MockPipelineContext> MockPipelineContext::pipeline_;
37 uint64_t UITaskScheduler::frameId_ = 0;
38
39 // mock_pipeline_context =======================================================
SetUp()40 void MockPipelineContext::SetUp()
41 {
42 pipeline_ = AceType::MakeRefPtr<MockPipelineContext>();
43 pipeline_->eventManager_ = AceType::MakeRefPtr<EventManager>();
44 pipeline_->windowManager_ = AceType::MakeRefPtr<WindowManager>();
45 pipeline_->rootWidth_ = DISPLAY_WIDTH;
46 pipeline_->rootHeight_ = DISPLAY_HEIGHT;
47 pipeline_->SetupRootElement();
48 windowRect_ = { 0., 0., NG::DISPLAY_WIDTH, NG::DISPLAY_HEIGHT };
49 }
50
TearDown()51 void MockPipelineContext::TearDown()
52 {
53 if (pipeline_) {
54 pipeline_->Destroy();
55 pipeline_ = nullptr;
56 }
57 predictTasks_.clear();
58 }
59
GetCurrent()60 RefPtr<MockPipelineContext> MockPipelineContext::GetCurrent()
61 {
62 return pipeline_;
63 }
64
SetRootSize(double rootWidth,double rootHeight)65 void MockPipelineContext::SetRootSize(double rootWidth, double rootHeight)
66 {
67 rootWidth_ = rootWidth;
68 rootHeight_ = rootHeight;
69 }
70
SetCurrentWindowRect(Rect rect)71 void MockPipelineContext::SetCurrentWindowRect(Rect rect)
72 {
73 windowRect_ = rect;
74 }
75 // mock_pipeline_context =======================================================
76
77 // pipeline_context ============================================================
GetCurrentRootWidth()78 float PipelineContext::GetCurrentRootWidth()
79 {
80 return static_cast<float>(MockPipelineContext::GetCurrent()->rootWidth_);
81 }
82
GetCurrentRootHeight()83 float PipelineContext::GetCurrentRootHeight()
84 {
85 return static_cast<float>(MockPipelineContext::GetCurrent()->rootHeight_);
86 }
87
GetNavigationController(const std::string & id)88 std::shared_ptr<NavigationController> PipelineContext::GetNavigationController(
89 const std::string& id)
90 {
91 return nullptr;
92 }
93
AddOrReplaceNavigationNode(const std::string & id,const WeakPtr<FrameNode> & node)94 void PipelineContext::AddOrReplaceNavigationNode(
95 const std::string& id, const WeakPtr<FrameNode>& node) {}
96
DeleteNavigationNode(const std::string & id)97 void PipelineContext::DeleteNavigationNode(const std::string &id) {}
98
GetCurrentContext()99 RefPtr<PipelineContext> PipelineContext::GetCurrentContext()
100 {
101 return MockPipelineContext::GetCurrent();
102 }
103
GetCurrentContextSafely()104 RefPtr<PipelineContext> PipelineContext::GetCurrentContextSafely()
105 {
106 return MockPipelineContext::GetCurrent();
107 }
108
GetCurrentContextSafelyWithCheck()109 RefPtr<PipelineContext> PipelineContext::GetCurrentContextSafelyWithCheck()
110 {
111 return MockPipelineContext::GetCurrent();
112 }
113
GetCurrentContextPtrSafely()114 PipelineContext* PipelineContext::GetCurrentContextPtrSafely()
115 {
116 auto context = MockPipelineContext::GetCurrent();
117 return AceType::RawPtr(context);
118 }
119
GetCurrentContextPtrSafelyWithCheck()120 PipelineContext* PipelineContext::GetCurrentContextPtrSafelyWithCheck()
121 {
122 auto context = MockPipelineContext::GetCurrent();
123 return AceType::RawPtr(context);
124 }
125
GetMainPipelineContext()126 RefPtr<PipelineContext> PipelineContext::GetMainPipelineContext()
127 {
128 return MockPipelineContext::GetCurrent();
129 }
130
GetContextByContainerId(int32_t)131 RefPtr<PipelineContext> PipelineContext::GetContextByContainerId(int32_t /* containerId */)
132 {
133 return MockPipelineContext::GetCurrent();
134 }
135
AddWindowFocusChangedCallback(int32_t nodeId)136 void PipelineContext::AddWindowFocusChangedCallback(int32_t nodeId) {}
137
RemoveWindowFocusChangedCallback(int32_t nodeId)138 void PipelineContext::RemoveWindowFocusChangedCallback(int32_t nodeId) {}
139
SetupRootElement()140 void PipelineContext::SetupRootElement()
141 {
142 rootNode_ = FrameNode::CreateFrameNodeWithTree(
143 V2::ROOT_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), MakeRefPtr<RootPattern>());
144 rootNode_->SetHostRootId(GetInstanceId());
145 rootNode_->SetHostPageId(-1);
146 rootNode_->SetActive(true);
147 CalcSize idealSize { CalcLength(rootWidth_), CalcLength(rootHeight_) };
148 MeasureProperty layoutConstraint;
149 layoutConstraint.selfIdealSize = idealSize;
150 layoutConstraint.maxSize = idealSize;
151 rootNode_->UpdateLayoutConstraint(layoutConstraint);
152 auto rootFocusHub = rootNode_->GetOrCreateFocusHub();
153 rootFocusHub->SetFocusType(FocusType::SCOPE);
154 rootFocusHub->SetFocusable(true);
155 rootNode_->AttachToMainTree(false, this);
156 auto stageNode = FrameNode::CreateFrameNode(
157 V2::STAGE_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), MakeRefPtr<StagePattern>());
158 rootNode_->AddChild(stageNode);
159 stageManager_ = MakeRefPtr<StageManager>(stageNode);
160 overlayManager_ = MakeRefPtr<OverlayManager>(rootNode_);
161 fullScreenManager_ = MakeRefPtr<FullScreenManager>(rootNode_);
162 selectOverlayManager_ = MakeRefPtr<SelectOverlayManager>(rootNode_);
163 dragDropManager_ = MakeRefPtr<DragDropManager>();
164 focusManager_ = MakeRefPtr<FocusManager>(AceType::Claim(this));
165 sharedTransitionManager_ = MakeRefPtr<SharedOverlayManager>(rootNode_);
166 }
167
SendEventToAccessibilityWithNode(const AccessibilityEvent & accessibilityEvent,const RefPtr<FrameNode> & node)168 void PipelineContext::SendEventToAccessibilityWithNode(
169 const AccessibilityEvent& accessibilityEvent, const RefPtr<FrameNode>& node)
170 {}
171
OnTouchEvent(const TouchEvent & point,const RefPtr<FrameNode> & node,bool isSubPipe)172 void PipelineContext::OnTouchEvent(const TouchEvent& point, const RefPtr<FrameNode>& node, bool isSubPipe) {}
173
OnMouseEvent(const MouseEvent & event,const RefPtr<FrameNode> & node)174 void PipelineContext::OnMouseEvent(const MouseEvent& event, const RefPtr<FrameNode>& node) {}
175
OnAxisEvent(const AxisEvent & event,const RefPtr<FrameNode> & node)176 void PipelineContext::OnAxisEvent(const AxisEvent& event, const RefPtr<FrameNode>& node) {}
177
OnTouchEvent(const TouchEvent & point,bool isSubPipe)178 void PipelineContext::OnTouchEvent(const TouchEvent& point, bool isSubPipe) {}
179
OnAccessibilityHoverEvent(const TouchEvent & point,const RefPtr<NG::FrameNode> & node)180 void PipelineContext::OnAccessibilityHoverEvent(const TouchEvent& point, const RefPtr<NG::FrameNode>& node) {}
181
OnPenHoverEvent(const TouchEvent & point,const RefPtr<NG::FrameNode> & node)182 void PipelineContext::OnPenHoverEvent(const TouchEvent& point, const RefPtr<NG::FrameNode>& node) {}
183
HandlePenHoverOut(const TouchEvent & point)184 void PipelineContext::HandlePenHoverOut(const TouchEvent& point) {}
185
OnMouseEvent(const MouseEvent & event)186 void PipelineContext::OnMouseEvent(const MouseEvent& event) {}
187
FlushTouchEvents()188 void PipelineContext::FlushTouchEvents() {}
189
OnAxisEvent(const AxisEvent & event)190 void PipelineContext::OnAxisEvent(const AxisEvent& event) {}
191
OnDragEvent(const PointerEvent & pointerEvent,DragEventAction action,const RefPtr<NG::FrameNode> & node)192 void PipelineContext::OnDragEvent(
193 const PointerEvent& pointerEvent, DragEventAction action, const RefPtr<NG::FrameNode>& node)
194 {}
195
OnIdle(int64_t deadline)196 void PipelineContext::OnIdle(int64_t deadline)
197 {
198 const auto tasks(std::move(predictTasks_));
199 for (const auto& task : tasks) {
200 task(deadline, false);
201 }
202 }
203
Destroy()204 void PipelineContext::Destroy()
205 {
206 dragDropManager_.Reset();
207 rootNode_.Reset();
208 }
209
OnShow()210 void PipelineContext::OnShow() {}
211
OnHide()212 void PipelineContext::OnHide() {}
213
RemoveOnAreaChangeNode(int32_t nodeId)214 void PipelineContext::RemoveOnAreaChangeNode(int32_t nodeId) {}
215
AddWindowStateChangedCallback(int32_t nodeId)216 void PipelineContext::AddWindowStateChangedCallback(int32_t nodeId) {}
217
RemoveWindowStateChangedCallback(int32_t nodeId)218 void PipelineContext::RemoveWindowStateChangedCallback(int32_t nodeId) {}
219
AddNodesToNotifyMemoryLevel(int32_t nodeId)220 void PipelineContext::AddNodesToNotifyMemoryLevel(int32_t nodeId) {}
221
RemoveNodesToNotifyMemoryLevel(int32_t nodeId)222 void PipelineContext::RemoveNodesToNotifyMemoryLevel(int32_t nodeId) {}
223
WindowFocus(bool isFocus)224 void PipelineContext::WindowFocus(bool isFocus) {}
225
ContainerModalUnFocus()226 void PipelineContext::ContainerModalUnFocus() {}
227
ShowContainerTitle(bool isShow,bool hasDeco,bool needUpdate)228 void PipelineContext::ShowContainerTitle(bool isShow, bool hasDeco, bool needUpdate) {}
229
UpdateTitleInTargetPos(bool isShow,int32_t height)230 void PipelineContext::UpdateTitleInTargetPos(bool isShow, int32_t height) {}
231
SetContainerWindow(bool isShow)232 void PipelineContext::SetContainerWindow(bool isShow) {}
233
SetAppBgColor(const Color & color)234 void PipelineContext::SetAppBgColor(const Color& color) {}
235
ChangeDarkModeBrightness()236 void PipelineContext::ChangeDarkModeBrightness() {}
237
SetAppTitle(const std::string & title)238 void PipelineContext::SetAppTitle(const std::string& title) {}
239
SetAppIcon(const RefPtr<PixelMap> & icon)240 void PipelineContext::SetAppIcon(const RefPtr<PixelMap>& icon) {}
241
OnSurfaceDensityChanged(double density)242 void PipelineContext::OnSurfaceDensityChanged(double density) {}
243
OnTransformHintChanged(uint32_t transform)244 void PipelineContext::OnTransformHintChanged(uint32_t transform) {}
245
SetRootRect(double width,double height,double offset)246 void PipelineContext::SetRootRect(double width, double height, double offset) {}
247
FlushBuild()248 void PipelineContext::FlushBuild() {}
249
FlushBuildFinishCallbacks()250 void PipelineContext::FlushBuildFinishCallbacks()
251 {
252 decltype(buildFinishCallbacks_) buildFinishCallbacks(std::move(buildFinishCallbacks_));
253 for (const auto& func : buildFinishCallbacks) {
254 if (func) {
255 func();
256 }
257 }
258 }
259
NotifyMemoryLevel(int32_t level)260 void PipelineContext::NotifyMemoryLevel(int32_t level) {}
261
FlushMessages()262 void PipelineContext::FlushMessages() {}
263
FlushModifier()264 void PipelineContext::FlushModifier() {}
265
FlushUITasks(bool triggeredByImplicitAnimation)266 void PipelineContext::FlushUITasks(bool triggeredByImplicitAnimation) {}
267
FlushAfterLayoutCallbackInImplicitAnimationTask()268 void PipelineContext::FlushAfterLayoutCallbackInImplicitAnimationTask() {}
269
DetachNode(RefPtr<UINode>)270 void PipelineContext::DetachNode(RefPtr<UINode>) {}
271
Finish(bool autoFinish) const272 void PipelineContext::Finish(bool autoFinish) const {}
273
FlushVsync(uint64_t nanoTimestamp,uint32_t frameCount)274 void PipelineContext::FlushVsync(uint64_t nanoTimestamp, uint32_t frameCount) {}
275
FlushPipelineWithoutAnimation()276 void PipelineContext::FlushPipelineWithoutAnimation() {}
277
FlushFocus()278 void PipelineContext::FlushFocus() {}
279
FlushOnceVsyncTask()280 void PipelineContext::FlushOnceVsyncTask() {}
281
DispatchDisplaySync(uint64_t nanoTimestamp)282 void PipelineContext::DispatchDisplaySync(uint64_t nanoTimestamp) {}
283
FlushAnimation(uint64_t nanoTimestamp)284 void PipelineContext::FlushAnimation(uint64_t nanoTimestamp) {}
285
FlushRequestFocus()286 void PipelineContext::FlushRequestFocus() {}
287
CheckNeedUpdateBackgroundColor(Color & color)288 void PipelineContext::CheckNeedUpdateBackgroundColor(Color& color) {}
289
CheckNeedDisableUpdateBackgroundImage()290 bool PipelineContext::CheckNeedDisableUpdateBackgroundImage()
291 {
292 return false;
293 }
294
OnVirtualKeyboardHeightChange(float keyboardHeight,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,const float safeHeight,const bool supportAvoidance,bool forceChange)295 void PipelineContext::OnVirtualKeyboardHeightChange(float keyboardHeight,
296 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction, const float safeHeight,
297 const bool supportAvoidance, bool forceChange)
298 {}
299
OnVirtualKeyboardHeightChange(float keyboardHeight,double positionY,double height,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,bool forceChange)300 void PipelineContext::OnVirtualKeyboardHeightChange(float keyboardHeight, double positionY, double height,
301 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction, bool forceChange)
302 {}
303
AvoidanceLogic(float keyboardHeight,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,const float safeHeight,const bool supportAvoidance)304 void PipelineContext::AvoidanceLogic(float keyboardHeight, const std::shared_ptr<Rosen::RSTransaction>& rsTransaction,
305 const float safeHeight, const bool supportAvoidance)
306 {}
307
OriginalAvoidanceLogic(float keyboardHeight,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction)308 void PipelineContext::OriginalAvoidanceLogic(
309 float keyboardHeight, const std::shared_ptr<Rosen::RSTransaction>& rsTransaction)
310 {}
311
OnFoldStatusChange(FoldStatus foldStatus)312 void PipelineContext::OnFoldStatusChange(FoldStatus foldStatus) {}
313
OnFoldDisplayModeChange(FoldDisplayMode foldDisplayMode)314 void PipelineContext::OnFoldDisplayModeChange(FoldDisplayMode foldDisplayMode) {}
315
OnSurfaceChanged(int32_t width,int32_t height,WindowSizeChangeReason type,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction)316 void PipelineContext::OnSurfaceChanged(int32_t width, int32_t height, WindowSizeChangeReason type,
317 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction)
318 {}
319
OnLayoutCompleted(const std::string & componentId)320 void PipelineContext::OnLayoutCompleted(const std::string& componentId) {}
321
CheckOverlayFocus()322 bool PipelineContext::CheckOverlayFocus()
323 {
324 return false;
325 }
326
OnDrawCompleted(const std::string & componentId)327 void PipelineContext::OnDrawCompleted(const std::string& componentId) {}
328
SetNeedRenderNode(const WeakPtr<FrameNode> & node)329 void PipelineContext::SetNeedRenderNode(const WeakPtr<FrameNode>& node) {}
330
OnSurfacePositionChanged(int32_t posX,int32_t posY)331 void PipelineContext::OnSurfacePositionChanged(int32_t posX, int32_t posY) {}
332
FlushReload(const ConfigurationChange & configurationChange,bool fullUpdate)333 void PipelineContext::FlushReload(const ConfigurationChange& configurationChange, bool fullUpdate) {}
334
SetContainerButtonHide(bool hideSplit,bool hideMaximize,bool hideMinimize)335 void PipelineContext::SetContainerButtonHide(bool hideSplit, bool hideMaximize, bool hideMinimize) {}
336
AddAnimationClosure(std::function<void ()> && animation)337 void PipelineContext::AddAnimationClosure(std::function<void()>&& animation) {}
338
SetCloseButtonStatus(bool isEnabled)339 void PipelineContext::SetCloseButtonStatus(bool isEnabled) {}
340
GetSelectOverlayManager()341 const RefPtr<SelectOverlayManager>& PipelineContext::GetSelectOverlayManager()
342 {
343 return selectOverlayManager_;
344 }
345
GetDragDropManager()346 const RefPtr<DragDropManager>& PipelineContext::GetDragDropManager()
347 {
348 return dragDropManager_;
349 }
350
GetFocusManager() const351 const RefPtr<FocusManager>& PipelineContext::GetFocusManager() const
352 {
353 return focusManager_;
354 }
355
GetOrCreateFocusManager()356 const RefPtr<FocusManager>& PipelineContext::GetOrCreateFocusManager()
357 {
358 if (!focusManager_) {
359 focusManager_ = MakeRefPtr<FocusManager>(AceType::Claim(this));
360 }
361 return focusManager_;
362 }
363
GetStageManager()364 const RefPtr<StageManager>& PipelineContext::GetStageManager()
365 {
366 return stageManager_;
367 }
368
GetFullScreenManager()369 const RefPtr<FullScreenManager>& PipelineContext::GetFullScreenManager()
370 {
371 return fullScreenManager_;
372 }
373
GetOverlayManager()374 const RefPtr<OverlayManager>& PipelineContext::GetOverlayManager()
375 {
376 return overlayManager_;
377 }
378
AddScheduleTask(const RefPtr<ScheduleTask> & task)379 uint32_t PipelineContext::AddScheduleTask(const RefPtr<ScheduleTask>& task)
380 {
381 return 0;
382 }
383
RemoveScheduleTask(uint32_t id)384 void PipelineContext::RemoveScheduleTask(uint32_t id) {}
385
AddOnAreaChangeNode(int32_t nodeId)386 void PipelineContext::AddOnAreaChangeNode(int32_t nodeId) {}
387
OnKeyEvent(const KeyEvent & event)388 bool PipelineContext::OnKeyEvent(const KeyEvent& event)
389 {
390 return false;
391 }
392
RequestFocus(const std::string & targetNodeId,bool isSyncRequest)393 bool PipelineContext::RequestFocus(const std::string& targetNodeId, bool isSyncRequest)
394 {
395 return false;
396 }
397
OnDumpInfo(const std::vector<std::string> & params) const398 bool PipelineContext::OnDumpInfo(const std::vector<std::string>& params) const
399 {
400 return false;
401 }
402
OnBackPressed()403 bool PipelineContext::OnBackPressed()
404 {
405 return false;
406 }
407
AddDirtyFocus(const RefPtr<FrameNode> & node)408 void PipelineContext::AddDirtyFocus(const RefPtr<FrameNode>& node) {}
409
AddDirtyPropertyNode(const RefPtr<FrameNode> & dirty)410 void PipelineContext::AddDirtyPropertyNode(const RefPtr<FrameNode>& dirty) {}
411
AddDirtyRequestFocus(const RefPtr<FrameNode> & node)412 void PipelineContext::AddDirtyRequestFocus(const RefPtr<FrameNode>& node) {}
413
AddDirtyFreezeNode(FrameNode * node)414 void PipelineContext::AddDirtyFreezeNode(FrameNode* node) {}
415
416 // core/pipeline_ng/pipeline_context.h depends on the specific impl
FlushTask(bool triggeredByImplicitAnimation)417 void UITaskScheduler::FlushTask(bool triggeredByImplicitAnimation) {}
418
UITaskScheduler()419 UITaskScheduler::UITaskScheduler() {}
420
421 UITaskScheduler::~UITaskScheduler() = default;
422
AddDirtyLayoutNode(const RefPtr<FrameNode> & dirty)423 void PipelineContext::AddDirtyLayoutNode(const RefPtr<FrameNode>& dirty) {}
424
AddLayoutNode(const RefPtr<FrameNode> & layoutNode)425 void PipelineContext::AddLayoutNode(const RefPtr<FrameNode>& layoutNode) {}
426
AddDirtyRenderNode(const RefPtr<FrameNode> & dirty)427 void PipelineContext::AddDirtyRenderNode(const RefPtr<FrameNode>& dirty) {}
428
AddBuildFinishCallBack(std::function<void ()> && callback)429 void PipelineContext::AddBuildFinishCallBack(std::function<void()>&& callback)
430 {
431 buildFinishCallbacks_.emplace_back(std::move(callback));
432 }
433
AddPredictTask(PredictTask && task)434 void PipelineContext::AddPredictTask(PredictTask&& task)
435 {
436 predictTasks_.emplace_back(task);
437 }
438
AddAfterLayoutTask(std::function<void ()> && task,bool isFlushInImplicitAnimationTask)439 void PipelineContext::AddAfterLayoutTask(std::function<void()>&& task, bool isFlushInImplicitAnimationTask)
440 {
441 if (task) {
442 task();
443 }
444 }
445
AddSyncGeometryNodeTask(std::function<void ()> && task)446 void PipelineContext::AddSyncGeometryNodeTask(std::function<void()>&& task)
447 {
448 if (task) {
449 task();
450 }
451 }
452
FlushSyncGeometryNodeTasks()453 void PipelineContext::FlushSyncGeometryNodeTasks() {}
454
AddAfterRenderTask(std::function<void ()> && task)455 void PipelineContext::AddAfterRenderTask(std::function<void()>&& task)
456 {
457 if (task) {
458 task();
459 }
460 }
461
FlushPipelineImmediately()462 void PipelineContext::FlushPipelineImmediately() {}
463
RebuildFontNode()464 void PipelineContext::RebuildFontNode() {}
465
GetCurrentFrameInfo(uint64_t,uint64_t)466 FrameInfo* PipelineContext::GetCurrentFrameInfo(uint64_t /* recvTime */, uint64_t /* timeStamp */)
467 {
468 return nullptr;
469 }
470
DumpPipelineInfo() const471 void PipelineContext::DumpPipelineInfo() const {}
472
AddVisibleAreaChangeNode(int32_t nodeId)473 void PipelineContext::AddVisibleAreaChangeNode(int32_t nodeId) {}
474
AddVisibleAreaChangeNode(const RefPtr<FrameNode> & node,const std::vector<double> & ratio,const VisibleRatioCallback & callback,bool isUserCallback,bool isCalculateInnerClip)475 void PipelineContext::AddVisibleAreaChangeNode(const RefPtr<FrameNode>& node, const std::vector<double>& ratio,
476 const VisibleRatioCallback& callback, bool isUserCallback, bool isCalculateInnerClip)
477 {
478 CHECK_NULL_VOID(callback);
479 callback(false, 0.0);
480 callback(true, ratio[0]);
481 }
482
RemoveVisibleAreaChangeNode(int32_t nodeId)483 void PipelineContext::RemoveVisibleAreaChangeNode(int32_t nodeId) {}
484
HandleVisibleAreaChangeEvent(uint64_t nanoTimestamp)485 void PipelineContext::HandleVisibleAreaChangeEvent(uint64_t nanoTimestamp) {}
486
ChangeMouseStyle(int32_t nodeId,MouseFormat format,int32_t windowId,bool isBypass)487 bool PipelineContext::ChangeMouseStyle(int32_t nodeId, MouseFormat format, int32_t windowId, bool isBypass)
488 {
489 return true;
490 }
491
RestoreNodeInfo(std::unique_ptr<JsonValue> nodeInfo)492 void PipelineContext::RestoreNodeInfo(std::unique_ptr<JsonValue> nodeInfo) {}
493
GetStoredNodeInfo()494 std::unique_ptr<JsonValue> PipelineContext::GetStoredNodeInfo()
495 {
496 return nullptr;
497 }
498
StoreNode(int32_t restoreId,const WeakPtr<FrameNode> & node)499 void PipelineContext::StoreNode(int32_t restoreId, const WeakPtr<FrameNode>& node) {}
500
GetRestoreInfo(int32_t restoreId,std::string & restoreInfo)501 bool PipelineContext::GetRestoreInfo(int32_t restoreId, std::string& restoreInfo)
502 {
503 return false;
504 }
505
AddDirtyCustomNode(const RefPtr<UINode> & dirtyNode)506 void PipelineContext::AddDirtyCustomNode(const RefPtr<UINode>& dirtyNode) {}
507
AddWindowSizeChangeCallback(int32_t nodeId)508 void PipelineContext::AddWindowSizeChangeCallback(int32_t nodeId) {}
509
RemoveWindowSizeChangeCallback(int32_t nodeId)510 void PipelineContext::RemoveWindowSizeChangeCallback(int32_t nodeId) {}
511
AddNavigationNode(int32_t pageId,WeakPtr<UINode> navigationNode)512 void PipelineContext::AddNavigationNode(int32_t pageId, WeakPtr<UINode> navigationNode) {}
513
RemoveNavigationNode(int32_t pageId,int32_t nodeId)514 void PipelineContext::RemoveNavigationNode(int32_t pageId, int32_t nodeId) {}
FirePageChanged(int32_t pageId,bool isOnShow)515 void PipelineContext::FirePageChanged(int32_t pageId, bool isOnShow) {}
UpdateSystemSafeArea(const SafeAreaInsets & systemSafeArea)516 void PipelineContext::UpdateSystemSafeArea(const SafeAreaInsets& systemSafeArea)
517 {
518 safeAreaManager_->UpdateSystemSafeArea(systemSafeArea);
519 }
UpdateCutoutSafeArea(const SafeAreaInsets & cutoutSafeArea)520 void PipelineContext::UpdateCutoutSafeArea(const SafeAreaInsets& cutoutSafeArea)
521 {
522 safeAreaManager_->UpdateCutoutSafeArea(cutoutSafeArea);
523 }
UpdateNavSafeArea(const SafeAreaInsets & navSafeArea)524 void PipelineContext::UpdateNavSafeArea(const SafeAreaInsets& navSafeArea) {};
SetEnableKeyBoardAvoidMode(bool value)525 void PipelineContext::SetEnableKeyBoardAvoidMode(bool value) {};
IsEnableKeyBoardAvoidMode()526 bool PipelineContext::IsEnableKeyBoardAvoidMode()
527 {
528 return false;
529 }
RequireSummary()530 void PipelineContext::RequireSummary() {};
SetIgnoreViewSafeArea(bool value)531 void PipelineContext::SetIgnoreViewSafeArea(bool value) {};
SetIsLayoutFullScreen(bool value)532 void PipelineContext::SetIsLayoutFullScreen(bool value) {};
SetIsNeedAvoidWindow(bool value)533 void PipelineContext::SetIsNeedAvoidWindow(bool value) {};
534
GetSafeArea() const535 SafeAreaInsets PipelineContext::GetSafeArea() const
536 {
537 // top inset = 1
538 return SafeAreaInsets({}, { 0, 1 }, {}, {});
539 }
540
GetSafeAreaWithoutProcess() const541 SafeAreaInsets PipelineContext::GetSafeAreaWithoutProcess() const
542 {
543 return SafeAreaInsets({}, { 0, 1 }, {}, {});
544 }
545
GetPageAvoidOffset()546 float PipelineContext::GetPageAvoidOffset()
547 {
548 return 0.0f;
549 }
550
CheckNeedAvoidInSubWindow()551 bool PipelineContext::CheckNeedAvoidInSubWindow()
552 {
553 return false;
554 }
555
GetResponseRegion(const RefPtr<NG::FrameNode> & rootNode)556 std::string PipelineContext::GetResponseRegion(const RefPtr<NG::FrameNode>& rootNode)
557 {
558 return "";
559 }
560
NotifyResponseRegionChanged(const RefPtr<NG::FrameNode> & rootNode)561 void PipelineContext::NotifyResponseRegionChanged(const RefPtr<NG::FrameNode>& rootNode) {};
562
AddFontNodeNG(const WeakPtr<UINode> & node)563 void PipelineContext::AddFontNodeNG(const WeakPtr<UINode>& node) {}
564
RemoveFontNodeNG(const WeakPtr<UINode> & node)565 void PipelineContext::RemoveFontNodeNG(const WeakPtr<UINode>& node) {}
566
SetWindowSceneConsumed(bool isConsumed)567 void PipelineContext::SetWindowSceneConsumed(bool isConsumed) {}
568
AddIsFocusActiveUpdateEvent(const RefPtr<FrameNode> & node,const std::function<void (bool)> & eventCallback)569 void PipelineContext::AddIsFocusActiveUpdateEvent(
570 const RefPtr<FrameNode>& node, const std::function<void(bool)>& eventCallback)
571 {}
572
RemoveIsFocusActiveUpdateEvent(const RefPtr<FrameNode> & node)573 void PipelineContext::RemoveIsFocusActiveUpdateEvent(const RefPtr<FrameNode>& node) {}
574
HasDifferentDirectionGesture() const575 bool PipelineContext::HasDifferentDirectionGesture() const
576 {
577 return false;
578 }
579
SetJSViewActive(bool active,WeakPtr<CustomNode> custom)580 void PipelineContext::SetJSViewActive(bool active, WeakPtr<CustomNode> custom) {}
581
FindNavigationNodeToHandleBack(const RefPtr<UINode> & node,bool & isEntry)582 RefPtr<FrameNode> PipelineContext::FindNavigationNodeToHandleBack(const RefPtr<UINode>& node, bool& isEntry)
583 {
584 return nullptr;
585 }
586
SetIsFocusActive(bool isFocusActive)587 bool PipelineContext::SetIsFocusActive(bool isFocusActive)
588 {
589 return false;
590 }
591
NeedSoftKeyboard()592 bool PipelineContext::NeedSoftKeyboard()
593 {
594 return false;
595 }
596
SetCursor(int32_t cursorValue)597 void PipelineContext::SetCursor(int32_t cursorValue) {}
598
RestoreDefault(int32_t windowId)599 void PipelineContext::RestoreDefault(int32_t windowId) {}
600
HandleSubwindow(bool isShow)601 void PipelineContext::HandleSubwindow(bool isShow) {}
602
GetCurrentExtraInfo()603 std::string PipelineContext::GetCurrentExtraInfo()
604 {
605 return std::string();
606 }
607
CloseFrontendAnimation()608 void PipelineContext::CloseFrontendAnimation() {}
609
OpenFrontendAnimation(const AnimationOption & option,const RefPtr<Curve> & curve,const std::function<void ()> & finishCallback)610 void PipelineContext::OpenFrontendAnimation(
611 const AnimationOption& option, const RefPtr<Curve>& curve, const std::function<void()>& finishCallback)
612 {}
613
IsDragging() const614 bool PipelineContext::IsDragging() const
615 {
616 return false;
617 }
618
SetIsDragging(bool isDragging)619 void PipelineContext::SetIsDragging(bool isDragging) {}
620
ResetDragging()621 void PipelineContext::ResetDragging() {}
622
UpdateOriginAvoidArea(const Rosen::AvoidArea & avoidArea,uint32_t type)623 void PipelineContext::UpdateOriginAvoidArea(const Rosen::AvoidArea& avoidArea, uint32_t type) {}
624
CheckAndUpdateKeyboardInset(float keyboardHeight)625 void PipelineContext::CheckAndUpdateKeyboardInset(float keyboardHeight) {}
626
PrintVsyncInfoIfNeed() const627 bool PipelineContext::PrintVsyncInfoIfNeed() const
628 {
629 return false;
630 }
631
GetSerializedGesture() const632 const SerializedGesture& PipelineContext::GetSerializedGesture() const
633 {
634 return serializedGesture_;
635 }
636
FlushFocusView()637 void PipelineContext::FlushFocusView()
638 {
639 CHECK_NULL_VOID(focusManager_);
640 auto lastFocusView = (focusManager_->GetLastFocusView()).Upgrade();
641 CHECK_NULL_VOID(lastFocusView);
642 auto lastFocusViewHub = lastFocusView->GetFocusHub();
643 CHECK_NULL_VOID(lastFocusViewHub);
644 if (lastFocusView && (!lastFocusViewHub->IsCurrentFocus() || !lastFocusView->GetIsViewHasFocused()) &&
645 lastFocusViewHub->IsFocusableNode()) {
646 lastFocusView->RequestDefaultFocus();
647 }
648 }
649
SetOverlayNodePositions(std::vector<Ace::RectF> rects)650 void PipelineContext::SetOverlayNodePositions(std::vector<Ace::RectF> rects) {}
651
GetOverlayNodePositions()652 std::vector<Ace::RectF> PipelineContext::GetOverlayNodePositions()
653 {
654 return {};
655 }
656
RegisterOverlayNodePositionsUpdateCallback(const std::function<void (std::vector<Ace::RectF>)> && callback)657 void PipelineContext::RegisterOverlayNodePositionsUpdateCallback(
658 const std::function<void(std::vector<Ace::RectF>)>&& callback)
659 {}
660
TriggerOverlayNodePositionsUpdateCallback(std::vector<Ace::RectF> rects)661 void PipelineContext::TriggerOverlayNodePositionsUpdateCallback(std::vector<Ace::RectF> rects) {}
662
IsContainerModalVisible()663 bool PipelineContext::IsContainerModalVisible()
664 {
665 return false;
666 }
667
CheckAndLogLastReceivedTouchEventInfo(int32_t eventId,TouchType type)668 void PipelineContext::CheckAndLogLastReceivedTouchEventInfo(int32_t eventId, TouchType type) {}
669
CheckAndLogLastConsumedTouchEventInfo(int32_t eventId,TouchType type)670 void PipelineContext::CheckAndLogLastConsumedTouchEventInfo(int32_t eventId, TouchType type) {}
671
CheckAndLogLastReceivedMouseEventInfo(int32_t eventId,MouseAction action)672 void PipelineContext::CheckAndLogLastReceivedMouseEventInfo(int32_t eventId, MouseAction action) {}
673
CheckAndLogLastConsumedMouseEventInfo(int32_t eventId,MouseAction action)674 void PipelineContext::CheckAndLogLastConsumedMouseEventInfo(int32_t eventId, MouseAction action) {}
675
CheckAndLogLastReceivedAxisEventInfo(int32_t eventId,AxisAction action)676 void PipelineContext::CheckAndLogLastReceivedAxisEventInfo(int32_t eventId, AxisAction action) {}
677
CheckAndLogLastConsumedAxisEventInfo(int32_t eventId,AxisAction action)678 void PipelineContext::CheckAndLogLastConsumedAxisEventInfo(int32_t eventId, AxisAction action) {}
679
PreLayout(uint64_t nanoTimestamp,uint32_t frameCount)680 void PipelineContext::PreLayout(uint64_t nanoTimestamp, uint32_t frameCount) {}
681
AddFrameNodeChangeListener(const WeakPtr<FrameNode> & node)682 void PipelineContext::AddFrameNodeChangeListener(const WeakPtr<FrameNode>& node) {}
683
RemoveFrameNodeChangeListener(int32_t nodeId)684 void PipelineContext::RemoveFrameNodeChangeListener(int32_t nodeId) {}
685
AddChangedFrameNode(const WeakPtr<FrameNode> & node)686 bool PipelineContext::AddChangedFrameNode(const WeakPtr<FrameNode>& node)
687 {
688 return true;
689 }
690
RemoveChangedFrameNode(int32_t nodeId)691 void PipelineContext::RemoveChangedFrameNode(int32_t nodeId) {}
692
FlushNodeChangeFlag()693 void PipelineContext::FlushNodeChangeFlag() {}
694
CleanNodeChangeFlag()695 void PipelineContext::CleanNodeChangeFlag() {}
696
HasOnAreaChangeNode(int32_t nodeId)697 bool PipelineContext::HasOnAreaChangeNode(int32_t nodeId)
698 {
699 return false;
700 }
701
702 } // namespace OHOS::Ace::NG
703 // pipeline_context ============================================================
704
705 // pipeline_base ===============================================================
706 namespace OHOS::Ace {
707 class ManagerInterface : public AceType {
708 DECLARE_ACE_TYPE(ManagerInterface, AceType);
709 };
710
OpenImplicitAnimation(const AnimationOption & option,const RefPtr<Curve> & curve,const std::function<void ()> & finishCallBack)711 void PipelineBase::OpenImplicitAnimation(
712 const AnimationOption& option, const RefPtr<Curve>& curve, const std::function<void()>& finishCallBack)
713 {}
714
CloseImplicitAnimation()715 bool PipelineBase::CloseImplicitAnimation()
716 {
717 return true;
718 }
719
IsDestroyed()720 bool PipelineBase::IsDestroyed()
721 {
722 return false;
723 }
724
SetDestroyed()725 void PipelineBase::SetDestroyed() {}
726
GetFrontend() const727 RefPtr<Frontend> PipelineBase::GetFrontend() const
728 {
729 return nullptr;
730 }
731
SetTouchPipeline(const WeakPtr<PipelineBase> & context)732 void PipelineBase::SetTouchPipeline(const WeakPtr<PipelineBase>& context) {}
733
GetImageCache() const734 RefPtr<ImageCache> PipelineBase::GetImageCache() const
735 {
736 return nullptr;
737 }
738
OnVirtualKeyboardAreaChange(Rect keyboardArea,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,const float safeHeight,const bool supportAvoidance,bool forceChange)739 void PipelineBase::OnVirtualKeyboardAreaChange(Rect keyboardArea,
740 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction, const float safeHeight,
741 const bool supportAvoidance, bool forceChange) {}
OnVirtualKeyboardAreaChange(Rect keyboardArea,double positionY,double height,const std::shared_ptr<Rosen::RSTransaction> & rsTransaction,bool forceChange)742 void PipelineBase::OnVirtualKeyboardAreaChange(Rect keyboardArea, double positionY, double height,
743 const std::shared_ptr<Rosen::RSTransaction>& rsTransaction, bool forceChange) {}
744
OnVsyncEvent(uint64_t nanoTimestamp,uint32_t frameCount)745 void PipelineBase::OnVsyncEvent(uint64_t nanoTimestamp, uint32_t frameCount) {}
746
SendEventToAccessibility(const AccessibilityEvent & accessibilityEvent)747 void PipelineBase::SendEventToAccessibility(const AccessibilityEvent& accessibilityEvent) {}
748
OnActionEvent(const std::string & action)749 void PipelineBase::OnActionEvent(const std::string& action) {}
750
SetRootSize(double density,float width,float height)751 void PipelineBase::SetRootSize(double density, float width, float height) {}
752
GetCurrentContext()753 RefPtr<PipelineBase> PipelineBase::GetCurrentContext()
754 {
755 return NG::MockPipelineContext::GetCurrent();
756 }
757
GetCurrentContextSafely()758 RefPtr<PipelineBase> PipelineBase::GetCurrentContextSafely()
759 {
760 return NG::MockPipelineContext::GetCurrent();
761 }
762
GetCurrentDensity()763 double PipelineBase::GetCurrentDensity()
764 {
765 auto pipelineContext = NG::MockPipelineContext::GetCurrentContext();
766 return pipelineContext ? pipelineContext->GetDensity() : 1.0;
767 }
768
Px2VpWithCurrentDensity(double px)769 double PipelineBase::Px2VpWithCurrentDensity(double px)
770 {
771 double density = GetCurrentDensity();
772 return px / density;
773 }
774
Vp2PxWithCurrentDensity(double vp)775 double PipelineBase::Vp2PxWithCurrentDensity(double vp)
776 {
777 double density = GetCurrentDensity();
778 return vp * density;
779 }
780
NormalizeToPx(const Dimension & dimension) const781 double PipelineBase::NormalizeToPx(const Dimension& dimension) const
782 {
783 if ((dimension.Unit() == DimensionUnit::VP) || (dimension.Unit() == DimensionUnit::FP)) {
784 return (dimension.Value() * dipScale_);
785 }
786 if (dimension.Unit() == DimensionUnit::LPX) {
787 return (dimension.Value() * designWidthScale_);
788 }
789 return dimension.Value();
790 }
791
792 PipelineBase::~PipelineBase() = default;
793
GetTimeFromExternalTimer()794 uint64_t PipelineBase::GetTimeFromExternalTimer()
795 {
796 return 1;
797 }
798
PostAsyncEvent(TaskExecutor::Task && task,const std::string & name,TaskExecutor::TaskType type)799 void PipelineBase::PostAsyncEvent(TaskExecutor::Task&& task, const std::string& name, TaskExecutor::TaskType type) {}
800
PostAsyncEvent(const TaskExecutor::Task & task,const std::string & name,TaskExecutor::TaskType type)801 void PipelineBase::PostAsyncEvent(const TaskExecutor::Task& task, const std::string& name, TaskExecutor::TaskType type)
802 {}
803
PostSyncEvent(const TaskExecutor::Task & task,const std::string & name,TaskExecutor::TaskType type)804 void PipelineBase::PostSyncEvent(const TaskExecutor::Task& task, const std::string& name, TaskExecutor::TaskType type)
805 {}
806
GetAccessibilityManager() const807 RefPtr<AccessibilityManager> PipelineBase::GetAccessibilityManager() const
808 {
809 return nullptr;
810 }
811
812 #ifdef WINDOW_SCENE_SUPPORTED
GetUIExtensionManager()813 const RefPtr<UIExtensionManager>& GetUIExtensionManager()
814 {
815 return AceType::MakeRefPtr<UIExtensionManager>();
816 }
817 #endif
818
Animate(const AnimationOption & option,const RefPtr<Curve> & curve,const std::function<void ()> & propertyCallback,const std::function<void ()> & finishCallback)819 bool PipelineBase::Animate(const AnimationOption& option, const RefPtr<Curve>& curve,
820 const std::function<void()>& propertyCallback, const std::function<void()>& finishCallback)
821 {
822 return true;
823 }
824
Destroy()825 void PipelineBase::Destroy() {}
MaybeRelease()826 bool PipelineBase::MaybeRelease()
827 {
828 return AceType::MaybeRelease();
829 }
830
AddEtsCardTouchEventCallback(int32_t ponitId,EtsCardTouchEventCallback && callback)831 void PipelineBase::AddEtsCardTouchEventCallback(int32_t ponitId, EtsCardTouchEventCallback&& callback) {}
832
ConvertPxToVp(const Dimension & dimension) const833 double PipelineBase::ConvertPxToVp(const Dimension& dimension) const
834 {
835 if (dimension.Unit() == DimensionUnit::PX) {
836 return dimension.Value() / dipScale_;
837 }
838 return dimension.Value();
839 }
840
HyperlinkStartAbility(const std::string & address) const841 void PipelineBase::HyperlinkStartAbility(const std::string& address) const {}
842
RequestFrame()843 void PipelineBase::RequestFrame() {}
844
GetCurrentWindowRect() const845 Rect PipelineBase::GetCurrentWindowRect() const
846 {
847 return NG::windowRect_;
848 }
849
SetTextFieldManager(const RefPtr<ManagerInterface> & manager)850 void PipelineBase::SetTextFieldManager(const RefPtr<ManagerInterface>& manager)
851 {
852 textFieldManager_ = manager;
853 }
854
HasFloatTitle() const855 bool PipelineBase::HasFloatTitle() const
856 {
857 return true;
858 }
859
GetCustomTitleHeight()860 Dimension NG::PipelineContext::GetCustomTitleHeight()
861 {
862 return Dimension();
863 }
864
AddAccessibilityCallbackEvent(AccessibilityCallbackEventId event,int64_t parameter)865 void PipelineBase::AddAccessibilityCallbackEvent(AccessibilityCallbackEventId event, int64_t parameter)
866 {
867 }
868
SetUiDvsyncSwitch(bool on)869 void PipelineBase::SetUiDvsyncSwitch(bool on)
870 {
871 }
872
SetFontScale(float fontScale)873 void PipelineBase::SetFontScale(float fontScale)
874 {
875 fontScale_ = fontScale;
876 }
877
CatchInteractiveAnimations(const std::function<void ()> & animationCallback)878 bool NG::PipelineContext::CatchInteractiveAnimations(const std::function<void()>& animationCallback)
879 {
880 return false;
881 }
882
CheckThreadSafe() const883 bool NG::PipelineContext::CheckThreadSafe() const
884 {
885 return false;
886 }
FlushUITaskWithSingleDirtyNode(const RefPtr<NG::FrameNode> & node)887 void NG::PipelineContext::FlushUITaskWithSingleDirtyNode(const RefPtr<NG::FrameNode>& node)
888 {
889 CHECK_NULL_VOID(node);
890 auto layoutProperty = node->GetLayoutProperty();
891 CHECK_NULL_VOID(layoutProperty);
892 auto layoutConstraint = node->GetLayoutConstraint();
893 if (layoutProperty->GetLayoutRect()) {
894 node->SetActive(true, true);
895 node->Measure(std::nullopt);
896 node->Layout();
897 } else {
898 auto ancestorNodeOfFrame = node->GetAncestorNodeOfFrame();
899 node->Measure(layoutConstraint);
900 node->Layout();
901 }
902 }
903
ScopedLayout(PipelineContext * pipeline)904 NG::ScopedLayout::ScopedLayout(PipelineContext* pipeline) {}
~ScopedLayout()905 NG::ScopedLayout::~ScopedLayout() {}
906 } // namespace OHOS::Ace
907 // pipeline_base ===============================================================
908