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