• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 <cstring>
17 #include <display_gralloc.h>
18 #include <functional>
19 #include <iservice_registry.h>
20 #include <securec.h>
21 #include <sstream>
22 #include <thread>
23 #include <unistd.h>
24 #include <unordered_map>
25 #include <vector>
26 #include <zlib.h>
27 
28 #include <ui/rs_surface_node.h>
29 #include "event_handler.h"
30 #include "nweb_test_log.h"
31 #include "nweb.h"
32 #include "nweb_handler_impl_test.h"
33 #include "nweb_handler_impl_test_for_intercept.h"
34 #include "nweb_cookie_manager.h"
35 #include "nweb_downloadlistener_impl_test.h"
36 #include "nweb_adapter_helper.h"
37 #include "nweb_hit_testresult.h"
38 #include "nweb_preference.h"
39 #include "nweb_input_event_consumer_test.h"
40 #include "nweb_javascript_result_callback_test.h"
41 #include "nweb_js_dialog_impl_test.h"
42 #include "nweb_cookie_test_callback.h"
43 #include "window.h"
44 
45 using namespace OHOS;
46 
47 namespace {
48 sptr<Rosen::Window> g_window = nullptr;
49 sptr<Rosen::Window> g_window2 = nullptr;
50 std::shared_ptr<OHOS::NWeb::NWeb> g_nweb = nullptr;
51 std::shared_ptr<OHOS::NWeb::NWeb> g_nweb2 = nullptr;
52 std::shared_ptr<OHOS::NWeb::NWebPreference> g_webSettings = nullptr;
53 std::shared_ptr<AppExecFwk::EventHandler> g_handler = nullptr;
54 std::string g_url = "www.baidu.com";
55 
56 std::unordered_map<std::string, std::string> g_argsMap;
57 const std::string ARG_URL = "--url";
58 const std::string ARG_DUMP = "--dump-path";
59 const std::string ARG_FRAME_INFO = "--frame-info";
60 const std::string ARG_ADD_WEB_ENGINE_ARG = "--add-args";
61 const std::string ARG_DELETE_WEB_ENGINE_ARG = "--delete-args";
62 const std::string ARG_MULTI_RENDER_PROCESS = "--multi-renderer-process";
63 const std::string ARG_NWEB_TEST_MOCK_BUNDLEPATH = "--bundle-installation-dir";
64 const std::string MOCK_INSTALLATION_DIR = "/data/app/el1/bundle/public/com.ohos.nweb";
65 const int DEFAULT_FONT_SIZE = 13;
66 const int DEFAULT_FONT_SIZE_TWO = 16;
67 const int DEFAULT_FONT_SIZE_MAX = 72;
68 const int MINI_LOGICAL_FONT_SIZE = 8;
69 const int TEXT_SIZE_PERCENT_MIN = 100;
70 const int TEXT_SIZE_PERCENT_MAX = 500;
71 const int TIME_SECONDS_FIVE = 5;
72 const int TIME_SECONDS_THREE = 3;
73 const int MINI_FONT_SIZE = 8;
74 const int STEP_TWO = 2;
75 const std::string ARG_WIDTH = "--width";
76 const std::string ARG_HEIGHT = "--height";
77 
78 const int DEFAULT_WIDTH = 2560;
79 const int DEFAULT_HEIGHT = 1396;
80 
InitArgs(int32_t argc,const char * const argv[])81 void InitArgs(int32_t argc, const char * const argv[])
82 {
83     constexpr int leastArgsCount = 2;
84     if (argc <= leastArgsCount) {
85         return;
86     }
87     for (auto i = leastArgsCount; i < argc; ++i) {
88         std::string arg = argv[i];
89         uint64_t pos = 0;
90         while (pos < arg.size()) {
91             if (arg[pos] == '=') {
92                 break;
93             }
94             ++pos;
95         }
96         if (pos == arg.size()) {
97             g_argsMap.emplace(std::make_pair(arg, ""));
98         } else {
99             g_argsMap.emplace(std::make_pair(arg.substr(0, pos), arg.substr(pos + 1)));
100         }
101     }
102 }
103 
HasArg(const std::string & arg)104 bool HasArg(const std::string &arg)
105 {
106     return (!g_argsMap.empty()) && (g_argsMap.find(arg) != g_argsMap.end());
107 }
108 
GetArgValue(const std::string & arg)109 std::string GetArgValue(const std::string &arg)
110 {
111     if (!HasArg(arg)) {
112         return "";
113     }
114     return g_argsMap.at(arg);
115 }
116 
GetNumFromArgs(const std::string & arg)117 uint32_t GetNumFromArgs(const std::string &arg)
118 {
119     if (!HasArg(arg)) {
120         return 0;
121     }
122     return std::stoi(GetArgValue(arg));
123 }
124 
GetWebEngineArgs(const std::string & arg)125 std::list<std::string> GetWebEngineArgs(const std::string &arg)
126 {
127     std::string webEngineArgValue = GetArgValue(arg);
128     std::list<std::string> webEngineArgList;
129     if (webEngineArgValue.empty()) {
130         return webEngineArgList;
131     }
132     uint32_t start = 0;
133     uint32_t pos = 0;
134     while (pos < webEngineArgValue.size()) {
135         if (webEngineArgValue[pos] == ',') {
136             webEngineArgList.emplace_back(webEngineArgValue.substr(start, pos - start));
137             pos++;
138             start = pos;
139         } else {
140             pos++;
141         }
142     }
143     webEngineArgList.emplace_back(webEngineArgValue.substr(start, pos - start));
144     webEngineArgList.emplace_back(ARG_NWEB_TEST_MOCK_BUNDLEPATH + "=" + MOCK_INSTALLATION_DIR);
145     return webEngineArgList;
146 }
147 
GetInitArgs()148 OHOS::NWeb::NWebInitArgs GetInitArgs()
149 {
150     OHOS::NWeb::NWebInitArgs initArgs = {
151         .dump_path = GetArgValue(ARG_DUMP),
152         .frame_info_dump = HasArg(ARG_FRAME_INFO) ? true : false,
153         .web_engine_args_to_add = GetWebEngineArgs(ARG_ADD_WEB_ENGINE_ARG),
154         .web_engine_args_to_delete = GetWebEngineArgs(ARG_DELETE_WEB_ENGINE_ARG),
155         .multi_renderer_process = HasArg(ARG_MULTI_RENDER_PROCESS) ? true : false,
156     };
157     return initArgs;
158 }
159 
CreateWindow()160 sptr<Rosen::Window> CreateWindow()
161 {
162     sptr<Rosen::WindowOption> option = new Rosen::WindowOption();
163     if (option == nullptr) {
164         TESTLOG_E("fail to new option.");
165         return nullptr;
166     }
167     int width = HasArg(ARG_WIDTH) ? GetNumFromArgs(ARG_WIDTH) : DEFAULT_WIDTH;
168     int height = HasArg(ARG_HEIGHT) ? GetNumFromArgs(ARG_HEIGHT) : DEFAULT_HEIGHT;
169     option->SetWindowRect({0, 0, width, height});
170     auto window = Rosen::Window::Create("nweb_test_window", option);
171     return window;
172 }
173 
RegistEventCb(sptr<Rosen::Window> window,std::shared_ptr<OHOS::NWeb::NWeb> nweb)174 void RegistEventCb(sptr<Rosen::Window> window, std::shared_ptr<OHOS::NWeb::NWeb> nweb)
175 {
176     if (window == nullptr) {
177         return;
178     }
179 
180     std::shared_ptr<Rosen::IInputEventConsumer> inputEventListener =
181         std::make_shared<NWeb::NWebInputEventConsumerTest>(nweb);
182 
183     window->SetInputEventConsumer(inputEventListener);
184 }
185 
TestPrepare()186 void TestPrepare()
187 {
188     TESTLOG_I("TestPrepare");
189     OHOS::NWeb::NWebHelper::Instance().SetBundlePath(MOCK_INSTALLATION_DIR);
190     if (!OHOS::NWeb::NWebAdapterHelper::Instance().Init(false)) {
191         TESTLOG_E("fail to init NWebAdapterHelper, test end");
192         return;
193     }
194     g_window = CreateWindow();
195     if (g_window == nullptr) {
196         return;
197     }
198 
199     g_nweb = NWeb::NWebAdapterHelper::Instance().CreateNWeb(
200         g_window->GetSurfaceNode()->GetSurface(), GetInitArgs());
201     if (g_nweb == nullptr) {
202         g_window = nullptr;
203         TESTLOG_E("fail to get nweb instance, test end");
204         return;
205     }
206     g_nweb->Resize(g_window->GetRequestRect().width_, g_window->GetRequestRect().height_);
207     RegistEventCb(g_window, g_nweb);
208 
209     TESTLOG_I("CreateNWeb SUCCESS");
210     auto nwebHandler = std::make_shared<OHOS::NWeb::NWebHandlerImplTest>();
211     if (nwebHandler == nullptr) {
212         TESTLOG_E("fail to new NWeb Handler, test end");
213         return;
214     }
215     g_nweb->SetNWebHandler(nwebHandler);
216     g_url = HasArg(ARG_URL) ? GetArgValue(ARG_URL) : "www.baidu.com"; // load www.baidu.com by default
217     TESTLOG_I("ready to load url=%{public}s", g_url.c_str());
218 
219     g_webSettings = g_nweb->GetPreference();
220 }
221 
TestPrepareWithClient(std::shared_ptr<OHOS::NWeb::NWebHandler> client)222 void TestPrepareWithClient(std::shared_ptr<OHOS::NWeb::NWebHandler> client)
223 {
224     TESTLOG_I("TestPrepare");
225     OHOS::NWeb::NWebHelper::Instance().SetBundlePath(MOCK_INSTALLATION_DIR);
226     if (!OHOS::NWeb::NWebAdapterHelper::Instance().Init(false)) {
227         TESTLOG_E("fail to init NWebAdapterHelper, test end");
228         return;
229     }
230 
231     g_window = CreateWindow();
232     if (g_window == nullptr) {
233         return;
234     }
235 
236     g_nweb = NWeb::NWebAdapterHelper::Instance().CreateNWeb(
237         g_window->GetSurfaceNode()->GetSurface(), GetInitArgs());
238     if (g_nweb == nullptr) {
239         g_window = nullptr;
240         TESTLOG_E("fail to get nweb instance, test end");
241         return;
242     }
243     g_nweb->Resize(g_window->GetRequestRect().width_, g_window->GetRequestRect().height_);
244     RegistEventCb(g_window, g_nweb);
245 
246     TESTLOG_I("CreateNWeb SUCCESS");
247     g_nweb->SetNWebHandler(client);
248     g_url = HasArg(ARG_URL) ? GetArgValue(ARG_URL) : "www.baidu.com"; // load www.baidu.com by default
249     TESTLOG_I("ready to load url=%{public}s", g_url.c_str());
250 
251     g_webSettings = g_nweb->GetPreference();
252 }
253 
TestWebSettingsForNormalWeb()254 void TestWebSettingsForNormalWeb()
255 {
256     if (g_webSettings != nullptr) {
257         g_webSettings->PutJavaScriptEnabled(true);
258         g_webSettings->PutIsCreateWindowsByJavaScriptAllowed(true);
259         g_webSettings->PutDomStorageEnabled(true);
260     }
261 }
262 
263 // create nweb and load url with fullscreen
Test1()264 void Test1()
265 {
266     TESTLOG_I("Test1 start");
267 
268     TestPrepare();
269     TestWebSettingsForNormalWeb();
270 
271     g_nweb->Load(g_url);
272     g_window->Show();
273 
274     TESTLOG_I("end");
275 }
276 
Test200()277 void Test200()
278 {
279     TESTLOG_I("Test200 start");
280 
281     TestPrepare();
282     TestWebSettingsForNormalWeb();
283 
284     if (g_webSettings != nullptr) {
285         bool content_access = g_webSettings->EnableContentAccess();
286         if (!content_access) {
287             TESTLOG_E("Error! content_access default value:%{public}d != true.", content_access);
288         } else {
289             TESTLOG_I("content_access default value: %{public}d", content_access);
290         }
291 
292         TESTLOG_I("Set content_access to false.");
293         g_webSettings->PutEnableContentAccess(false);
294         content_access = g_webSettings->EnableContentAccess();
295         if (content_access) {
296             TESTLOG_E("Error! content_access :%{public}d != false.", content_access);
297         } else {
298             TESTLOG_I("content_access=%{public}d", content_access);
299         }
300     }
301 
302     g_nweb->Load(g_url);
303     g_window->Show();
304 
305     TESTLOG_I("Test200 end");
306 }
307 
Test201()308 void Test201()
309 {
310     TESTLOG_I("Test201 start");
311 
312     TestPrepare();
313     TestWebSettingsForNormalWeb();
314 
315     if (g_webSettings != nullptr) {
316         bool file_access = g_webSettings->EnableRawFileAccess();
317         if (file_access) {
318             TESTLOG_E("Error! file_access default value:%{public}d != false.", file_access);
319         } else {
320             TESTLOG_I("file_access default value: %{public}d", file_access);
321         }
322 
323         TESTLOG_I("Set file_access to true.");
324         g_webSettings->PutEnableRawFileAccess(true);
325         file_access = g_webSettings->EnableRawFileAccess();
326         if (!file_access) {
327             TESTLOG_E("Error! file_access :%{public}d != true.", file_access);
328         } else {
329             TESTLOG_I("file_access=%{public}d", file_access);
330         }
331     }
332 
333     g_nweb->Load(g_url);
334     g_window->Show();
335 
336     TESTLOG_I("Test201 end");
337 }
338 
Test202()339 void Test202()
340 {
341     TESTLOG_I("Test202 start");
342 
343     TestPrepare();
344     TestWebSettingsForNormalWeb();
345 
346     if (g_webSettings != nullptr) {
347         bool file_access_from_file_urls = g_webSettings->EnableRawFileAccessFromFileURLs();
348         if (file_access_from_file_urls) {
349             TESTLOG_E("Error! file_access_from_file_urls default value:%{public}d != false.",
350                 file_access_from_file_urls);
351         } else {
352             TESTLOG_I("file_access_from_file_urls default value: %{public}d", file_access_from_file_urls);
353         }
354 
355         TESTLOG_I("Set file_access_from_file_urls to true.");
356         g_webSettings->PutEnableRawFileAccessFromFileURLs(true);
357         file_access_from_file_urls = g_webSettings->EnableRawFileAccessFromFileURLs();
358         if (!file_access_from_file_urls) {
359             TESTLOG_E("Error! file_access_from_file_urls :%{public}d != true.", file_access_from_file_urls);
360         } else {
361             TESTLOG_I("file_access_from_file_urls=%{public}d", file_access_from_file_urls);
362         }
363     }
364 
365     g_nweb->Load(g_url);
366     g_window->Show();
367 
368     TESTLOG_I("Test202 end");
369 }
370 
Test203()371 void Test203()
372 {
373     TESTLOG_I("Test203 start");
374 
375     TestPrepare();
376     TestWebSettingsForNormalWeb();
377 
378     if (g_webSettings != nullptr) {
379         bool universal_access_from_file_urls = g_webSettings->EnableUniversalAccessFromFileURLs();
380         if (universal_access_from_file_urls) {
381             TESTLOG_E("Error! universal_access_from_file_urls default value:%{public}d != false.",
382                 universal_access_from_file_urls);
383         } else {
384             TESTLOG_I("universal_access_from_file_urls default value: %{public}d", universal_access_from_file_urls);
385         }
386 
387         TESTLOG_I("Set universal_access_from_file_urls to true.");
388         g_webSettings->PutEnableUniversalAccessFromFileURLs(true);
389         universal_access_from_file_urls = g_webSettings->EnableUniversalAccessFromFileURLs();
390         if (!universal_access_from_file_urls) {
391             TESTLOG_E("Error! universal_access_from_file_urls :%{public}d != true.", universal_access_from_file_urls);
392         } else {
393             TESTLOG_I("universal_access_from_file_urls=%{public}d", universal_access_from_file_urls);
394         }
395     }
396 
397     g_nweb->Load(g_url);
398     g_window->Show();
399 
400     TESTLOG_I("Test203 end");
401 }
402 
Test204()403 void Test204()
404 {
405     TESTLOG_I("Test204 start");
406 
407     TestPrepare();
408     TestWebSettingsForNormalWeb();
409 
410     if (g_webSettings != nullptr) {
411         bool images_enabled_ = !g_webSettings->IsLoadImageFromNetworkDisabled();
412         if (!images_enabled_) {
413             TESTLOG_E("Error! images_enabled_ default value:%{public}d != true.", images_enabled_);
414         } else {
415             TESTLOG_I("images_enabled_ default value: %{public}d", images_enabled_);
416         }
417 
418         TESTLOG_I("Set images_enabled_ to false.");
419         g_webSettings->PutLoadImageFromNetworkDisabled(true);
420         images_enabled_ = !g_webSettings->IsLoadImageFromNetworkDisabled();
421         if (images_enabled_) {
422             TESTLOG_E("Error! images_enabled_ :%{public}d != false.", images_enabled_);
423         } else {
424             TESTLOG_I("images_enabled_=%{public}d", images_enabled_);
425         }
426     }
427 
428     g_nweb->Load(g_url);
429     g_window->Show();
430 
431     TESTLOG_I("Test204 end");
432 }
433 
Test205()434 void Test205()
435 {
436     TESTLOG_I("Test205 start");
437 
438     TestPrepare();
439     TestWebSettingsForNormalWeb();
440 
441     if (g_webSettings != nullptr) {
442         std::string cursive_font_family = g_webSettings->CursiveFontFamilyName();
443         if (cursive_font_family != "cursive") {
444             TESTLOG_E("Error! cursive_font_family default value:%{public}s != cursive.", cursive_font_family.c_str());
445         } else {
446             TESTLOG_I("cursive_font_family default value: %{public}s", cursive_font_family.c_str());
447         }
448 
449         TESTLOG_I("Set cursive_font_family to cursive.");
450         g_webSettings->PutCursiveFontFamilyName("fantasy");
451         cursive_font_family = g_webSettings->CursiveFontFamilyName();
452         if (cursive_font_family != "cursive") {
453             TESTLOG_E("Error! cursive_font_family :%{public}s != cursive.", cursive_font_family.c_str());
454         } else {
455             TESTLOG_I("cursive_font_family=%{public}s", cursive_font_family.c_str());
456         }
457     }
458 
459     g_nweb->Load(g_url);
460     g_window->Show();
461 
462     TESTLOG_I("Test205 end");
463 }
464 
Test206()465 void Test206()
466 {
467     TESTLOG_I("Test206 start");
468 
469     TestPrepare();
470     TestWebSettingsForNormalWeb();
471 
472     if (g_webSettings != nullptr) {
473         bool databases_enabled = g_webSettings->IsDataBaseEnabled();
474         if (databases_enabled) {
475             TESTLOG_E("Error! databases_enabled default value:%{public}d != false.", databases_enabled);
476         } else {
477             TESTLOG_I("databases_enabled default value: %{public}d", databases_enabled);
478         }
479 
480         TESTLOG_I("Set databases_enabled to true.");
481         g_webSettings->PutDatabaseAllowed(true);
482         databases_enabled = g_webSettings->IsDataBaseEnabled();
483         if (!databases_enabled) {
484             TESTLOG_E("Error! databases_enabled :%{public}d != true.", databases_enabled);
485         } else {
486             TESTLOG_I("databases_enabled=%{public}d", databases_enabled);
487         }
488     }
489 
490     g_nweb->Load(g_url);
491     g_window->Show();
492 
493     TESTLOG_I("Test206 end");
494 }
495 
Test207()496 void Test207()
497 {
498     TESTLOG_I("Test207 start");
499 
500     TestPrepare();
501     TestWebSettingsForNormalWeb();
502 
503     if (g_webSettings != nullptr) {
504         int default_fixed_font_size = g_webSettings->DefaultFixedFontSize();
505         if (default_fixed_font_size != DEFAULT_FONT_SIZE) {
506             TESTLOG_E("Error! default_fixed_font_size default value:%{public}d != 13.", default_fixed_font_size);
507         } else {
508             TESTLOG_I("default_fixed_font_size default value: %{public}d", default_fixed_font_size);
509         }
510 
511         TESTLOG_I("Set default_fixed_font_size to 72.");
512         g_webSettings->PutDefaultFixedFontSize(DEFAULT_FONT_SIZE_MAX);
513         default_fixed_font_size = g_webSettings->DefaultFixedFontSize();
514         if (default_fixed_font_size != DEFAULT_FONT_SIZE_MAX) {
515             TESTLOG_E("Error! default_fixed_font_size :%{public}d != 72.", default_fixed_font_size);
516         } else {
517             TESTLOG_I("default_fixed_font_size=%{public}d", default_fixed_font_size);
518         }
519     }
520 
521     g_nweb->Load(g_url);
522     g_window->Show();
523 
524     TESTLOG_I("Test207 end");
525 }
526 
Test208()527 void Test208()
528 {
529     TESTLOG_I("Test208 start");
530 
531     TestPrepare();
532     TestWebSettingsForNormalWeb();
533 
534     if (g_webSettings != nullptr) {
535         int default_font_size = g_webSettings->DefaultFontSize();
536         if (default_font_size != DEFAULT_FONT_SIZE_TWO) {
537             TESTLOG_E("Error! default_font_size default value:%{public}d != 16.", default_font_size);
538         } else {
539             TESTLOG_I("default_font_size default value: %{public}d", default_font_size);
540         }
541 
542         TESTLOG_I("Set default_font_size to 72.");
543         g_webSettings->PutDefaultFontSize(DEFAULT_FONT_SIZE_MAX);
544         default_font_size = g_webSettings->DefaultFontSize();
545         if (default_font_size != DEFAULT_FONT_SIZE_MAX) {
546             TESTLOG_E("Error! default_font_size :%{public}d != 72.", default_font_size);
547         } else {
548             TESTLOG_I("default_font_size=%{public}d", default_font_size);
549         }
550     }
551 
552     g_nweb->Load(g_url);
553     g_window->Show();
554 
555     TESTLOG_I("Test208 end");
556 }
557 
Test209()558 void Test209()
559 {
560     TESTLOG_I("Test209 start");
561 
562     TestPrepare();
563     TestWebSettingsForNormalWeb();
564 
565     if (g_webSettings != nullptr) {
566         std::string default_encoding = g_webSettings->DefaultTextEncodingFormat();
567         if (default_encoding != "UTF-8") {
568             TESTLOG_E("Error! default_encoding default value:%{public}s != UTF-8.", default_encoding.c_str());
569         } else {
570             TESTLOG_I("default_encoding default value: %{public}s", default_encoding.c_str());
571         }
572 
573         TESTLOG_I("Set default_encoding to gb2312.");
574         g_webSettings->PutDefaultTextEncodingFormat("gb2312");
575         default_encoding = g_webSettings->DefaultTextEncodingFormat();
576         if (default_encoding != "gb2312") {
577             TESTLOG_E("Error! default_encoding :%{public}s != gb2312.", default_encoding.c_str());
578         } else {
579             TESTLOG_I("default_encoding=%{public}s", default_encoding.c_str());
580         }
581     }
582 
583     std::stringstream ss;
584     ss << "<html><body><font size=7>编码格式</font></body></html>";
585 
586     g_nweb->LoadWithDataAndBaseUrl("", ss.str(), "text/html", "", "");
587     g_window->Show();
588 
589     TESTLOG_I("Test209 end");
590 }
591 
Test231()592 void Test231()
593 {
594     TESTLOG_I("Test231 start");
595 
596     TestPrepare();
597     TestWebSettingsForNormalWeb();
598 
599     if (g_webSettings != nullptr) {
600         std::string default_encoding = g_webSettings->DefaultTextEncodingFormat();
601         if (default_encoding != "UTF-8") {
602             TESTLOG_E("Error! default_encoding default value:%{public}s != UTF-8.", default_encoding.c_str());
603         } else {
604             TESTLOG_I("default_encoding default value: %{public}s", default_encoding.c_str());
605         }
606     }
607 
608     std::stringstream ss;
609     ss << "<html><body><font size=7>编码格式</font></body></html>";
610 
611     g_nweb->LoadWithDataAndBaseUrl("", ss.str(), "text/html", "", "");
612     g_window->Show();
613 
614     TESTLOG_I("Test231 end");
615 }
616 
Test210()617 void Test210()
618 {
619     TESTLOG_I("Test210 start");
620 
621     TestPrepare();
622 
623     if (g_webSettings != nullptr) {
624         g_webSettings->PutJavaScriptEnabled(true);
625         g_webSettings->PutIsCreateWindowsByJavaScriptAllowed(true);
626 
627         bool dom_storage = g_webSettings->IsDomStorageEnabled();
628         if (dom_storage) {
629             TESTLOG_E("Error! dom_storage default value:%{public}d != false.", dom_storage);
630         } else {
631             TESTLOG_I("dom_storage default value: %{public}d", dom_storage);
632         }
633 
634         TESTLOG_I("Set dom_storage to true.");
635         g_webSettings->PutDomStorageEnabled(true);
636         dom_storage = g_webSettings->IsDomStorageEnabled();
637         if (!dom_storage) {
638             TESTLOG_E("Error! dom_storage :%{public}d != true.", dom_storage);
639         } else {
640             TESTLOG_I("dom_storage=%{public}d", dom_storage);
641         }
642     }
643 
644     g_nweb->Load(g_url);
645     g_window->Show();
646 
647     TESTLOG_I("Test210 end");
648 }
649 
Test228()650 void Test228()
651 {
652     TESTLOG_I("Test228 start");
653 
654     TestPrepare();
655 
656     if (g_webSettings != nullptr) {
657         g_webSettings->PutJavaScriptEnabled(true);
658         g_webSettings->PutIsCreateWindowsByJavaScriptAllowed(true);
659 
660         bool dom_storage = g_webSettings->IsDomStorageEnabled();
661         if (dom_storage) {
662             TESTLOG_E("Error! dom_storage default value:%{public}d != false.", dom_storage);
663         } else {
664             TESTLOG_I("dom_storage default value: %{public}d", dom_storage);
665         }
666     }
667 
668     g_nweb->Load(g_url);
669     g_window->Show();
670 
671     TESTLOG_I("Test228 end");
672 }
673 
Test211()674 void Test211()
675 {
676     TESTLOG_I("Test211 start");
677 
678     TestPrepare();
679     TestWebSettingsForNormalWeb();
680 
681     if (g_webSettings != nullptr) {
682         std::string fantasy_font_family = g_webSettings->FantasyFontFamilyName();
683         if (fantasy_font_family != "fantasy") {
684             TESTLOG_E("Error! fantasy_font_family default value:%{public}s != fantasy.", fantasy_font_family.c_str());
685         } else {
686             TESTLOG_I("fantasy_font_family default value: %{public}s", fantasy_font_family.c_str());
687         }
688 
689         TESTLOG_I("Set fantasy_font_family to fantasy.");
690         g_webSettings->PutFantasyFontFamilyName("fantasy");
691         fantasy_font_family = g_webSettings->FantasyFontFamilyName();
692         if (fantasy_font_family != "fantasy") {
693             TESTLOG_E("Error! fantasy_font_family :%{public}s != fantasy.", fantasy_font_family.c_str());
694         } else {
695             TESTLOG_I("fantasy_font_family=%{public}s", fantasy_font_family.c_str());
696         }
697     }
698 
699     g_nweb->Load(g_url);
700     g_window->Show();
701 
702     TESTLOG_I("Test211 end");
703 }
704 
Test212()705 void Test212()
706 {
707     TESTLOG_I("Test212 start");
708 
709     TestPrepare();
710     TestWebSettingsForNormalWeb();
711 
712     if (g_webSettings != nullptr) {
713         std::string fixed_font_family = g_webSettings->FixedFontFamilyName();
714         if (fixed_font_family != "monospace") {
715             TESTLOG_E("Error! fixed_font_family default value:%{public}s != monospace.", fixed_font_family.c_str());
716         } else {
717             TESTLOG_I("fixed_font_family default value: %{public}s", fixed_font_family.c_str());
718         }
719 
720         TESTLOG_I("Set fixed_font_family to monospace.");
721         g_webSettings->PutFixedFontFamilyName("monospace");
722         fixed_font_family = g_webSettings->FixedFontFamilyName();
723         if (fixed_font_family != "monospace") {
724             TESTLOG_E("Error! fixed_font_family :%{public}s != monospace.", fixed_font_family.c_str());
725         } else {
726             TESTLOG_I("fixed_font_family=%{public}s", fixed_font_family.c_str());
727         }
728     }
729 
730     g_nweb->Load(g_url);
731     g_window->Show();
732 
733     TESTLOG_I("Test212 end");
734 }
735 
Test213()736 void Test213()
737 {
738     TESTLOG_I("Test213 start");
739 
740     TestPrepare();
741     TestWebSettingsForNormalWeb();
742 
743     if (g_webSettings != nullptr) {
744         bool force_dark_mode_enabled = g_webSettings->ForceDarkModeEnabled();
745         if (force_dark_mode_enabled) {
746             TESTLOG_E("Error! force_dark_mode_enabled default value:%{public}d != false.", force_dark_mode_enabled);
747         } else {
748             TESTLOG_I("force_dark_mode_enabled default value: %{public}d", force_dark_mode_enabled);
749         }
750 
751         TESTLOG_I("Set force_dark_mode_enabled to true.");
752         g_webSettings->PutForceDarkModeEnabled(true);
753         force_dark_mode_enabled = g_webSettings->ForceDarkModeEnabled();
754         if (!force_dark_mode_enabled) {
755             TESTLOG_E("Error! force_dark_mode_enabled :%{public}d != true.", force_dark_mode_enabled);
756         } else {
757             TESTLOG_I("force_dark_mode_enabled=%{public}d", force_dark_mode_enabled);
758         }
759     }
760 
761     g_nweb->Load(g_url);
762     g_window->Show();
763 
764     TESTLOG_I("Test213 end");
765 }
766 
Test234()767 void Test234()
768 {
769     TESTLOG_I("Test234 start");
770 
771     TestPrepare();
772     TestWebSettingsForNormalWeb();
773 
774     if (g_webSettings != nullptr) {
775         bool dark_scheme_enabled = g_webSettings->DarkSchemeEnabled();
776         if (dark_scheme_enabled) {
777             TESTLOG_E("Error! dark_scheme_enabled default value:%{public}d != false.", dark_scheme_enabled);
778         } else {
779             TESTLOG_I("dark_scheme_enabled default value: %{public}d", dark_scheme_enabled);
780         }
781 
782         TESTLOG_I("Set dark_scheme_enabled to true.");
783         g_webSettings->PutDarkSchemeEnabled(true);
784         dark_scheme_enabled = g_webSettings->DarkSchemeEnabled();
785         if (!dark_scheme_enabled) {
786             TESTLOG_E("Error! dark_scheme_enabled :%{public}d != true.", dark_scheme_enabled);
787         } else {
788             TESTLOG_I("dark_scheme_enabled=%{public}d", dark_scheme_enabled);
789         }
790     }
791 
792     g_nweb->Load(g_url);
793     g_window->Show();
794 
795     TESTLOG_I("Test234 end");
796 }
797 
Test214()798 void Test214()
799 {
800     TESTLOG_I("Test214 start");
801 
802     TestPrepare();
803 
804     if (g_webSettings != nullptr) {
805         g_webSettings->PutJavaScriptEnabled(true);
806         g_webSettings->PutDomStorageEnabled(true);
807 
808         bool javascript_can_open_windows_automatically = g_webSettings->IsCreateWindowsByJavaScriptAllowed();
809         if (javascript_can_open_windows_automatically) {
810             TESTLOG_E("Error! javascript_can_open_windows_automatically default value:%{public}d != false.",
811                 javascript_can_open_windows_automatically);
812         } else {
813             TESTLOG_I("javascript_can_open_windows_automatically default value: %{public}d",
814                 javascript_can_open_windows_automatically);
815         }
816 
817         TESTLOG_I("Set javascript_can_open_windows_automatically to true.");
818         g_webSettings->PutIsCreateWindowsByJavaScriptAllowed(true);
819         javascript_can_open_windows_automatically = g_webSettings->IsCreateWindowsByJavaScriptAllowed();
820         if (!javascript_can_open_windows_automatically) {
821             TESTLOG_E("Error! javascript_can_open_windows_automatically :%{public}d != true.",
822                 javascript_can_open_windows_automatically);
823         } else {
824             TESTLOG_I("javascript_can_open_windows_automatically=%{public}d",
825                 javascript_can_open_windows_automatically);
826         }
827     }
828 
829     g_nweb->Load(g_url);
830     g_window->Show();
831 
832     TESTLOG_I("Test214 end");
833 }
Test229()834 void Test229()
835 {
836     TESTLOG_I("Test229 start");
837 
838     TestPrepare();
839 
840     if (g_webSettings != nullptr) {
841         g_webSettings->PutJavaScriptEnabled(true);
842         g_webSettings->PutDomStorageEnabled(true);
843 
844         bool javascript_can_open_windows_automatically = g_webSettings->IsCreateWindowsByJavaScriptAllowed();
845         if (javascript_can_open_windows_automatically) {
846             TESTLOG_E("Error! javascript_can_open_windows_automatically default value:%{public}d != false.",
847                 javascript_can_open_windows_automatically);
848         } else {
849             TESTLOG_I("javascript_can_open_windows_automatically default value: %{public}d",
850                 javascript_can_open_windows_automatically);
851         }
852     }
853 
854     g_nweb->Load(g_url);
855     g_window->Show();
856 
857     TESTLOG_I("Test229 end");
858 }
859 
Test215()860 void Test215()
861 {
862     TESTLOG_I("Test215 start");
863 
864     TestPrepare();
865 
866     if (g_webSettings != nullptr) {
867         g_webSettings->PutIsCreateWindowsByJavaScriptAllowed(true);
868         g_webSettings->PutDomStorageEnabled(true);
869 
870         bool javascript_enabled = g_webSettings->IsJavaScriptAllowed();
871         if (javascript_enabled) {
872             TESTLOG_E("Error! javascript_enabled default value:%{public}d != false.", javascript_enabled);
873         } else {
874             TESTLOG_I("javascript_enabled default value: %{public}d", javascript_enabled);
875         }
876 
877         TESTLOG_I("Set javascript_enabled to true.");
878         g_webSettings->PutJavaScriptEnabled(true);
879         javascript_enabled = g_webSettings->IsJavaScriptAllowed();
880         if (!javascript_enabled) {
881             TESTLOG_E("Error! javascript_enabled :%{public}d != true.", javascript_enabled);
882         } else {
883             TESTLOG_I("javascript_enabled=%{public}d", javascript_enabled);
884         }
885     }
886 
887     g_nweb->Load(g_url);
888     g_window->Show();
889 
890     TESTLOG_I("Test215 end");
891 }
892 
Test230()893 void Test230()
894 {
895     TESTLOG_I("Test230 start");
896 
897     TestPrepare();
898 
899     if (g_webSettings != nullptr) {
900         g_webSettings->PutIsCreateWindowsByJavaScriptAllowed(true);
901         g_webSettings->PutDomStorageEnabled(true);
902 
903         bool javascript_enabled = g_webSettings->IsJavaScriptAllowed();
904         if (javascript_enabled) {
905             TESTLOG_E("Error! javascript_enabled default value:%{public}d != false.", javascript_enabled);
906         } else {
907             TESTLOG_I("javascript_enabled default value: %{public}d", javascript_enabled);
908         }
909     }
910 
911     g_nweb->Load(g_url);
912     g_window->Show();
913 
914     TESTLOG_I("Test230 end");
915 }
916 
Test216()917 void Test216()
918 {
919     TESTLOG_I("Test216 start");
920 
921     TestPrepare();
922     TestWebSettingsForNormalWeb();
923 
924     if (g_webSettings != nullptr) {
925         bool loads_images_automatically = g_webSettings->IsImageLoadingAllowed();
926         if (!loads_images_automatically) {
927             TESTLOG_E("Error! loads_images_automatically default value:%{public}d != true.",
928                 loads_images_automatically);
929         } else {
930             TESTLOG_I("loads_images_automatically default value: %{public}d", loads_images_automatically);
931         }
932 
933         TESTLOG_I("Set loads_images_automatically to false.");
934         g_webSettings->PutImageLoadingAllowed(false);
935         loads_images_automatically = g_webSettings->IsImageLoadingAllowed();
936         if (loads_images_automatically) {
937             TESTLOG_E("Error! loads_images_automatically :%{public}d != false.", loads_images_automatically);
938         } else {
939             TESTLOG_I("loads_images_automatically=%{public}d", loads_images_automatically);
940         }
941     }
942 
943     g_nweb->Load(g_url);
944     g_window->Show();
945 
946     TESTLOG_I("Test216 end");
947 }
948 
Test217()949 void Test217()
950 {
951     TESTLOG_I("Test217 start");
952 
953     TestPrepare();
954     TestWebSettingsForNormalWeb();
955 
956     if (g_webSettings != nullptr) {
957         int minimum_font_size = g_webSettings->FontSizeLowerLimit();
958         if (minimum_font_size != MINI_LOGICAL_FONT_SIZE) {
959             TESTLOG_E("Error! minimum_font_size default value:%{public}d != 8.", minimum_font_size);
960         } else {
961             TESTLOG_I("minimum_font_size default value: %{public}d", minimum_font_size);
962         }
963 
964         TESTLOG_I("Set minimum_font_size to 72.");
965         g_webSettings->PutFontSizeLowerLimit(DEFAULT_FONT_SIZE_MAX);
966         minimum_font_size = g_webSettings->FontSizeLowerLimit();
967         if (minimum_font_size != DEFAULT_FONT_SIZE_MAX) {
968             TESTLOG_E("Error! minimum_font_size :%{public}d != 72.", minimum_font_size);
969         } else {
970             TESTLOG_I("minimum_font_size=%{public}d", minimum_font_size);
971         }
972     }
973 
974     g_nweb->Load(g_url);
975     g_window->Show();
976 
977     TESTLOG_I("Test217 end");
978 }
979 
Test218()980 void Test218()
981 {
982     TESTLOG_I("Test218 start");
983 
984     TestPrepare();
985     TestWebSettingsForNormalWeb();
986 
987     if (g_webSettings != nullptr) {
988         int minimum_logical_font_size = g_webSettings->LogicalFontSizeLowerLimit();
989         if (minimum_logical_font_size != MINI_FONT_SIZE) {
990             TESTLOG_E("Error! minimum_logical_font_size default value:%{public}d != 8.", minimum_logical_font_size);
991         } else {
992             TESTLOG_I("minimum_logical_font_size default value: %{public}d", minimum_logical_font_size);
993         }
994 
995         TESTLOG_I("Set minimum_logical_font_size to 72.");
996         g_webSettings->PutLogicalFontSizeLowerLimit(DEFAULT_FONT_SIZE_MAX);
997         minimum_logical_font_size = g_webSettings->LogicalFontSizeLowerLimit();
998         if (minimum_logical_font_size != DEFAULT_FONT_SIZE_MAX) {
999             TESTLOG_E("Error! minimum_logical_font_size :%{public}d != 72.", minimum_logical_font_size);
1000         } else {
1001             TESTLOG_I("minimum_logical_font_size=%{public}d", minimum_logical_font_size);
1002         }
1003     }
1004 
1005     g_nweb->Load(g_url);
1006     g_window->Show();
1007 
1008     TESTLOG_I("Test218 end");
1009 }
1010 
Test219()1011 void Test219()
1012 {
1013     TESTLOG_I("Test219 start");
1014 
1015     TestPrepare();
1016     TestWebSettingsForNormalWeb();
1017 
1018     if (g_webSettings != nullptr) {
1019         std::string sans_serif_font_family = g_webSettings->SansSerifFontFamilyName();
1020         if (sans_serif_font_family != "sans-serif") {
1021             TESTLOG_E("Error! sans_serif_font_family default value:%{public}s != sans-serif.",
1022                 sans_serif_font_family.c_str());
1023         } else {
1024             TESTLOG_I("sans_serif_font_family default value: %{public}s", sans_serif_font_family.c_str());
1025         }
1026 
1027         TESTLOG_I("Set sans_serif_font_family to sans-serif.");
1028         g_webSettings->PutSansSerifFontFamilyName("sans-serif");
1029         sans_serif_font_family = g_webSettings->SansSerifFontFamilyName();
1030         if (sans_serif_font_family != "sans-serif") {
1031             TESTLOG_E("Error! sans_serif_font_family :%{public}s != sans-serif.", sans_serif_font_family.c_str());
1032         } else {
1033             TESTLOG_I("sans_serif_font_family=%{public}s", sans_serif_font_family.c_str());
1034         }
1035     }
1036 
1037     g_nweb->Load(g_url);
1038     g_window->Show();
1039 
1040     TESTLOG_I("Test219 end");
1041 }
1042 
Test220()1043 void Test220()
1044 {
1045     TESTLOG_I("Test220 start");
1046 
1047     TestPrepare();
1048     TestWebSettingsForNormalWeb();
1049 
1050     if (g_webSettings != nullptr) {
1051         std::string serif_font_family = g_webSettings->SerifFontFamilyName();
1052         if (serif_font_family != "serif") {
1053             TESTLOG_E("Error! serif_font_family default value:%{public}s != serif.", serif_font_family.c_str());
1054         } else {
1055             TESTLOG_I("serif_font_family default value: %{public}s", serif_font_family.c_str());
1056         }
1057 
1058         TESTLOG_I("Set serif_font_family to serif.");
1059         g_webSettings->PutSerifFontFamilyName("serif");
1060         serif_font_family = g_webSettings->SerifFontFamilyName();
1061         if (serif_font_family != "serif") {
1062             TESTLOG_E("Error! serif_font_family :%{public}s != serif.", serif_font_family.c_str());
1063         } else {
1064             TESTLOG_I("serif_font_family=%{public}s", serif_font_family.c_str());
1065         }
1066     }
1067 
1068     g_nweb->Load(g_url);
1069     g_window->Show();
1070 
1071     TESTLOG_I("Test220 end");
1072 }
1073 
Test221()1074 void Test221()
1075 {
1076     TESTLOG_I("Test221 start");
1077 
1078     TestPrepare();
1079     TestWebSettingsForNormalWeb();
1080 
1081     if (g_webSettings != nullptr) {
1082         std::string standard_font_family = g_webSettings->StandardFontFamilyName();
1083         if (standard_font_family != "sans-serif") {
1084             TESTLOG_E("Error! standard_font_family default value:%{public}s != sans-serif.",
1085                 standard_font_family.c_str());
1086         } else {
1087             TESTLOG_I("standard_font_family default value: %{public}s", standard_font_family.c_str());
1088         }
1089 
1090         TESTLOG_I("Set standard_font_family to Times New Roman.");
1091         g_webSettings->PutStandardFontFamilyName("Times New Roman");
1092         standard_font_family = g_webSettings->StandardFontFamilyName();
1093         if (standard_font_family != "Times New Roman") {
1094             TESTLOG_E("Error! standard_font_family :%{public}s != Times New Roman.", standard_font_family.c_str());
1095         } else {
1096             TESTLOG_I("standard_font_family=%{public}s", standard_font_family.c_str());
1097         }
1098     }
1099 
1100     g_nweb->Load(g_url);
1101     g_window->Show();
1102 
1103     TESTLOG_I("Test221 end");
1104 }
1105 
Test222()1106 void Test222()
1107 {
1108     TESTLOG_I("Test222 start");
1109 
1110     TestPrepare();
1111     TestWebSettingsForNormalWeb();
1112 
1113     if (g_webSettings != nullptr) {
1114         std::string user_agent = g_webSettings->UserAgent();
1115         std::string default_user_agent = g_webSettings->DefaultUserAgent();
1116         if (user_agent != default_user_agent) {
1117             TESTLOG_E("Error! user_agent default value:%{public}s != %{public}s.", user_agent.c_str(),
1118                 default_user_agent.c_str());
1119         } else {
1120             TESTLOG_I("user_agent default value: %{public}s", user_agent.c_str());
1121         }
1122 
1123         std::string new_user_agent = "Mozilla/5.0 (Linux; LIO-AL00 Build/HUAWEILIO-AL00; wv) " \
1124             "AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/90.0.4430.91 Mobile Safari/537.36";
1125         TESTLOG_I("Set user_agent to %{public}s.", new_user_agent.c_str());
1126         g_webSettings->PutUserAgent(new_user_agent);
1127         user_agent = g_webSettings->UserAgent();
1128         if (user_agent != new_user_agent) {
1129             TESTLOG_E("Error! user_agent :%{public}s != %{public}s.", user_agent.c_str(), new_user_agent.c_str());
1130         } else {
1131             TESTLOG_I("user_agent=%{public}s", user_agent.c_str());
1132         }
1133     }
1134 
1135     g_nweb->Load(g_url);
1136     g_window->Show();
1137 
1138     TESTLOG_I("Test222 end");
1139 }
1140 
Test223()1141 void Test223()
1142 {
1143     TESTLOG_I("Test223 start");
1144 
1145     TestPrepare();
1146     TestWebSettingsForNormalWeb();
1147 
1148     if (g_webSettings != nullptr) {
1149         int text_size_percent = g_webSettings->ZoomingForTextFactor();
1150         if (text_size_percent != TEXT_SIZE_PERCENT_MIN) {
1151             TESTLOG_E("Error! text_size_percent default value:%{public}d != 100.", text_size_percent);
1152         } else {
1153             TESTLOG_I("text_size_percent default value: %{public}d", text_size_percent);
1154         }
1155 
1156         TESTLOG_I("Set text_size_percent to 500.");
1157         g_webSettings->PutZoomingForTextFactor(TEXT_SIZE_PERCENT_MAX);
1158         text_size_percent = g_webSettings->ZoomingForTextFactor();
1159         if (text_size_percent != TEXT_SIZE_PERCENT_MAX) {
1160             TESTLOG_E("Error! text_size_percent :%{public}d != 500.", text_size_percent);
1161         } else {
1162             TESTLOG_I("text_size_percent=%{public}d", text_size_percent);
1163         }
1164     }
1165 
1166     g_nweb->Load(g_url);
1167     g_window->Show();
1168 
1169     TESTLOG_I("Test223 end");
1170 }
1171 
Test224()1172 void Test224()
1173 {
1174     TESTLOG_I("Test224 start");
1175 
1176     TestPrepare();
1177     TestWebSettingsForNormalWeb();
1178 
1179     if (g_webSettings != nullptr) {
1180         bool geolocation_enabled = g_webSettings->GeolocationAllowed();
1181         if (!geolocation_enabled) {
1182             TESTLOG_E("Error! geolocation_enabled default value:%{public}d != true.", geolocation_enabled);
1183         } else {
1184             TESTLOG_I("geolocation_enabled default value: %{public}d", geolocation_enabled);
1185         }
1186 
1187         TESTLOG_I("Set geolocation_enabled to false.");
1188         g_webSettings->PutGeolocationAllowed(false);
1189         geolocation_enabled = g_webSettings->GeolocationAllowed();
1190         if (geolocation_enabled) {
1191             TESTLOG_E("Error! geolocation_enabled :%{public}d != false.", geolocation_enabled);
1192         } else {
1193             TESTLOG_I("geolocation_enabled=%{public}d", geolocation_enabled);
1194         }
1195     }
1196 
1197     g_nweb->Load(g_url);
1198     g_window->Show();
1199 
1200     TESTLOG_I("Test224 end");
1201 }
1202 
Test225()1203 void Test225()
1204 {
1205     TESTLOG_I("Test225 start");
1206 
1207     TestPrepare();
1208     TestWebSettingsForNormalWeb();
1209 
1210     if (g_webSettings != nullptr) {
1211         OHOS::NWeb::NWebPreference::AccessMode mixed_content_mode =
1212             g_webSettings->AccessModeForSecureOriginLoadFromInsecure();
1213         if (mixed_content_mode != OHOS::NWeb::NWebPreference::AccessMode::NEVER_ALLOW) {
1214             TESTLOG_E("Error! mixed_content_mode default value:%{public}d != %{public}d.", mixed_content_mode,
1215                 OHOS::NWeb::NWebPreference::AccessMode::NEVER_ALLOW);
1216         } else {
1217             TESTLOG_I("mixed_content_mode default value: %{public}d", mixed_content_mode);
1218         }
1219 
1220         TESTLOG_I("Set mixed_content_mode to ALWAYS_ALLOW.");
1221         g_webSettings->PutAccessModeForSecureOriginLoadFromInsecure(
1222             OHOS::NWeb::NWebPreference::AccessMode::ALWAYS_ALLOW);
1223         mixed_content_mode = g_webSettings->AccessModeForSecureOriginLoadFromInsecure();
1224         if (mixed_content_mode != OHOS::NWeb::NWebPreference::AccessMode::ALWAYS_ALLOW) {
1225             TESTLOG_E("Error! mixed_content_mode :%{public}d != %{public}d.", mixed_content_mode,
1226                 OHOS::NWeb::NWebPreference::AccessMode::ALWAYS_ALLOW);
1227         } else {
1228             TESTLOG_I("mixed_content_mode=%{public}d", mixed_content_mode);
1229         }
1230     }
1231 
1232     g_nweb->Load(g_url);
1233     g_window->Show();
1234 
1235     TESTLOG_I("Test225 end");
1236 }
1237 
Test226()1238 void Test226()
1239 {
1240     TESTLOG_I("Test226 start");
1241 
1242     TestPrepare();
1243     TestWebSettingsForNormalWeb();
1244 
1245     if (g_webSettings != nullptr) {
1246         OHOS::NWeb::NWebPreference::AccessMode mixed_content_mode =
1247             g_webSettings->AccessModeForSecureOriginLoadFromInsecure();
1248         if (mixed_content_mode != OHOS::NWeb::NWebPreference::AccessMode::NEVER_ALLOW) {
1249             TESTLOG_E("Error! mixed_content_mode default value:%{public}d != %{public}d.", mixed_content_mode,
1250                 OHOS::NWeb::NWebPreference::AccessMode::NEVER_ALLOW);
1251         } else {
1252             TESTLOG_I("mixed_content_mode default value: %{public}d", mixed_content_mode);
1253         }
1254 
1255         TESTLOG_I("Set mixed_content_mode to COMPATIBILITY_MODE.");
1256         g_webSettings->PutAccessModeForSecureOriginLoadFromInsecure(
1257             OHOS::NWeb::NWebPreference::AccessMode::COMPATIBILITY_MODE);
1258         mixed_content_mode = g_webSettings->AccessModeForSecureOriginLoadFromInsecure();
1259         if (mixed_content_mode != OHOS::NWeb::NWebPreference::AccessMode::COMPATIBILITY_MODE) {
1260             TESTLOG_E("Error! mixed_content_mode :%{public}d != %{public}d.", mixed_content_mode,
1261                 OHOS::NWeb::NWebPreference::AccessMode::COMPATIBILITY_MODE);
1262         } else {
1263             TESTLOG_I("mixed_content_mode=%{public}d", mixed_content_mode);
1264         }
1265     }
1266 
1267     g_nweb->Load(g_url);
1268     g_window->Show();
1269 
1270     TESTLOG_I("Test226 end");
1271 }
1272 
Test227()1273 void Test227()
1274 {
1275     TESTLOG_I("Test227 start");
1276 
1277     TestPrepare();
1278     TestWebSettingsForNormalWeb();
1279 
1280     if (g_webSettings != nullptr) {
1281         bool support_zoom = g_webSettings->ZoomingfunctionEnabled();
1282         if (!support_zoom) {
1283             TESTLOG_E("Error! support_zoom default value:%{public}d != true.", support_zoom);
1284         } else {
1285             TESTLOG_I("support_zoom default value: %{public}d", support_zoom);
1286         }
1287 
1288         TESTLOG_I("Set support_zoom to false.");
1289         g_webSettings->PutZoomingFunctionEnabled(false);
1290         support_zoom = g_webSettings->ZoomingfunctionEnabled();
1291         if (support_zoom) {
1292             TESTLOG_E("Error! support_zoom :%{public}d != false.", support_zoom);
1293         } else {
1294             TESTLOG_I("support_zoom=%{public}d", support_zoom);
1295         }
1296     }
1297 
1298     g_nweb->Load(g_url);
1299     g_window->Show();
1300 
1301     TESTLOG_I("Test227 end");
1302 }
1303 
Test232()1304 void Test232()
1305 {
1306     TESTLOG_I("Test232 start");
1307 
1308     TestPrepare();
1309     TestWebSettingsForNormalWeb();
1310 
1311     if (g_webSettings != nullptr) {
1312         bool is_network_blocked = g_webSettings->IsNetworkBlocked();
1313         if (is_network_blocked) {
1314             TESTLOG_E("Error! is_network_blocked default value:%{public}d != false.", is_network_blocked);
1315         } else {
1316             TESTLOG_I("is_network_blocked default value: %{public}d", is_network_blocked);
1317         }
1318 
1319         TESTLOG_I("Set is_network_blocked to true.");
1320         g_webSettings->PutBlockNetwork(true);
1321         is_network_blocked = g_webSettings->IsNetworkBlocked();
1322         if (!is_network_blocked) {
1323             TESTLOG_E("Error! is_network_blocked :%{public}d != false.", is_network_blocked);
1324         } else {
1325             TESTLOG_I("is_network_blocked=%{public}d", is_network_blocked);
1326         }
1327     }
1328 
1329     g_nweb->Load(g_url);
1330     g_window->Show();
1331 
1332     TESTLOG_I("Test232 end");
1333 }
1334 
Test233()1335 void Test233()
1336 {
1337     TESTLOG_I("Test233 start");
1338 
1339     TestPrepare();
1340     TestWebSettingsForNormalWeb();
1341 
1342     if (g_webSettings != nullptr) {
1343         bool isWebDebugging = g_webSettings->IsWebDebuggingAccess();
1344         if (isWebDebugging) {
1345             TESTLOG_E("Error! isWebDebugging default value:%{public}d != false.", isWebDebugging);
1346         } else {
1347             TESTLOG_I("isWebDebugging default value: %{public}d", isWebDebugging);
1348         }
1349 
1350         TESTLOG_I("Set isWebDebugging to true.");
1351         g_webSettings->PutWebDebuggingAccess(true);
1352         isWebDebugging = g_webSettings->IsWebDebuggingAccess();
1353         if (!isWebDebugging) {
1354             TESTLOG_E("Error! isWebDebugging :%{public}d != true.", isWebDebugging);
1355         } else {
1356             TESTLOG_I("isWebDebugging=%{public}d", isWebDebugging);
1357         }
1358     }
1359 
1360     g_nweb->Load(g_url);
1361     g_window->Show();
1362 
1363     TESTLOG_I("Test233 end");
1364 }
1365 
Test90()1366 void Test90()
1367 {
1368     TESTLOG_I("start90");
1369     TestPrepare();
1370     TestWebSettingsForNormalWeb();
1371 
1372     g_nweb->Load(g_url);
1373     std::thread dump_thread([]() {
1374         std::stringstream ss;
1375         ss << "change_test()";
1376         std::this_thread::sleep_for(std::chrono::seconds(TIME_SECONDS_FIVE));
1377         g_nweb->ExecuteJavaScript(ss.str());
1378     });
1379     dump_thread.detach();
1380     g_window->Show();
1381     TESTLOG_I("end90");
1382 }
1383 
Test91()1384 void Test91()
1385 {
1386     TESTLOG_I("start91");
1387     TestPrepare();
1388     TestWebSettingsForNormalWeb();
1389     g_nweb->PutBackgroundColor(0xFFFFFF33);
1390     g_nweb->Load(g_url);
1391     g_window->Show();
1392     TESTLOG_I("end91");
1393 }
1394 
Test92()1395 void Test92()
1396 {
1397     TESTLOG_I("start92");
1398     TestPrepare();
1399     TestWebSettingsForNormalWeb();
1400 
1401     g_nweb->Load(g_url);
1402     g_window->Show();
1403     TESTLOG_I("end");
1404 }
1405 
Test93()1406 void Test93()
1407 {
1408     TESTLOG_I("start93");
1409     TestPrepare();
1410     TestWebSettingsForNormalWeb();
1411 
1412     g_nweb->Load(g_url);
1413     std::thread dump_thread([]() {
1414         std::this_thread::sleep_for(std::chrono::seconds(TIME_SECONDS_FIVE));
1415         std::string title = g_nweb->Title();
1416         TESTLOG_I("url tilte =%{public}s", title.c_str());
1417     });
1418     dump_thread.detach();
1419     g_window->Show();
1420     TESTLOG_I("end93");
1421 }
1422 
Test94()1423 void Test94()
1424 {
1425     TESTLOG_I("start94");
1426     TestPrepare();
1427     TestWebSettingsForNormalWeb();
1428 
1429     g_nweb->Load(g_url);
1430     int progress = g_nweb->PageLoadProgress();
1431     TESTLOG_I("progress is =%{public}d", progress);
1432     g_window->Show();
1433     TESTLOG_I("end94");
1434 }
1435 
Test95()1436 void Test95()
1437 {
1438     TESTLOG_I("start95");
1439     TestPrepare();
1440     TestWebSettingsForNormalWeb();
1441 
1442     g_nweb->Load(g_url);
1443 
1444     std::thread dump_thread([]() {
1445         std::this_thread::sleep_for(std::chrono::seconds(TIME_SECONDS_FIVE));
1446         int content_height = g_nweb->ContentHeight();
1447         TESTLOG_I("Content height is =%{public}d", content_height);
1448     });
1449     dump_thread.detach();
1450     g_window->Show();
1451     TESTLOG_I("end95");
1452 }
1453 
Test96()1454 void Test96()
1455 {
1456     TESTLOG_I("start96");
1457     TestPrepare();
1458     TestWebSettingsForNormalWeb();
1459 
1460     g_nweb->Load(g_url);
1461     float scale = g_nweb->Scale();
1462     TESTLOG_I("Scale is =%{public}f", scale);
1463     g_window->Show();
1464     TESTLOG_I("end96");
1465 }
1466 
Test97()1467 void Test97()
1468 {
1469     TESTLOG_I("start97");
1470     TestPrepare();
1471     TestWebSettingsForNormalWeb();
1472     std::map<std::string, std::string> extraHeaders;
1473     extraHeaders["Authorization"] =  "user-token-here";
1474     extraHeaders["diy"] = "diy";
1475     g_nweb->Load(g_url, extraHeaders);
1476     g_window->Show();
1477     TESTLOG_I("end97");
1478 }
1479 
Test98()1480 void Test98()
1481 {
1482     TESTLOG_I("start98");
1483     TestPrepare();
1484     TestWebSettingsForNormalWeb();
1485 
1486     std::stringstream ss;
1487     ss << "<html><body bgcolor=\"white\">Source:<pre>" << "source" << "</pre></body></html>";
1488 
1489     g_nweb->LoadWithDataAndBaseUrl("", ss.str(), "text/html", "UTF-8", "");
1490     g_window->Show();
1491     TESTLOG_I("end98");
1492 }
1493 
Test99()1494 void Test99()
1495 {
1496     TESTLOG_I("start99");
1497     TestPrepare();
1498     TestWebSettingsForNormalWeb();
1499     std::stringstream ss;
1500     ss << "<html><body bgcolor=\"white\">Source:<pre>" << "source" << "</pre></body></html>";
1501 
1502     g_nweb->LoadWithDataAndBaseUrl("", "", "text/html", "UTF-8", "http://www.baidu.com");
1503     float scale = g_nweb->Scale();
1504     TESTLOG_I("Scale is =%{public}f", scale);
1505     g_window->Show();
1506     TESTLOG_I("end99");
1507 }
1508 
Test100()1509 void Test100()
1510 {
1511     TESTLOG_I("start100");
1512     TestPrepare();
1513     TestWebSettingsForNormalWeb();
1514     std::shared_ptr<OHOS::NWeb::NWebJavaScriptResultCallBackTest> result_callback
1515         = std::make_shared<OHOS::NWeb::NWebJavaScriptResultCallBackTest>();
1516     g_nweb->SetNWebJavaScriptResultCallBack(result_callback);
1517     g_nweb->Load(g_url);
1518     std::this_thread::sleep_for(std::chrono::seconds(TIME_SECONDS_FIVE));
1519     std::string object_name = "methodtest";
1520     std::string object_name2 = "ohoh";
1521     std::vector<std::string> list;
1522     list.emplace_back("toString");
1523     g_nweb->RegisterArkJSfunction(object_name, list);
1524     result_callback->RegisterArkJSfunction(object_name);
1525     g_nweb->RegisterArkJSfunction(object_name2, list);
1526     result_callback->RegisterArkJSfunction(object_name2);
1527     std::thread ppthread([result_callback]() {
1528         std::stringstream ss;
1529         ss << "methodtest.toString()";
1530         std::this_thread::sleep_for(std::chrono::seconds(TIME_SECONDS_FIVE));
1531         g_nweb->ExecuteJavaScript(ss.str());
1532     });
1533     ppthread.detach();
1534     g_window->Show();
1535     TESTLOG_I("end100");
1536 }
1537 
Test101()1538 void Test101()
1539 {
1540     TESTLOG_I("start101");
1541     TestPrepare();
1542     TestWebSettingsForNormalWeb();
1543     g_nweb->Load(g_url);
1544     g_nweb->Zoom(0.1f);
1545     g_window->Show();
1546     TESTLOG_I("end101");
1547 }
1548 
Test102()1549 void Test102()
1550 {
1551     TESTLOG_I("start102");
1552     TestPrepare();
1553     TestWebSettingsForNormalWeb();
1554     g_nweb->Load(g_url);
1555     std::thread dump_thread([]() {
1556         std::this_thread::sleep_for(std::chrono::seconds(TIME_SECONDS_FIVE));
1557         g_nweb->Reload();
1558     });
1559     dump_thread.detach();
1560     g_window->Show();
1561     TESTLOG_I("end102");
1562 }
1563 
Test103()1564 void Test103()
1565 {
1566     TESTLOG_I("start103");
1567     OHOS::NWeb::NWebHelper::Instance().SetBundlePath(MOCK_INSTALLATION_DIR);
1568     if (!OHOS::NWeb::NWebAdapterHelper::Instance().Init(false)) {
1569         TESTLOG_E("fail to init NWebAdapterHelper, test end");
1570         return;
1571     }
1572 
1573     g_window = CreateWindow();
1574     if (g_window == nullptr) {
1575         return;
1576     }
1577     g_nweb = OHOS::NWeb::NWebAdapterHelper::Instance().CreateNWeb(g_window.GetRefPtr(), GetInitArgs());
1578     if (g_nweb == nullptr) {
1579         g_window = nullptr;
1580         TESTLOG_E("fail to get nweb instance, test end");
1581         return;
1582     }
1583 
1584     TESTLOG_I("Createnweb SUCCESS");
1585     g_nweb->SetNWebHandler(std::make_shared<OHOS::NWeb::NWebHandlerImplTestForIntercept>());
1586     std::string url = HasArg(ARG_URL) ? GetArgValue(ARG_URL) : "www.baidu.com"; // load www.baidu.com by default
1587     TESTLOG_I("ready to load url=%{public}s", url.c_str());
1588 
1589     TestWebSettingsForNormalWeb();
1590     g_nweb->Load(url);
1591     g_window->Show();
1592     TESTLOG_I("end103");
1593 }
1594 
Test104()1595 void Test104()
1596 {
1597     TESTLOG_I("start104");
1598     TestPrepare();
1599     TestWebSettingsForNormalWeb();
1600 
1601     std::string data = "<html><body><h1>LoadData test 104</h1></body></html>";
1602 
1603     g_nweb->LoadWithData(data, "text/html", "UTF-8");
1604     g_window->Show();
1605     TESTLOG_I("end104");
1606 }
1607 
1608 class JavaScriptResultCb : public OHOS::NWeb::NWebValueCallback<std::string> {
OnReceiveValue(std::string result)1609     void OnReceiveValue(std::string result) override
1610     {
1611         TESTLOG_I("JavaScript execute result = %{public}s", result.c_str());
1612     }
1613 };
1614 
Test105()1615 void Test105()
1616 {
1617     TESTLOG_I("start105");
1618     TestPrepare();
1619     TestWebSettingsForNormalWeb();
1620     g_nweb->Load(g_url);
1621     g_window->Show();
1622     std::string ss = "(function() { console.log('ExecuteJavaScript'); return 'ExecuteJavaScript'; })()";
1623     std::shared_ptr<OHOS::NWeb::NWebValueCallback<std::string>> callback = std::make_shared<JavaScriptResultCb>();
1624     g_nweb->ExecuteJavaScript(ss, callback);
1625     TESTLOG_I("end105");
1626 }
1627 
Test106()1628 void Test106()
1629 {
1630     TESTLOG_I("start106");
1631     TestPrepare();
1632     TestWebSettingsForNormalWeb();
1633     g_nweb->Load(g_url);
1634     g_window->Show();
1635     // load execute_javaScript_test.html, and will invoke ExecuteJavaScript when NWebHandlerImplTest::OnPageFinished
1636     TESTLOG_I("end106");
1637 }
1638 
Test107()1639 void Test107()
1640 {
1641     TESTLOG_I("Test107 start");
1642     TestPrepare();
1643     TestWebSettingsForNormalWeb();
1644     std::string testUrl = "https://image.baidu.com/search/down?tn=download&word=download&ie"
1645                           "=utf8&fr=detail&url=https%3A%2F%2Fgimg2.baidu.com%2Fimage_search%2Fsrc%3Dhttp%253A%252"
1646                           "F%252Fimgm3.cnmo.com%252Fuser%252Farticle%252F147422%252Forigin%252Farad9U4eIRFo.jpeg%"
1647                           "26refer%3Dhttp%253A%252F%252Fimgm3.cnmo.com%26app%3D2002%26size%3Df9999%2C10000%26q%3D"
1648                           "a80%26n%3D0%26g%3D0n%26fmt%3Djpeg%3Fsec%3D1647499762%26t%3Dee4725de24c35d3a273abb8bcfc"
1649                           "157e7&thumburl=https%3A%2F%2Fimg1.baidu.com%2Fit%2Fu%3D2016552768%2C2104120132%26fm%3D"
1650                           "253%26fmt%3Dauto%26app%3D120%26f%3DJPEG%3Fw%3D683%26h%3D393";
1651     TESTLOG_I("Test107 SetDownloadListener begin");
1652     g_nweb->PutDownloadCallback(std::make_shared<OHOS::NWeb::NWebDownloadListenerImplTest>());
1653     TESTLOG_I("Test107 SetDownloadListener end");
1654     g_nweb->Load(testUrl);
1655     g_window->Show();
1656     TESTLOG_I("end");
1657 }
1658 
Test108()1659 void Test108()
1660 {
1661     TESTLOG_I("start108");
1662     TestPrepare();
1663     TestWebSettingsForNormalWeb();
1664     g_nweb->Load(g_url);
1665     g_window->Show();
1666     std::thread test_thread([]() {
1667         int cmd;
1668         while (std::cin >> cmd) {
1669             switch (cmd) {
1670                 case 0:
1671                     TESTLOG_I("IsNavigatebackwardAllowed:%{public}d", g_nweb->IsNavigatebackwardAllowed());
1672                     break;
1673                 case 1:
1674                     TESTLOG_I("IsNavigateForwardAllowed:%{public}d", g_nweb->IsNavigateForwardAllowed());
1675                     break;
1676                 case STEP_TWO:
1677                     int steps;
1678                     std::cin >> steps;
1679                     TESTLOG_I("CanNavigateBackOrForward:%{public}d", g_nweb->CanNavigateBackOrForward(steps));
1680                     break;
1681                 default:
1682                     return;
1683             }
1684         }
1685     });
1686     test_thread.detach();
1687     TESTLOG_I("end108");
1688 }
1689 
Test109()1690 void Test109()
1691 {
1692     TESTLOG_I("start109");
1693     TestPrepareWithClient(std::make_shared<OHOS::NWeb::NWebJSDialogImplTest>(
1694         OHOS::NWeb::NWebJSDialogImplTest::Type::CONFIRM
1695     ));
1696     TestWebSettingsForNormalWeb();
1697     g_nweb->Load("file:///data/local/cef/cef_user_data/JsDiaTest.html");
1698     g_window->Show();
1699     TESTLOG_I("end109");
1700 }
1701 
Test110()1702 void Test110()
1703 {
1704     TESTLOG_I("start110");
1705     TestPrepareWithClient(std::make_shared<OHOS::NWeb::NWebJSDialogImplTest>(
1706         OHOS::NWeb::NWebJSDialogImplTest::Type::CANCEL
1707     ));
1708     TestWebSettingsForNormalWeb();
1709     g_nweb->Load("file:///data/local/cef/cef_user_data/JsDiaTest.html");
1710     g_window->Show();
1711     TESTLOG_I("end110");
1712 }
1713 
Test111()1714 void Test111()
1715 {
1716     TESTLOG_I("start111");
1717     TestPrepareWithClient(std::make_shared<OHOS::NWeb::NWebJSDialogImplTest>(
1718         OHOS::NWeb::NWebJSDialogImplTest::Type::CONFIRM
1719     ));
1720     TestWebSettingsForNormalWeb();
1721     g_nweb->Load("file:///data/local/cef/cef_user_data/JsBeforeUnloadTest.html");
1722     std::thread dump_thread([]() {
1723         std::this_thread::sleep_for(std::chrono::seconds(STEP_TWO));
1724         g_nweb->Reload();
1725     });
1726     dump_thread.detach();
1727     g_window->Show();
1728     TESTLOG_I("end111");
1729 }
1730 
Test112()1731 void Test112()
1732 {
1733     TESTLOG_I("start112");
1734     TestPrepareWithClient(std::make_shared<OHOS::NWeb::NWebJSDialogImplTest>(
1735         OHOS::NWeb::NWebJSDialogImplTest::Type::CANCEL
1736     ));
1737     TestWebSettingsForNormalWeb();
1738     g_nweb->Load("file:///data/local/cef/cef_user_data/JsBeforeUnloadTest.html");
1739     std::thread dump_thread([]() {
1740         std::this_thread::sleep_for(std::chrono::seconds(STEP_TWO));
1741         g_nweb->Reload();
1742     });
1743     dump_thread.detach();
1744     g_window->Show();
1745     TESTLOG_I("end112");
1746 }
1747 
Test113()1748 void Test113()
1749 {
1750     TESTLOG_I("start113");
1751     TestPrepare();
1752     TestWebSettingsForNormalWeb();
1753 
1754     g_nweb->Load(g_url);
1755     std::thread dump_thread([]() {
1756         for (int i = 0; i < TEXT_SIZE_PERCENT_MIN; i++) {
1757             std::this_thread::sleep_for(std::chrono::seconds(TIME_SECONDS_THREE));
1758             OHOS::NWeb::HitTestResult data = g_nweb->GetHitTestResult();
1759             TESTLOG_I("type = %{public}d", data.GetType());
1760             TESTLOG_I("extra = %{public}s", data.GetExtra().c_str());
1761         }
1762     });
1763     dump_thread.detach();
1764     g_window->Show();
1765     TESTLOG_I("end113");
1766 }
1767 
1768 struct OhosNWebTest {
1769     int32_t id;
1770     const char *desc;
1771     void (*func)();
1772 };
1773 
1774 #define ADD_TEST(tests, id_, desc_)   \
1775     (tests).push_back({               \
1776         .id = (id_),                  \
1777         .desc = (desc_),              \
1778         .func = Test##id_ })
1779 
InitTest(std::vector<struct OhosNWebTest> & tests)1780 void InitTest(std::vector<struct OhosNWebTest> &tests)
1781 {
1782     ADD_TEST(tests, 1, "nweb use window");
1783     ADD_TEST(tests, 90, "ExecuteJavaScript");
1784     ADD_TEST(tests, 91, "SetBackgroundColor(0xFFFFFF33)");
1785     ADD_TEST(tests, 92, "nweb handle");
1786     ADD_TEST(tests, 93, "gettitle");
1787     ADD_TEST(tests, 94, "getprogress");
1788     ADD_TEST(tests, 95, "GetContentHeight");
1789     ADD_TEST(tests, 96, "GetScale");
1790     ADD_TEST(tests, 97, "LoadUrl(url,extraHeaders)");
1791     ADD_TEST(tests, 98, "LoadWithDataAndBaseUrl");
1792     ADD_TEST(tests, 99, "LoadWithDataAndBaseUrl history");
1793     ADD_TEST(tests, 100, "ark js");
1794     ADD_TEST(tests, 101, "Zoomby");
1795     ADD_TEST(tests, 102, "reload");
1796     ADD_TEST(tests, 103, "nweb client ShouldInterceptRequest");
1797     ADD_TEST(tests, 104, "LoadwithData test");
1798     ADD_TEST(tests, 105, "ExecuteJavaScript with result callback, console output");
1799     ADD_TEST(tests, 106, "ExecuteJavaScript with result callback, change html item by js function");
1800     ADD_TEST(tests, 107, "Test websettings api:SetDownloadlistener");
1801     ADD_TEST(tests, 108, "CanGoBackOrForward");
1802     ADD_TEST(tests, 109, "js dialog confirm");
1803     ADD_TEST(tests, 110, "js dialog cancel");
1804     ADD_TEST(tests, 111, "js beforeUnload confirm");
1805     ADD_TEST(tests, 112, "js beforeUnload cancel");
1806     ADD_TEST(tests, 113, "GetHitTestResult");
1807     ADD_TEST(tests, 200, "Test websettings api:PutEnableContentAccess and EnableContentAccess");
1808     ADD_TEST(tests, 201, "Test websettings api:PutEnableRawFileAccess and EnableRawFileAccess");
1809     ADD_TEST(tests, 202, "Test websettings api:PutEnableRawFileAccessFromFileURLs and EnableRawFileAccessFromFileURLs");
1810     ADD_TEST(tests, 203, "Test websettings api:PutEnableUniversalAccessFromFileURLs and " \
1811         "EnableUniversalAccessFromFileURLs");
1812     ADD_TEST(tests, 204, "Test websettings api:PutLoadImageFromNetworkDisabled and IsLoadImageFromNetworkDisabled");
1813     ADD_TEST(tests, 205, "Test websettings api:PutCursiveFontFamilyName and CursiveFontFamilyName");
1814     ADD_TEST(tests, 206, "Test websettings api:PutDatabaseAllowed and IsDataBaseEnabled");
1815     ADD_TEST(tests, 207, "Test websettings api:PutDefaultFixedFontSize and DefaultFixedFontSize");
1816     ADD_TEST(tests, 208, "Test websettings api:PutDefaultFontSize and DefaultFontSize");
1817     ADD_TEST(tests, 209, "Test websettings api:PutDefaultTextEncodingFormat and DefaultTextEncodingFormat");
1818     ADD_TEST(tests, 210, "Test websettings api:PutDomStorageEnabled and IsDomStorageEnabled");
1819     ADD_TEST(tests, 211, "Test websettings api:PutFantasyFontFamilyName and FantasyFontFamilyName");
1820     ADD_TEST(tests, 212, "Test websettings api:PutFixedFontFamilyName and FixedFontFamilyName");
1821     ADD_TEST(tests, 213, "Test websettings api:PutForceDarkModeEnabled and ForceDarkModeEnabled");
1822     ADD_TEST(tests, 214, "Test websettings api:PutIsCreateWindowsByJavaScriptAllowed and " \
1823         "IsCreateWindowsByJavaScriptAllowed");
1824     ADD_TEST(tests, 215, "Test websettings api:PutJavaScriptEnabled and IsJavaScriptAllowed");
1825     ADD_TEST(tests, 216, "Test websettings api:PutImageLoadingAllowed and IsImageLoadingAllowed");
1826     ADD_TEST(tests, 217, "Test websettings api:PutFontSizeLowerLimit and FontSizeLowerLimit");
1827     ADD_TEST(tests, 218, "Test websettings api:PutLogicalFontSizeLowerLimit and LogicalFontSizeLowerLimit");
1828     ADD_TEST(tests, 219, "Test websettings api:PutSansSerifFontFamilyName and SansSerifFontFamilyName");
1829     ADD_TEST(tests, 220, "Test websettings api:PutSerifFontFamilyName and SerifFontFamilyName");
1830     ADD_TEST(tests, 221, "Test websettings api:PutStandardFontFamilyName and StandardFontFamilyName");
1831     ADD_TEST(tests, 222, "Test websettings api:PutUserAgent and UserAgent");
1832     ADD_TEST(tests, 223, "Test websettings api:PutZoomingForTextFactor and ZoomingForTextFactor");
1833     ADD_TEST(tests, 224, "Test websettings api:PutGeolocationAllowed and GeolocationAllowed");
1834     ADD_TEST(tests, 225, "Test websettings api:PutAccessModeForSecureOriginLoadFromInsecure and " \
1835         "AccessModeForSecureOriginLoadFromInsecure");
1836     ADD_TEST(tests, 226, "Test websettings api:PutAccessModeForSecureOriginLoadFromInsecure and " \
1837         "AccessModeForSecureOriginLoadFromInsecure");
1838     ADD_TEST(tests, 227, "Test websettings api:PutZoomingFunctionEnabled and ZoomingfunctionEnabled");
1839     ADD_TEST(tests, 228, "Test websettings api:PutDomStorageEnabled and IsDomStorageEnabled");
1840     ADD_TEST(tests, 229, "Test websettings api:PutIsCreateWindowsByJavaScriptAllowed and " \
1841         "IsCreateWindowsByJavaScriptAllowed");
1842     ADD_TEST(tests, 230, "Test websettings api:PutJavaScriptEnabled and IsJavaScriptAllowed");
1843     ADD_TEST(tests, 231, "Test websettings api:PutDefaultTextEncodingFormat and DefaultTextEncodingFormat");
1844     ADD_TEST(tests, 232, "Test websettings api:PutBlockNetwork and IsNetworkBlocked");
1845     ADD_TEST(tests, 233, "Test websettings api:PutWebDebuggingAccess and IsWebDebuggingAccess");
1846     ADD_TEST(tests, 234, "Test websettings api:PutDarkSchemeEnabled and DarkSchemeEnabled");
1847 }
1848 
Usage(const char * argv0,const std::vector<struct OhosNWebTest> & tests)1849 void Usage(const char *argv0, const std::vector<struct OhosNWebTest> &tests)
1850 {
1851     TESTLOG_I("Usage: %{public}s test_id", argv0);
1852     for (auto it = tests.begin(); it != tests.end(); it++) {
1853         TESTLOG_I("test %{public}d: %{public}s", it->id, it->desc);
1854     }
1855 }
1856 } // anonymous namespace
1857 
main(int32_t argc,const char * const argv[])1858 int32_t main(int32_t argc, const char * const argv[])
1859 {
1860     TESTLOG_I("ohos nweb test start");
1861 
1862     std::vector<struct OhosNWebTest> tests;
1863     InitTest(tests);
1864 
1865     if (argc <= 1) {
1866         Usage(argv[0], tests);
1867         return 0;
1868     }
1869 
1870     int32_t testcase = -1;
1871     int ret = sscanf_s(argv[1], "%d", &testcase);
1872     if (ret == 0) {
1873         Usage(argv[0], tests);
1874         return 1;
1875     }
1876 
1877     InitArgs(argc, argv);
1878 
1879     auto runner = AppExecFwk::EventRunner::Create(false);
1880     g_handler = std::make_shared<AppExecFwk::EventHandler>(runner);
1881     if (g_handler == nullptr) {
1882         TESTLOG_E("fail to new g_handler.");
1883         return 0;
1884     }
1885     auto condition = [testcase] (auto &item) { return item.id == testcase; };
1886     auto test = std::find_if(tests.begin(), tests.end(), condition);
1887     if (test != tests.end()) {
1888         g_handler->PostTask(test->func);
1889         TESTLOG_I("%{public}d %{public}s run!", test->id, test->desc);
1890     } else {
1891         TESTLOG_E("not found test %{public}d", testcase);
1892         return 0;
1893     }
1894 
1895     runner->Run();
1896     return 0;
1897 }
1898