• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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