• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 #include "core/interfaces/native/node/navigation_modifier.h"
16 
17 #include "base/geometry/calc_dimension.h"
18 #include "core/components/common/layout/constants.h"
19 #include "core/components_ng/base/frame_node.h"
20 #include "core/components_ng/base/view_abstract.h"
21 #include "core/components_ng/pattern/navigation/navigation_declaration.h"
22 #include "core/components_ng/pattern/navigation/navigation_model_ng.h"
23 #include "core/pipeline/base/element_register.h"
24 
25 namespace OHOS::Ace::NG {
26 constexpr int32_t NAV_BAR_POSITION_RANGE_MODIFIER = 1;
27 constexpr int32_t NAVIGATION_MODE_RANGE_MODIFIER = 2;
28 constexpr int32_t DEFAULT_NAV_BAR_WIDTH_FOR_MODIFIER = 240;
29 constexpr int32_t DEFAULT_SAFE_AREA_TYPE = 0b1;
30 constexpr int32_t DEFAULT_SAFE_AREA_EDGE = 0b1111;
SetHideToolBar(ArkUINodeHandle node,ArkUI_Bool hide,ArkUI_Bool animated)31 void SetHideToolBar(ArkUINodeHandle node, ArkUI_Bool hide, ArkUI_Bool animated)
32 {
33     auto* frameNode = reinterpret_cast<FrameNode*>(node);
34     CHECK_NULL_VOID(frameNode);
35     NavigationModelNG::SetHideToolBar(frameNode, hide, animated);
36 }
37 
ResetHideToolBar(ArkUINodeHandle node)38 void ResetHideToolBar(ArkUINodeHandle node)
39 {
40     auto* frameNode = reinterpret_cast<FrameNode*>(node);
41     CHECK_NULL_VOID(frameNode);
42     NavigationModelNG::SetHideToolBar(frameNode, false, false);
43 }
44 
SetEnableModeChangeAnimation(ArkUINodeHandle node,ArkUI_Bool isEnable)45 void SetEnableModeChangeAnimation(ArkUINodeHandle node, ArkUI_Bool isEnable)
46 {
47     auto* frameNode = reinterpret_cast<FrameNode*>(node);
48     CHECK_NULL_VOID(frameNode);
49     NavigationModelNG::SetEnableModeChangeAnimation(frameNode, isEnable);
50 }
51 
ResetEnableModeChangeAnimation(ArkUINodeHandle node)52 void ResetEnableModeChangeAnimation(ArkUINodeHandle node)
53 {
54     auto* frameNode = reinterpret_cast<FrameNode*>(node);
55     CHECK_NULL_VOID(frameNode);
56     NavigationModelNG::SetEnableModeChangeAnimation(frameNode, true);
57 }
58 
SetMinContentWidth(ArkUINodeHandle node,ArkUI_Float32 value,int unit)59 void SetMinContentWidth(ArkUINodeHandle node, ArkUI_Float32 value, int unit)
60 {
61     auto* frameNode = reinterpret_cast<FrameNode*>(node);
62     CHECK_NULL_VOID(frameNode);
63     CalcDimension width = Dimension(value, static_cast<OHOS::Ace::DimensionUnit>(unit));
64     NavigationModelNG::SetMinContentWidth(frameNode, width);
65 }
66 
ResetMinContentWidth(ArkUINodeHandle node)67 void ResetMinContentWidth(ArkUINodeHandle node)
68 {
69     auto* frameNode = reinterpret_cast<FrameNode*>(node);
70     CHECK_NULL_VOID(frameNode);
71     NavigationModelNG::SetMinContentWidth(frameNode, DEFAULT_MIN_CONTENT_WIDTH);
72 }
73 
SetMinNavBarWidth(ArkUINodeHandle node,ArkUI_Float32 minValue,int minUnit)74 void SetMinNavBarWidth(ArkUINodeHandle node, ArkUI_Float32 minValue, int minUnit)
75 {
76     auto* frameNode = reinterpret_cast<FrameNode*>(node);
77     CHECK_NULL_VOID(frameNode);
78     CalcDimension minNavBarWidth = Dimension(minValue, static_cast<OHOS::Ace::DimensionUnit>(minUnit));
79     if (LessNotEqual(minNavBarWidth.Value(), 0.0)) {
80         minNavBarWidth = DEFAULT_MIN_NAV_BAR_WIDTH;
81     }
82 
83     NavigationModelNG::SetMinNavBarWidth(frameNode, minNavBarWidth);
84 }
85 
ResetMinNavBarWidth(ArkUINodeHandle node)86 void ResetMinNavBarWidth(ArkUINodeHandle node)
87 {
88     auto* frameNode = reinterpret_cast<FrameNode*>(node);
89     CHECK_NULL_VOID(frameNode);
90     CalcDimension minNavBarWidth = DEFAULT_MIN_NAV_BAR_WIDTH;
91     NavigationModelNG::SetMinNavBarWidth(frameNode, minNavBarWidth);
92 }
93 
SetMaxNavBarWidth(ArkUINodeHandle node,ArkUI_Float32 maxValue,int maxUnit)94 void SetMaxNavBarWidth(ArkUINodeHandle node, ArkUI_Float32 maxValue, int maxUnit)
95 {
96     auto* frameNode = reinterpret_cast<FrameNode*>(node);
97     CHECK_NULL_VOID(frameNode);
98     CalcDimension maxNavBarWidth = Dimension(maxValue, static_cast<OHOS::Ace::DimensionUnit>(maxUnit));
99     if (LessNotEqual(maxNavBarWidth.Value(), 0.0)) {
100         maxNavBarWidth = DEFAULT_MAX_NAV_BAR_WIDTH;
101     }
102 
103     NavigationModelNG::SetMaxNavBarWidth(frameNode, maxNavBarWidth);
104 }
105 
ResetMaxNavBarWidth(ArkUINodeHandle node)106 void ResetMaxNavBarWidth(ArkUINodeHandle node)
107 {
108     auto* frameNode = reinterpret_cast<FrameNode*>(node);
109     CHECK_NULL_VOID(frameNode);
110     CalcDimension maxNavBarWidth = DEFAULT_MAX_NAV_BAR_WIDTH;
111     NavigationModelNG::SetMaxNavBarWidth(frameNode, maxNavBarWidth);
112 }
113 
SetNavBarWidth(ArkUINodeHandle node,ArkUI_Float32 value,int unit)114 void SetNavBarWidth(ArkUINodeHandle node, ArkUI_Float32 value, int unit)
115 {
116     auto* frameNode = reinterpret_cast<FrameNode*>(node);
117     CHECK_NULL_VOID(frameNode);
118     CalcDimension width = Dimension(value, static_cast<OHOS::Ace::DimensionUnit>(unit));
119     NavigationModelNG::SetNavBarWidth(frameNode, width);
120 }
121 
ResetNavBarWidth(ArkUINodeHandle node)122 void ResetNavBarWidth(ArkUINodeHandle node)
123 {
124     auto* frameNode = reinterpret_cast<FrameNode*>(node);
125     CHECK_NULL_VOID(frameNode);
126     CalcDimension navBarWidth;
127     navBarWidth.SetValue(DEFAULT_NAV_BAR_WIDTH_FOR_MODIFIER);
128     NavigationModelNG::SetNavBarWidth(frameNode, navBarWidth);
129 }
130 
SetNavBarPosition(ArkUINodeHandle node,int32_t value)131 void SetNavBarPosition(ArkUINodeHandle node, int32_t value)
132 {
133     auto* frameNode = reinterpret_cast<FrameNode*>(node);
134     CHECK_NULL_VOID(frameNode);
135     if (value >= 0 && value <= NAV_BAR_POSITION_RANGE_MODIFIER) {
136         NavigationModelNG::SetNavBarPosition(frameNode, static_cast<NG::NavBarPosition>(value));
137     } else {
138         NavigationModelNG::SetNavBarPosition(frameNode, NG::NavBarPosition::START);
139     }
140 }
141 
ResetNavBarPosition(ArkUINodeHandle node)142 void ResetNavBarPosition(ArkUINodeHandle node)
143 {
144     auto* frameNode = reinterpret_cast<FrameNode*>(node);
145     CHECK_NULL_VOID(frameNode);
146     NavigationModelNG::SetNavBarPosition(frameNode, NG::NavBarPosition::START);
147 }
148 
SetHideNavBar(ArkUINodeHandle node,ArkUI_Bool hideNavBar)149 void SetHideNavBar(ArkUINodeHandle node, ArkUI_Bool hideNavBar)
150 {
151     auto* frameNode = reinterpret_cast<FrameNode*>(node);
152     CHECK_NULL_VOID(frameNode);
153     NavigationModelNG::SetHideNavBar(frameNode, hideNavBar);
154 }
155 
ResetHideNavBar(ArkUINodeHandle node)156 void ResetHideNavBar(ArkUINodeHandle node)
157 {
158     auto* frameNode = reinterpret_cast<FrameNode*>(node);
159     CHECK_NULL_VOID(frameNode);
160     NavigationModelNG::SetHideNavBar(frameNode, false);
161 }
162 
SetSubtitle(ArkUINodeHandle node,const char * subtitle)163 void SetSubtitle(ArkUINodeHandle node, const char* subtitle)
164 {
165     auto* frameNode = reinterpret_cast<FrameNode*>(node);
166     CHECK_NULL_VOID(frameNode);
167     std::string value = subtitle;
168     NavigationModelNG::SetSubtitle(frameNode, value);
169 }
170 
ResetSubtitle(ArkUINodeHandle node)171 void ResetSubtitle(ArkUINodeHandle node)
172 {
173     auto* frameNode = reinterpret_cast<FrameNode*>(node);
174     CHECK_NULL_VOID(frameNode);
175     NavigationModelNG::SetSubtitle(frameNode, "");
176 }
177 
SetHideBackButton(ArkUINodeHandle node,ArkUI_Bool hideBackButton)178 void SetHideBackButton(ArkUINodeHandle node, ArkUI_Bool hideBackButton)
179 {
180     auto* frameNode = reinterpret_cast<FrameNode*>(node);
181     CHECK_NULL_VOID(frameNode);
182     NavigationModelNG::SetHideBackButton(frameNode, hideBackButton);
183 }
184 
ResetHideBackButton(ArkUINodeHandle node)185 void ResetHideBackButton(ArkUINodeHandle node)
186 {
187     auto* frameNode = reinterpret_cast<FrameNode*>(node);
188     CHECK_NULL_VOID(frameNode);
189     NavigationModelNG::SetHideBackButton(frameNode, false);
190 }
191 
SetTitleMode(ArkUINodeHandle node,int32_t value)192 void SetTitleMode(ArkUINodeHandle node, int32_t value)
193 {
194     auto* frameNode = reinterpret_cast<FrameNode*>(node);
195     CHECK_NULL_VOID(frameNode);
196     NavigationModelNG::SetTitleMode(frameNode, static_cast<NG::NavigationTitleMode>(value));
197 }
198 
ResetTitleMode(ArkUINodeHandle node)199 void ResetTitleMode(ArkUINodeHandle node)
200 {
201     auto* frameNode = reinterpret_cast<FrameNode*>(node);
202     CHECK_NULL_VOID(frameNode);
203     NavigationModelNG::SetTitleMode(frameNode, NG::NavigationTitleMode::FREE);
204 }
205 
SetUsrNavigationMode(ArkUINodeHandle node,int32_t value)206 void SetUsrNavigationMode(ArkUINodeHandle node, int32_t value)
207 {
208     auto* frameNode = reinterpret_cast<FrameNode*>(node);
209     CHECK_NULL_VOID(frameNode);
210     if (value >= 0 && value <= NAVIGATION_MODE_RANGE_MODIFIER) {
211         NavigationModelNG::SetUsrNavigationMode(frameNode, static_cast<NG::NavigationMode>(value));
212     } else {
213         NavigationModelNG::SetUsrNavigationMode(frameNode, NG::NavigationMode::AUTO);
214     }
215 }
ResetUsrNavigationMode(ArkUINodeHandle node)216 void ResetUsrNavigationMode(ArkUINodeHandle node)
217 {
218     auto* frameNode = reinterpret_cast<FrameNode*>(node);
219     CHECK_NULL_VOID(frameNode);
220     NavigationModelNG::SetUsrNavigationMode(frameNode, NG::NavigationMode::AUTO);
221 }
222 
SetNavHideTitleBar(ArkUINodeHandle node,ArkUI_Bool hide,ArkUI_Bool animated)223 void SetNavHideTitleBar(ArkUINodeHandle node, ArkUI_Bool hide, ArkUI_Bool animated)
224 {
225     auto* frameNode = reinterpret_cast<FrameNode*>(node);
226     CHECK_NULL_VOID(frameNode);
227     NavigationModelNG::SetHideTitleBar(frameNode, hide, animated);
228 }
229 
ResetNavHideTitleBar(ArkUINodeHandle node)230 void ResetNavHideTitleBar(ArkUINodeHandle node)
231 {
232     auto* frameNode = reinterpret_cast<FrameNode*>(node);
233     CHECK_NULL_VOID(frameNode);
234     NavigationModelNG::SetHideTitleBar(frameNode, false, false);
235 }
236 
SetEnableDragBar(ArkUINodeHandle node,ArkUI_Bool enableDragBar)237 void SetEnableDragBar(ArkUINodeHandle node, ArkUI_Bool enableDragBar)
238 {
239     auto* frameNode = reinterpret_cast<FrameNode*>(node);
240     CHECK_NULL_VOID(frameNode);
241     NavigationModelNG::SetEnableDragBar(frameNode, enableDragBar);
242 }
243 
ResetEnableDragBar(ArkUINodeHandle node)244 void ResetEnableDragBar(ArkUINodeHandle node)
245 {
246     auto* frameNode = reinterpret_cast<FrameNode*>(node);
247     CHECK_NULL_VOID(frameNode);
248     // default value of navigation's enableDragBar is false
249     NavigationModelNG::SetEnableDragBar(frameNode, false);
250 }
251 
SetNavIgnoreLayoutSafeArea(ArkUINodeHandle node,const char * typeStr,const char * edgesStr)252 void SetNavIgnoreLayoutSafeArea(ArkUINodeHandle node, const char* typeStr, const char* edgesStr)
253 {
254     auto* frameNode = reinterpret_cast<FrameNode*>(node);
255     CHECK_NULL_VOID(frameNode);
256     NG::SafeAreaExpandOpts opts { .type = NG::SAFE_AREA_TYPE_SYSTEM, .edges = NG::SAFE_AREA_EDGE_ALL };
257     uint32_t safeAreaType = NG::SAFE_AREA_TYPE_NONE;
258     uint32_t safeAreaEdge = NG::SAFE_AREA_EDGE_NONE;
259     std::string safeAreaTypeStr = std::string(typeStr);
260     std::string safeAreaEdgeStr = std::string(edgesStr);
261     if (safeAreaTypeStr == "" || safeAreaEdgeStr == "") {
262         NG::SafeAreaExpandOpts opts { .type = NG::SAFE_AREA_TYPE_NONE, .edges = NG::SAFE_AREA_EDGE_NONE};
263         NavigationModelNG::SetIgnoreLayoutSafeArea(frameNode, opts);
264         return;
265     }
266     std::string delimiter = "|";
267     size_t pos = 0;
268     std::string type;
269     std::string edges;
270     while ((pos = safeAreaTypeStr.find(delimiter)) != std::string::npos) {
271         type = safeAreaTypeStr.substr(0, pos);
272         safeAreaType |= (1 << StringUtils::StringToUint(type));
273         safeAreaTypeStr.erase(0, pos + delimiter.length());
274     }
275     safeAreaType |= (1 << StringUtils::StringToUint(safeAreaTypeStr));
276     pos = 0;
277     while ((pos = safeAreaEdgeStr.find(delimiter)) != std::string::npos) {
278         edges = safeAreaEdgeStr.substr(0, pos);
279         safeAreaEdge |= (1 << StringUtils::StringToUint(edges));
280         safeAreaEdgeStr.erase(0, pos + delimiter.length());
281     }
282     safeAreaEdge |= (1 << StringUtils::StringToUint(safeAreaEdgeStr));
283     opts.type = safeAreaType;
284     opts.edges = safeAreaEdge;
285     NavigationModelNG::SetIgnoreLayoutSafeArea(frameNode, opts);
286 }
287 
ResetNavIgnoreLayoutSafeArea(ArkUINodeHandle node)288 void ResetNavIgnoreLayoutSafeArea(ArkUINodeHandle node)
289 {
290     auto* frameNode = reinterpret_cast<FrameNode*>(node);
291     CHECK_NULL_VOID(frameNode);
292     NG::SafeAreaExpandOpts opts;
293     opts.type = DEFAULT_SAFE_AREA_TYPE;
294     opts.edges = DEFAULT_SAFE_AREA_EDGE;
295     NavigationModelNG::SetIgnoreLayoutSafeArea(frameNode, opts);
296 }
297 
SetNavTitle(ArkUINodeHandle node,ArkUINavigationTitleInfo titleInfo,ArkUINavigationTitlebarOptions options)298 void SetNavTitle(ArkUINodeHandle node, ArkUINavigationTitleInfo titleInfo, ArkUINavigationTitlebarOptions options)
299 {
300     auto* frameNode = reinterpret_cast<FrameNode*>(node);
301     CHECK_NULL_VOID(frameNode);
302     std::string mainTitleString = std::string(titleInfo.mainTitle);
303     std::string subTitleString = std::string(titleInfo.subTitle);
304     NG::NavigationTitleInfo ngTitleInfo = { titleInfo.hasSubTitle, titleInfo.hasMainTitle,
305         subTitleString, mainTitleString };
306     NavigationModelNG::ParseCommonTitle(frameNode, ngTitleInfo);
307     NG::NavigationTitlebarOptions finalOptions;
308     if (options.colorValue.isSet) {
309         finalOptions.bgOptions.color = Color(options.colorValue.value);
310     }
311     if (options.blurStyle.isSet) {
312         finalOptions.bgOptions.blurStyle = static_cast<BlurStyle>(options.blurStyle.value);
313     }
314     if (options.barStyle.isSet) {
315         finalOptions.brOptions.barStyle = static_cast<NG::BarStyle>(options.barStyle.value);
316     }
317     if (options.paddingStart.isSet) {
318         finalOptions.brOptions.paddingStart = CalcDimension(static_cast<double>(options.paddingStart.dimension.value),
319             static_cast<DimensionUnit>(options.paddingStart.dimension.units));
320     }
321     if (options.paddingEnd.isSet) {
322         finalOptions.brOptions.paddingEnd = CalcDimension(static_cast<double>(options.paddingEnd.dimension.value),
323             static_cast<DimensionUnit>(options.paddingEnd.dimension.units));
324     }
325     if (options.enableHoverMode.isSet) {
326         finalOptions.enableHoverMode = options.enableHoverMode.value;
327     }
328     NavigationModelNG::SetTitlebarOptions(frameNode, std::move(finalOptions));
329 }
330 
ResetNavTitle(ArkUINodeHandle node)331 void ResetNavTitle(ArkUINodeHandle node)
332 {
333     auto* frameNode = reinterpret_cast<FrameNode*>(node);
334     CHECK_NULL_VOID(frameNode);
335     NG::NavigationTitleInfo ngTitleInfo = { false, false, "", "" };
336     NavigationModelNG::ParseCommonTitle(frameNode, ngTitleInfo);
337     NavigationTitlebarOptions options;
338     NavigationModelNG::SetTitlebarOptions(frameNode, std::move(options));
339 }
340 
SetNavMenus(ArkUINodeHandle node,ArkUIBarItem * items,ArkUI_Uint32 length)341 void SetNavMenus(ArkUINodeHandle node, ArkUIBarItem* items, ArkUI_Uint32 length)
342 {
343     auto* frameNode = reinterpret_cast<FrameNode*>(node);
344     CHECK_NULL_VOID(frameNode);
345     CHECK_NULL_VOID(items);
346     std::vector<NG::BarItem> menuItems;
347     for (uint32_t i = 0; i < length; i++) {
348         NG::BarItem menuItem;
349         if (items[i].text.isSet) {
350             menuItem.text = items[i].text.value;
351         }
352         if (items[i].icon.isSet) {
353             menuItem.icon = items[i].icon.value;
354         }
355         if (items[i].isEnable.isSet) {
356             menuItem.isEnabled = items[i].isEnable.value;
357         }
358         menuItems.push_back(menuItem);
359         if (items[i].text.value) {
360             delete[] items[i].text.value;
361             items[i].text.value = nullptr;
362         }
363         if (items[i].icon.value) {
364             delete[] items[i].icon.value;
365             items[i].icon.value = nullptr;
366         }
367     }
368     NavigationModelNG::SetMenuItems(frameNode, std::move(menuItems));
369 }
370 
ResetNavMenus(ArkUINodeHandle node)371 void ResetNavMenus(ArkUINodeHandle node)
372 {
373     auto* frameNode = reinterpret_cast<FrameNode*>(node);
374     CHECK_NULL_VOID(frameNode);
375     std::vector<NG::BarItem> menuItems;
376     NavigationModelNG::SetMenuItems(frameNode, std::move(menuItems));
377 }
378 
SetNavMenuItemAction(ArkUINodeHandle node,void * action,ArkUI_Uint32 index)379 void SetNavMenuItemAction(ArkUINodeHandle node, void* action, ArkUI_Uint32 index)
380 {
381     auto* frameNode = reinterpret_cast<FrameNode*>(node);
382     CHECK_NULL_VOID(frameNode);
383     auto actionFunc = reinterpret_cast<std::function<void()>*>(action);
384     NavigationModelNG::SetMenuItemAction(frameNode, std::move(*actionFunc), index);
385 }
386 
SetNavMenuItemSymbol(ArkUINodeHandle node,void * symbol,ArkUI_Uint32 index)387 void SetNavMenuItemSymbol(ArkUINodeHandle node, void* symbol, ArkUI_Uint32 index)
388 {
389     auto* frameNode = reinterpret_cast<FrameNode*>(node);
390     CHECK_NULL_VOID(frameNode);
391     auto iconFunc = reinterpret_cast<std::function<void(WeakPtr<NG::FrameNode>)>*>(symbol);
392     NavigationModelNG::SetMenuItemSymbol(frameNode, std::move(*iconFunc), index);
393 }
394 
SetNavigationRecoverable(ArkUINodeHandle node,ArkUI_Bool recoverable)395 void SetNavigationRecoverable(ArkUINodeHandle node, ArkUI_Bool recoverable)
396 {
397     auto* frameNode = reinterpret_cast<FrameNode*>(node);
398     CHECK_NULL_VOID(frameNode);
399     NavigationModelNG::SetRecoverable(frameNode, recoverable);
400 }
401 
ResetNavigationRecoverable(ArkUINodeHandle node)402 void ResetNavigationRecoverable(ArkUINodeHandle node)
403 {
404     auto* frameNode = reinterpret_cast<FrameNode*>(node);
405     CHECK_NULL_VOID(frameNode);
406     // default value of navigation's recoverable is false
407     NavigationModelNG::SetRecoverable(frameNode, false);
408 }
409 
410 
411 namespace NodeModifier {
GetNavigationModifier()412 const ArkUINavigationModifier* GetNavigationModifier()
413 {
414     static const ArkUINavigationModifier modifier = {
415         SetHideToolBar,
416         ResetHideToolBar,
417         SetEnableModeChangeAnimation,
418         ResetEnableModeChangeAnimation,
419         SetHideNavBar,
420         ResetHideNavBar,
421         SetTitleMode,
422         ResetTitleMode,
423         SetHideBackButton,
424         ResetHideBackButton,
425         SetSubtitle,
426         ResetSubtitle,
427         ResetUsrNavigationMode,
428         SetUsrNavigationMode,
429         SetNavHideTitleBar,
430         ResetNavHideTitleBar,
431         SetNavBarPosition,
432         ResetNavBarPosition,
433         SetMinContentWidth,
434         ResetMinContentWidth,
435         SetMaxNavBarWidth,
436         ResetMaxNavBarWidth,
437         SetMinNavBarWidth,
438         ResetMinNavBarWidth,
439         SetNavBarWidth,
440         ResetNavBarWidth,
441         SetEnableDragBar,
442         ResetEnableDragBar,
443         SetNavIgnoreLayoutSafeArea,
444         ResetNavIgnoreLayoutSafeArea,
445         SetNavTitle,
446         ResetNavTitle,
447         SetNavMenus,
448         ResetNavMenus,
449         SetNavMenuItemAction,
450         SetNavMenuItemSymbol,
451         SetNavigationRecoverable,
452         ResetNavigationRecoverable,
453     };
454 
455     return &modifier;
456 }
457 
GetCJUINavigationModifier()458 const CJUINavigationModifier* GetCJUINavigationModifier()
459 {
460     static const CJUINavigationModifier modifier = {
461         SetHideToolBar,
462         ResetHideToolBar,
463         SetEnableModeChangeAnimation,
464         ResetEnableModeChangeAnimation,
465         SetHideNavBar,
466         ResetHideNavBar,
467         SetTitleMode,
468         ResetTitleMode,
469         SetHideBackButton,
470         ResetHideBackButton,
471         SetSubtitle,
472         ResetSubtitle,
473         ResetUsrNavigationMode,
474         SetUsrNavigationMode,
475         SetNavHideTitleBar,
476         ResetNavHideTitleBar,
477         SetNavBarPosition,
478         ResetNavBarPosition,
479         SetMinContentWidth,
480         ResetMinContentWidth,
481         SetMaxNavBarWidth,
482         ResetMaxNavBarWidth,
483         SetMinNavBarWidth,
484         ResetMinNavBarWidth,
485         SetNavBarWidth,
486         ResetNavBarWidth,
487         SetNavIgnoreLayoutSafeArea,
488         ResetNavIgnoreLayoutSafeArea
489     };
490 
491     return &modifier;
492 }
493 }
494 } // namespace OHOS::Ace::NG