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