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