1 /*
2  * Copyright (c) 2024 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 "ohos_nweb/bridge/ark_web_preference_impl.h"
17 
18 #include "base/bridge/ark_web_bridge_macros.h"
19 
20 namespace OHOS::ArkWeb {
21 
22 using ArkWebAccessMode = OHOS::NWeb::NWebPreference::AccessMode;
23 using ArkWebCacheModeFlag = OHOS::NWeb::NWebPreference::CacheModeFlag;
24 using ArkWebCopyOptionMode = OHOS::NWeb::NWebPreference::CopyOptionMode;
25 
ArkWebPreferenceImpl(std::shared_ptr<OHOS::NWeb::NWebPreference> nweb_preference)26 ArkWebPreferenceImpl::ArkWebPreferenceImpl(std::shared_ptr<OHOS::NWeb::NWebPreference> nweb_preference)
27     : nweb_preference_(nweb_preference)
28 {}
29 
UserAgent()30 ArkWebString ArkWebPreferenceImpl::UserAgent()
31 {
32     return ArkWebStringClassToStruct(nweb_preference_->UserAgent());
33 }
34 
PutUserAgent(const ArkWebString & ua)35 void ArkWebPreferenceImpl::PutUserAgent(const ArkWebString& ua)
36 {
37     nweb_preference_->PutUserAgent(ArkWebStringStructToClass(ua));
38 }
39 
DefaultUserAgent()40 ArkWebString ArkWebPreferenceImpl::DefaultUserAgent()
41 {
42     return ArkWebStringClassToStruct(nweb_preference_->DefaultUserAgent());
43 }
44 
CacheMode()45 int ArkWebPreferenceImpl::CacheMode()
46 {
47     return static_cast<int>(nweb_preference_->CacheMode());
48 }
49 
PutCacheMode(int flag)50 void ArkWebPreferenceImpl::PutCacheMode(int flag)
51 {
52     nweb_preference_->PutCacheMode(static_cast<ArkWebCacheModeFlag>(flag));
53 }
54 
IsNetworkBlocked()55 bool ArkWebPreferenceImpl::IsNetworkBlocked()
56 {
57     return nweb_preference_->IsNetworkBlocked();
58 }
59 
PutBlockNetwork(bool flag)60 void ArkWebPreferenceImpl::PutBlockNetwork(bool flag)
61 {
62     nweb_preference_->PutBlockNetwork(flag);
63 }
64 
GetScrollBarColor()65 uint32_t ArkWebPreferenceImpl::GetScrollBarColor()
66 {
67     return nweb_preference_->GetScrollBarColor();
68 }
69 
PutScrollBarColor(uint32_t color_value)70 void ArkWebPreferenceImpl::PutScrollBarColor(uint32_t color_value)
71 {
72     nweb_preference_->PutScrollBarColor(color_value);
73 }
74 
GetOverscrollMode()75 int ArkWebPreferenceImpl::GetOverscrollMode()
76 {
77     return nweb_preference_->GetOverscrollMode();
78 }
79 
PutOverscrollMode(int over_scroll_mode)80 void ArkWebPreferenceImpl::PutOverscrollMode(int over_scroll_mode)
81 {
82     nweb_preference_->PutOverscrollMode(over_scroll_mode);
83 }
84 
DefaultFontSize()85 int ArkWebPreferenceImpl::DefaultFontSize()
86 {
87     return nweb_preference_->DefaultFontSize();
88 }
89 
PutDefaultFontSize(int size)90 void ArkWebPreferenceImpl::PutDefaultFontSize(int size)
91 {
92     nweb_preference_->PutDefaultFontSize(size);
93 }
94 
GetPinchSmoothMode()95 bool ArkWebPreferenceImpl::GetPinchSmoothMode()
96 {
97     return nweb_preference_->GetPinchSmoothMode();
98 }
99 
PutPinchSmoothMode(bool flag)100 void ArkWebPreferenceImpl::PutPinchSmoothMode(bool flag)
101 {
102     nweb_preference_->PutPinchSmoothMode(flag);
103 }
104 
IsDataBaseEnabled()105 bool ArkWebPreferenceImpl::IsDataBaseEnabled()
106 {
107     return nweb_preference_->IsDataBaseEnabled();
108 }
109 
PutDatabaseAllowed(bool flag)110 void ArkWebPreferenceImpl::PutDatabaseAllowed(bool flag)
111 {
112     nweb_preference_->PutDatabaseAllowed(flag);
113 }
114 
IsMultiWindowAccess()115 bool ArkWebPreferenceImpl::IsMultiWindowAccess()
116 {
117     return nweb_preference_->IsMultiWindowAccess();
118 }
119 
PutMultiWindowAccess(bool flag)120 void ArkWebPreferenceImpl::PutMultiWindowAccess(bool flag)
121 {
122     nweb_preference_->PutMultiWindowAccess(flag);
123 }
124 
IsJavaScriptAllowed()125 bool ArkWebPreferenceImpl::IsJavaScriptAllowed()
126 {
127     return nweb_preference_->IsJavaScriptAllowed();
128 }
129 
PutJavaScriptEnabled(bool flag)130 void ArkWebPreferenceImpl::PutJavaScriptEnabled(bool flag)
131 {
132     nweb_preference_->PutJavaScriptEnabled(flag);
133 }
134 
DarkSchemeEnabled()135 int ArkWebPreferenceImpl::DarkSchemeEnabled()
136 {
137     return nweb_preference_->DarkSchemeEnabled();
138 }
139 
PutDarkSchemeEnabled(int dark_scheme)140 void ArkWebPreferenceImpl::PutDarkSchemeEnabled(int dark_scheme)
141 {
142     nweb_preference_->PutDarkSchemeEnabled(dark_scheme);
143 }
144 
IsDomStorageEnabled()145 bool ArkWebPreferenceImpl::IsDomStorageEnabled()
146 {
147     return nweb_preference_->IsDomStorageEnabled();
148 }
149 
PutDomStorageEnabled(bool flag)150 void ArkWebPreferenceImpl::PutDomStorageEnabled(bool flag)
151 {
152     nweb_preference_->PutDomStorageEnabled(flag);
153 }
154 
FontSizeLowerLimit()155 int ArkWebPreferenceImpl::FontSizeLowerLimit()
156 {
157     return nweb_preference_->FontSizeLowerLimit();
158 }
159 
PutFontSizeLowerLimit(int size)160 void ArkWebPreferenceImpl::PutFontSizeLowerLimit(int size)
161 {
162     nweb_preference_->PutFontSizeLowerLimit(size);
163 }
164 
GeoLocationAllowed()165 bool ArkWebPreferenceImpl::GeoLocationAllowed()
166 {
167     return nweb_preference_->GeolocationAllowed();
168 }
169 
PutGeoLocationAllowed(bool flag)170 void ArkWebPreferenceImpl::PutGeoLocationAllowed(bool flag)
171 {
172     nweb_preference_->PutGeolocationAllowed(flag);
173 }
174 
IsWebDebuggingAccess()175 bool ArkWebPreferenceImpl::IsWebDebuggingAccess()
176 {
177     return nweb_preference_->IsWebDebuggingAccess();
178 }
179 
PutWebDebuggingAccess(bool flag)180 void ArkWebPreferenceImpl::PutWebDebuggingAccess(bool flag)
181 {
182     nweb_preference_->PutWebDebuggingAccess(flag);
183 }
184 
EnableContentAccess()185 bool ArkWebPreferenceImpl::EnableContentAccess()
186 {
187     return nweb_preference_->EnableContentAccess();
188 }
189 
PutEnableContentAccess(bool flag)190 void ArkWebPreferenceImpl::PutEnableContentAccess(bool flag)
191 {
192     nweb_preference_->PutEnableContentAccess(flag);
193 }
194 
EnableRawFileAccess()195 bool ArkWebPreferenceImpl::EnableRawFileAccess()
196 {
197     return nweb_preference_->EnableRawFileAccess();
198 }
199 
PutEnableRawFileAccess(bool flag)200 void ArkWebPreferenceImpl::PutEnableRawFileAccess(bool flag)
201 {
202     nweb_preference_->PutEnableRawFileAccess(flag);
203 }
204 
IsImageLoadingAllowed()205 bool ArkWebPreferenceImpl::IsImageLoadingAllowed()
206 {
207     return nweb_preference_->IsImageLoadingAllowed();
208 }
209 
PutImageLoadingAllowed(bool flag)210 void ArkWebPreferenceImpl::PutImageLoadingAllowed(bool flag)
211 {
212     nweb_preference_->PutImageLoadingAllowed(flag);
213 }
214 
FixedFontFamilyName()215 ArkWebString ArkWebPreferenceImpl::FixedFontFamilyName()
216 {
217     return ArkWebStringClassToStruct(nweb_preference_->FixedFontFamilyName());
218 }
219 
PutFixedFontFamilyName(const ArkWebString & font)220 void ArkWebPreferenceImpl::PutFixedFontFamilyName(const ArkWebString& font)
221 {
222     nweb_preference_->PutFixedFontFamilyName(ArkWebStringStructToClass(font));
223 }
224 
SerifFontFamilyName()225 ArkWebString ArkWebPreferenceImpl::SerifFontFamilyName()
226 {
227     return ArkWebStringClassToStruct(nweb_preference_->SerifFontFamilyName());
228 }
229 
PutSerifFontFamilyName(const ArkWebString & font)230 void ArkWebPreferenceImpl::PutSerifFontFamilyName(const ArkWebString& font)
231 {
232     nweb_preference_->PutSerifFontFamilyName(ArkWebStringStructToClass(font));
233 }
234 
ZoomingForTextFactor()235 int ArkWebPreferenceImpl::ZoomingForTextFactor()
236 {
237     return nweb_preference_->ZoomingForTextFactor();
238 }
239 
PutZoomingForTextFactor(int text_zoom)240 void ArkWebPreferenceImpl::PutZoomingForTextFactor(int text_zoom)
241 {
242     nweb_preference_->PutZoomingForTextFactor(text_zoom);
243 }
244 
ForceDarkModeEnabled()245 int ArkWebPreferenceImpl::ForceDarkModeEnabled()
246 {
247     return nweb_preference_->ForceDarkModeEnabled();
248 }
249 
PutForceDarkModeEnabled(int force_dark)250 void ArkWebPreferenceImpl::PutForceDarkModeEnabled(int force_dark)
251 {
252     nweb_preference_->PutForceDarkModeEnabled(force_dark);
253 }
254 
IsLoadWithOverviewMode()255 bool ArkWebPreferenceImpl::IsLoadWithOverviewMode()
256 {
257     return nweb_preference_->IsLoadWithOverviewMode();
258 }
259 
PutLoadWithOverviewMode(bool flag)260 void ArkWebPreferenceImpl::PutLoadWithOverviewMode(bool flag)
261 {
262     nweb_preference_->PutLoadWithOverviewMode(flag);
263 }
264 
DefaultFixedFontSize()265 int ArkWebPreferenceImpl::DefaultFixedFontSize()
266 {
267     return nweb_preference_->DefaultFixedFontSize();
268 }
269 
PutDefaultFixedFontSize(int size)270 void ArkWebPreferenceImpl::PutDefaultFixedFontSize(int size)
271 {
272     nweb_preference_->PutDefaultFixedFontSize(size);
273 }
274 
CursiveFontFamilyName()275 ArkWebString ArkWebPreferenceImpl::CursiveFontFamilyName()
276 {
277     return ArkWebStringClassToStruct(nweb_preference_->CursiveFontFamilyName());
278 }
279 
PutCursiveFontFamilyName(const ArkWebString & font)280 void ArkWebPreferenceImpl::PutCursiveFontFamilyName(const ArkWebString& font)
281 {
282     nweb_preference_->PutCursiveFontFamilyName(ArkWebStringStructToClass(font));
283 }
284 
FantasyFontFamilyName()285 ArkWebString ArkWebPreferenceImpl::FantasyFontFamilyName()
286 {
287     return ArkWebStringClassToStruct(nweb_preference_->FantasyFontFamilyName());
288 }
289 
PutFantasyFontFamilyName(const ArkWebString & font)290 void ArkWebPreferenceImpl::PutFantasyFontFamilyName(const ArkWebString& font)
291 {
292     nweb_preference_->PutFantasyFontFamilyName(ArkWebStringStructToClass(font));
293 }
294 
ZoomingfunctionEnabled()295 bool ArkWebPreferenceImpl::ZoomingfunctionEnabled()
296 {
297     return nweb_preference_->ZoomingfunctionEnabled();
298 }
299 
PutZoomingFunctionEnabled(bool flag)300 void ArkWebPreferenceImpl::PutZoomingFunctionEnabled(bool flag)
301 {
302     nweb_preference_->PutZoomingFunctionEnabled(flag);
303 }
304 
GetMediaPlayGestureAccess()305 bool ArkWebPreferenceImpl::GetMediaPlayGestureAccess()
306 {
307     return nweb_preference_->GetMediaPlayGestureAccess();
308 }
309 
PutMediaPlayGestureAccess(bool flag)310 void ArkWebPreferenceImpl::PutMediaPlayGestureAccess(bool flag)
311 {
312     nweb_preference_->PutMediaPlayGestureAccess(flag);
313 }
314 
StandardFontFamilyName()315 ArkWebString ArkWebPreferenceImpl::StandardFontFamilyName()
316 {
317     return ArkWebStringClassToStruct(nweb_preference_->StandardFontFamilyName());
318 }
319 
PutStandardFontFamilyName(const ArkWebString & font)320 void ArkWebPreferenceImpl::PutStandardFontFamilyName(const ArkWebString& font)
321 {
322     nweb_preference_->PutStandardFontFamilyName(ArkWebStringStructToClass(font));
323 }
324 
SansSerifFontFamilyName()325 ArkWebString ArkWebPreferenceImpl::SansSerifFontFamilyName()
326 {
327     return ArkWebStringClassToStruct(nweb_preference_->SansSerifFontFamilyName());
328 }
329 
PutSansSerifFontFamilyName(const ArkWebString & font)330 void ArkWebPreferenceImpl::PutSansSerifFontFamilyName(const ArkWebString& font)
331 {
332     nweb_preference_->PutSansSerifFontFamilyName(ArkWebStringStructToClass(font));
333 }
334 
IsVerticalScrollBarAccess()335 bool ArkWebPreferenceImpl::IsVerticalScrollBarAccess()
336 {
337     return nweb_preference_->IsVerticalScrollBarAccess();
338 }
339 
PutVerticalScrollBarAccess(bool flag)340 void ArkWebPreferenceImpl::PutVerticalScrollBarAccess(bool flag)
341 {
342     nweb_preference_->PutVerticalScrollBarAccess(flag);
343 }
344 
IsHorizontalScrollBarAccess()345 bool ArkWebPreferenceImpl::IsHorizontalScrollBarAccess()
346 {
347     return nweb_preference_->IsHorizontalScrollBarAccess();
348 }
349 
PutHorizontalScrollBarAccess(bool flag)350 void ArkWebPreferenceImpl::PutHorizontalScrollBarAccess(bool flag)
351 {
352     nweb_preference_->PutHorizontalScrollBarAccess(flag);
353 }
354 
LogicalFontSizeLowerLimit()355 int ArkWebPreferenceImpl::LogicalFontSizeLowerLimit()
356 {
357     return nweb_preference_->LogicalFontSizeLowerLimit();
358 }
359 
PutLogicalFontSizeLowerLimit(int size)360 void ArkWebPreferenceImpl::PutLogicalFontSizeLowerLimit(int size)
361 {
362     nweb_preference_->PutLogicalFontSizeLowerLimit(size);
363 }
364 
DefaultTextEncodingFormat()365 ArkWebString ArkWebPreferenceImpl::DefaultTextEncodingFormat()
366 {
367     return ArkWebStringClassToStruct(nweb_preference_->DefaultTextEncodingFormat());
368 }
369 
PutDefaultTextEncodingFormat(const ArkWebString & encoding)370 void ArkWebPreferenceImpl::PutDefaultTextEncodingFormat(const ArkWebString& encoding)
371 {
372     nweb_preference_->PutDefaultTextEncodingFormat(ArkWebStringStructToClass(encoding));
373 }
374 
IsLoadImageFromNetworkDisabled()375 bool ArkWebPreferenceImpl::IsLoadImageFromNetworkDisabled()
376 {
377     return nweb_preference_->IsLoadImageFromNetworkDisabled();
378 }
379 
PutLoadImageFromNetworkDisabled(bool flag)380 void ArkWebPreferenceImpl::PutLoadImageFromNetworkDisabled(bool flag)
381 {
382     nweb_preference_->PutLoadImageFromNetworkDisabled(flag);
383 }
384 
EnableRawFileAccessFromFileURLs()385 bool ArkWebPreferenceImpl::EnableRawFileAccessFromFileURLs()
386 {
387     return nweb_preference_->EnableRawFileAccessFromFileURLs();
388 }
389 
PutEnableRawFileAccessFromFileURLs(bool flag)390 void ArkWebPreferenceImpl::PutEnableRawFileAccessFromFileURLs(bool flag)
391 {
392     nweb_preference_->PutEnableRawFileAccessFromFileURLs(flag);
393 }
394 
EnableUniversalAccessFromFileURLs()395 bool ArkWebPreferenceImpl::EnableUniversalAccessFromFileURLs()
396 {
397     return nweb_preference_->EnableUniversalAccessFromFileURLs();
398 }
399 
PutEnableUniversalAccessFromFileURLs(bool flag)400 void ArkWebPreferenceImpl::PutEnableUniversalAccessFromFileURLs(bool flag)
401 {
402     nweb_preference_->PutEnableUniversalAccessFromFileURLs(flag);
403 }
404 
IsCreateWindowsByJavaScriptAllowed()405 bool ArkWebPreferenceImpl::IsCreateWindowsByJavaScriptAllowed()
406 {
407     return nweb_preference_->IsCreateWindowsByJavaScriptAllowed();
408 }
409 
PutIsCreateWindowsByJavaScriptAllowed(bool flag)410 void ArkWebPreferenceImpl::PutIsCreateWindowsByJavaScriptAllowed(bool flag)
411 {
412     nweb_preference_->PutIsCreateWindowsByJavaScriptAllowed(flag);
413 }
414 
AccessModeForSecureOriginLoadFromInsecure()415 int ArkWebPreferenceImpl::AccessModeForSecureOriginLoadFromInsecure()
416 {
417     return static_cast<int>(nweb_preference_->AccessModeForSecureOriginLoadFromInsecure());
418 }
419 
PutAccessModeForSecureOriginLoadFromInsecure(int mode)420 void ArkWebPreferenceImpl::PutAccessModeForSecureOriginLoadFromInsecure(int mode)
421 {
422     nweb_preference_->PutAccessModeForSecureOriginLoadFromInsecure(static_cast<ArkWebAccessMode>(mode));
423 }
424 
GetCopyOptionMode()425 int ArkWebPreferenceImpl::GetCopyOptionMode()
426 {
427     return static_cast<int>(nweb_preference_->GetCopyOptionMode());
428 }
429 
PutCopyOptionMode(int copyOption)430 void ArkWebPreferenceImpl::PutCopyOptionMode(int copyOption)
431 {
432     nweb_preference_->PutCopyOptionMode(static_cast<ArkWebCopyOptionMode>(copyOption));
433 }
434 
SetNativeEmbedMode(bool flag)435 void ArkWebPreferenceImpl::SetNativeEmbedMode(bool flag)
436 {
437     nweb_preference_->SetNativeEmbedMode(flag);
438 }
439 
GetNativeEmbedMode()440 bool ArkWebPreferenceImpl::GetNativeEmbedMode()
441 {
442     return nweb_preference_->GetNativeEmbedMode();
443 }
444 
RegisterNativeEmbedRule(const ArkWebString & tag,const ArkWebString & type)445 void ArkWebPreferenceImpl::RegisterNativeEmbedRule(const ArkWebString& tag, const ArkWebString& type)
446 {
447     nweb_preference_->RegisterNativeEmbedRule(ArkWebStringStructToClass(tag), ArkWebStringStructToClass(type));
448 }
449 
SetScrollable(bool enable)450 void ArkWebPreferenceImpl::SetScrollable(bool enable)
451 {
452     nweb_preference_->SetScrollable(enable);
453 }
454 
GetScrollable()455 bool ArkWebPreferenceImpl::GetScrollable()
456 {
457     return nweb_preference_->GetScrollable();
458 }
459 
PutTextAutosizingEnabled(bool flag)460 void ArkWebPreferenceImpl::PutTextAutosizingEnabled(bool flag)
461 {
462     nweb_preference_->PutTextAutosizingEnabled(flag);
463 }
464 
SetViewportEnable(bool enable)465 void ArkWebPreferenceImpl::SetViewportEnable(bool enable)
466 {
467     nweb_preference_->SetViewportEnable(enable);
468 }
469 
SetNativeVideoPlayerConfig(bool enable,bool shouldOverlay)470 void ArkWebPreferenceImpl::SetNativeVideoPlayerConfig(bool enable, bool shouldOverlay)
471 {
472     nweb_preference_->SetNativeVideoPlayerConfig(enable, shouldOverlay);
473 }
474 
GetSurfaceId()475 ArkWebString ArkWebPreferenceImpl::GetSurfaceId()
476 {
477     std::string surfaceId = nweb_preference_->GetSurfaceId();
478     return ArkWebStringClassToStruct(surfaceId);
479 }
480 
SetSurfaceId(const ArkWebString & surfaceId)481 void ArkWebPreferenceImpl::SetSurfaceId(const ArkWebString& surfaceId)
482 {
483     nweb_preference_->SetSurfaceId(ArkWebStringStructToClass(surfaceId));
484 }
485 
PutOverlayScrollbarEnabled(bool enable)486 void ArkWebPreferenceImpl::PutOverlayScrollbarEnabled(bool enable)
487 {
488     nweb_preference_->PutOverlayScrollbarEnabled(enable);
489 }
490 
SetScrollable(bool enable,int32_t scrollType)491 void ArkWebPreferenceImpl::SetScrollable(bool enable, int32_t scrollType)
492 {
493     nweb_preference_->SetScrollable(enable, scrollType);
494 }
495 
SetBlurOnKeyboardHideMode(int enable)496 void ArkWebPreferenceImpl::SetBlurOnKeyboardHideMode(int enable)
497 {
498     nweb_preference_->SetBlurOnKeyboardHideMode(enable);
499 }
500 
501 } // namespace OHOS::ArkWeb
502