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