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