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 <gtest/gtest.h>
18 #include <gmock/gmock.h>
19 #include <securec.h>
20 #include <unordered_map>
21
22 #define private public
23 #include "nweb.h"
24 #include "nweb_helper.h"
25 #include "nweb_config_helper.h"
26 #include "nweb_adapter_helper.h"
27 #include "nweb_create_window.h"
28 #include "nweb_c_api.h"
29 #include "nweb_init_params.h"
30 #include "foundation/ability/ability_runtime/interfaces/kits/native/appkit/ability_runtime/context/application_context.h"
31
32 using namespace testing;
33 using namespace testing::ext;
34 using namespace OHOS;
35 using namespace OHOS::Rosen;
36 using namespace OHOS::AbilityRuntime;
37
38 namespace OHOS {
39 namespace {
40 const int DEFAULT_WIDTH = 2560;
41 const int DEFAULT_HEIGHT = 1396;
42 const int32_t MAX_WIDTH = 7681;
43 const int32_t LTPO_STRATEGY = 1;
44 const std::string INSTALLATION_DIR = "/data/app/el1/bundle/public/com.ohos.arkwebcore";
45 std::shared_ptr<AbilityRuntime::ApplicationContext> g_applicationContext = nullptr;
46 } // namespace
47
48 namespace AbilityRuntime {
GetApplicationContext()49 std::shared_ptr<ApplicationContext> Context::GetApplicationContext()
50 {
51 return g_applicationContext;
52 }
53 } // namespace AbilityRuntime
54
55 namespace NWeb {
56
57 class NwebHelperTest : public testing::Test {
58 public:
59 static void SetUpTestCase(void);
60 static void TearDownTestCase(void);
61 void SetUp();
62 void TearDown();
63 };
64
65 class ApplicationContextMock : public ApplicationContext {
66 public:
67 MOCK_CONST_METHOD0(GetBaseDir, std::string());
68 };
69
70 class MockNWebEngine : public OHOS::NWeb::NWebEngine {
71 public:
CreateNWeb(std::shared_ptr<NWebCreateInfo> create_info)72 std::shared_ptr<NWeb> CreateNWeb(std::shared_ptr<NWebCreateInfo> create_info)
73 {
74 return nullptr;
75 }
76
GetNWeb(int32_t nweb_id)77 std::shared_ptr<NWeb> GetNWeb(int32_t nweb_id)
78 {
79 return nullptr;
80 }
81
GetDataBase()82 std::shared_ptr<NWebDataBase> GetDataBase()
83 {
84 return nullptr;
85 }
86
GetWebStorage()87 std::shared_ptr<NWebWebStorage> GetWebStorage()
88 {
89 return nullptr;
90 }
91
GetCookieManager()92 std::shared_ptr<NWebCookieManager> GetCookieManager()
93 {
94 return nullptr;
95 }
96
GetDownloadManager()97 std::shared_ptr<NWebDownloadManager> GetDownloadManager()
98 {
99 return nullptr;
100 }
101
SetWebTag(int32_t nweb_id,const char * web_tag)102 void SetWebTag(int32_t nweb_id, const char* web_tag) {}
103
InitializeWebEngine(std::shared_ptr<NWebEngineInitArgs> init_args)104 void InitializeWebEngine(std::shared_ptr<NWebEngineInitArgs> init_args) {}
105
PrepareForPageLoad(const std::string & url,bool preconnectable,int32_t num_sockets)106 void PrepareForPageLoad(const std::string& url, bool preconnectable, int32_t num_sockets) {}
107
SetWebDebuggingAccess(bool isEnableDebug)108 void SetWebDebuggingAccess(bool isEnableDebug) {}
109
AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string> & hosts)110 void AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts) {}
111
RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string> & hosts)112 void RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts) {}
ClearIntelligentTrackingPreventionBypassingList()113 void ClearIntelligentTrackingPreventionBypassingList() {}
114
GetDefaultUserAgent()115 std::string GetDefaultUserAgent()
116 {
117 return "";
118 }
119
PauseAllTimers()120 void PauseAllTimers() {}
121
ResumeAllTimers()122 void ResumeAllTimers() {}
123
PrefetchResource(const std::shared_ptr<NWebEnginePrefetchArgs> & pre_args,const std::map<std::string,std::string> & additional_http_headers,const std::string & cache_key,const uint32_t & cache_valid_time)124 void PrefetchResource(const std::shared_ptr<NWebEnginePrefetchArgs>& pre_args,
125 const std::map<std::string, std::string>& additional_http_headers, const std::string& cache_key,
126 const uint32_t& cache_valid_time)
127 {}
128
SetRenderProcessMode(RenderProcessMode mode)129 void SetRenderProcessMode(RenderProcessMode mode)
130 {
131 process_mode_ = mode;
132 }
133
GetRenderProcessMode()134 RenderProcessMode GetRenderProcessMode()
135 {
136 return process_mode_;
137 }
138
ClearPrefetchedResource(const std::vector<std::string> & cache_key_list)139 void ClearPrefetchedResource(const std::vector<std::string>& cache_key_list) {}
140
WarmupServiceWorker(const std::string & url)141 void WarmupServiceWorker(const std::string& url) {}
142
SetHostIP(const std::string & hostName,const std::string & address,int32_t aliveTime)143 void SetHostIP(const std::string& hostName, const std::string& address, int32_t aliveTime) {}
144
ClearHostIP(const std::string & hostName)145 void ClearHostIP(const std::string& hostName) {}
146
EnableWholeWebPageDrawing()147 void EnableWholeWebPageDrawing() {}
148
GetAdsBlockManager()149 std::shared_ptr<NWebAdsBlockManager> GetAdsBlockManager()
150 {
151 return nullptr;
152 }
153
EnableBackForwardCache(bool nativeEmbed,bool mediaTakeOver)154 void EnableBackForwardCache(bool nativeEmbed, bool mediaTakeOver) {}
155
RemoveAllCache(bool include_disk_files)156 void RemoveAllCache(bool include_disk_files) {}
157
158 private:
159 RenderProcessMode process_mode_ = RenderProcessMode::SINGLE_MODE;
160 };
161
SetUpTestCase(void)162 void NwebHelperTest::SetUpTestCase(void)
163 {}
164
TearDownTestCase(void)165 void NwebHelperTest::TearDownTestCase(void)
166 {}
167
SetUp(void)168 void NwebHelperTest::SetUp(void)
169 {}
170
TearDown(void)171 void NwebHelperTest::TearDown(void)
172 {}
173
174 std::unordered_map<std::string, std::string> g_argsMap;
175
176 /**
177 * @tc.name: NWebHelper_GetWebStorage_002
178 * @tc.desc: GetWebStorage.
179 * @tc.type: FUNC
180 * @tc.require: AR000GGHJ8
181 */
182 HWTEST_F(NwebHelperTest, NWebHelper_GetWebStorage_002, TestSize.Level1)
183 {
184 auto web_storage = NWebHelper::Instance().GetWebStorage();
185 EXPECT_EQ(web_storage, nullptr);
186 auto nwebEngineMock = std::make_shared<MockNWebEngine>();
187 NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
188 auto web_storage1 = NWebHelper::Instance().GetWebStorage();
189 EXPECT_EQ(web_storage1, nullptr);
190 NWebAdapterHelper::Instance().ReadConfigIfNeeded();
191 std::string config = NWebAdapterHelper::Instance().ParsePerfConfig("web", "test");
192 EXPECT_TRUE(config.empty());
193 NWebConfigHelper::Instance().perfConfig_.emplace("web/test", "web_test");
194 config = NWebAdapterHelper::Instance().ParsePerfConfig("web", "test");
195 EXPECT_FALSE(config.empty());
196 }
197
198 /**
199 * @tc.name: NWebHelper_GetDataBase_003
200 * @tc.desc: GetDataBase.
201 * @tc.type: FUNC
202 * @tc.require:issueI5OESN
203 */
204 HWTEST_F(NwebHelperTest, NWebHelper_GetDataBase_003, TestSize.Level1)
205 {
206 auto nwebEngineMock = std::make_shared<MockNWebEngine>();
207 NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
208 auto dataBase = NWebHelper::Instance().GetDataBase();
209 EXPECT_EQ(dataBase, nullptr);
210
211 std::shared_ptr<NWebCookieManager> cook = NWebHelper::Instance().GetCookieManager();
212 EXPECT_EQ(cook, nullptr);
213 NWebHelper::Instance().initFlag_ = true;
214 EXPECT_EQ(NWebHelper::Instance().GetCookieManager(), nullptr);
215 NWebHelper::Instance().initFlag_ = false;
216
217 // Test NWebAdapterHelper::CreateNWeb
218 void *enhanceSurfaceInfo = nullptr;
219 int32_t temp = 1;
220 std::shared_ptr<NWeb> nweb =
221 NWebAdapterHelper::Instance().CreateNWeb(enhanceSurfaceInfo, GetInitArgs(),
222 DEFAULT_WIDTH, DEFAULT_HEIGHT);
223 EXPECT_EQ(nweb, nullptr);
224 enhanceSurfaceInfo = static_cast<void *>(&temp);
225 nweb = NWebAdapterHelper::Instance().CreateNWeb(enhanceSurfaceInfo, GetInitArgs(),
226 DEFAULT_WIDTH, MAX_WIDTH);
227 EXPECT_EQ(nweb, nullptr);
228 nweb = NWebAdapterHelper::Instance().CreateNWeb(enhanceSurfaceInfo, GetInitArgs(),
229 MAX_WIDTH, DEFAULT_HEIGHT);
230 EXPECT_EQ(nweb, nullptr);
231 nweb = NWebAdapterHelper::Instance().CreateNWeb(enhanceSurfaceInfo, GetInitArgs(),
232 DEFAULT_WIDTH, DEFAULT_HEIGHT);
233 EXPECT_EQ(nweb, nullptr);
234 NWebHelper::Instance().nwebEngine_ = nullptr;
235 nweb = NWebAdapterHelper::Instance().CreateNWeb(enhanceSurfaceInfo, GetInitArgs(),
236 DEFAULT_WIDTH, DEFAULT_HEIGHT);
237 EXPECT_EQ(nweb, nullptr);
238 EXPECT_EQ(NWebHelper::Instance().GetDataBase(), nullptr);
239 }
240
241 /**
242 * @tc.name: NWebHelper_TryPreReadLib_004
243 * @tc.desc: TryPreReadLib.
244 * @tc.type: FUNC
245 * @tc.require: AR000GGHJ8
246 */
247 HWTEST_F(NwebHelperTest, NWebHelper_TryPreReadLib_004, TestSize.Level1)
248 {
249 std::string hapPath = "";
250 if (access(INSTALLATION_DIR.c_str(), F_OK) == 0) {
251 hapPath = INSTALLATION_DIR;
252 }
253 NWebHelper::Instance().TryPreReadLib(false, hapPath);
254 NWebHelper::Instance().TryPreReadLib(true, hapPath);
255 NWebHelper::Instance().SetBundlePath(INSTALLATION_DIR);
256 bool result = NWebAdapterHelper::Instance().Init(false);
257 EXPECT_FALSE(result);
258 }
259
260 /**
261 * @tc.name: NWebHelper_GetConfigPath_005
262 * @tc.desc: GetConfigPath.
263 * @tc.type: FUNC
264 * @tc.require: AR000GGHJ8
265 */
266 HWTEST_F(NwebHelperTest, NWebHelper_GetConfigPath_005, TestSize.Level1)
267 {
268 std::string configFileName = "test";
269 std::string figPath = NWebConfigHelper::Instance().GetConfigPath(configFileName);
270 EXPECT_FALSE(figPath.empty());
271 std::shared_ptr<NWebEngineInitArgsImpl> initArgs = std::make_shared<NWebEngineInitArgsImpl>();
272 NWebAdapterHelper::Instance().ParseConfig(initArgs);
273 NWebHelper::Instance().PrepareForPageLoad("web_test", true, 0);
274 NWebHelper::Instance().WarmupServiceWorker("web_test");
275 NWebHelper::Instance().PrefetchResource(nullptr, {}, "web_test", 0);
276 NWebHelper::Instance().ClearPrefetchedResource({"web_test"});
277 NWebHelper::Instance().bundlePath_.clear();
278 NWebHelper::Instance().EnableBackForwardCache(true, true);
279 NWebHelper::Instance().SetCustomSchemeCmdLine("single-process");
280 NWebHelper::Instance().SetBundlePath(INSTALLATION_DIR);
281 bool result = NWebHelper::Instance().InitAndRun(false);
282 EXPECT_FALSE(result);
283 NWebHelper::Instance().SetConnectionTimeout(1);
284 NWebHelper::Instance().LoadWebEngine(true, false);
285
286 auto nwebEngineMock = std::make_shared<MockNWebEngine>();
287 NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
288 NWebHelper::Instance().PrefetchResource(nullptr, {}, "web_test", 0);
289 NWebHelper::Instance().ClearPrefetchedResource({"web_test"});
290 // To test SetRenderProcessMode and GetRenderProcessMode.
291 NWebHelper::Instance().SetRenderProcessMode(RenderProcessMode::SINGLE_MODE);
292 RenderProcessMode render_process_mode =
293 NWebHelper::Instance().GetRenderProcessMode();
294 EXPECT_EQ(render_process_mode, RenderProcessMode::SINGLE_MODE);
295 NWebHelper::Instance().SetRenderProcessMode(RenderProcessMode::MULTIPLE_MODE);
296 render_process_mode = NWebHelper::Instance().GetRenderProcessMode();
297 EXPECT_EQ(render_process_mode, RenderProcessMode::MULTIPLE_MODE);
298
299 NWebHelper::Instance().nwebEngine_ = nullptr;
300 NWebHelper::Instance().SetRenderProcessMode(RenderProcessMode::MULTIPLE_MODE);
301 EXPECT_EQ(NWebHelper::Instance().GetRenderProcessMode(), RenderProcessMode::SINGLE_MODE);
302 }
303
304 /**
305 * @tc.name: NWebHelper_LoadNWebSDK_006
306 * @tc.desc: LoadNWebSDK.
307 * @tc.type: FUNC
308 * @tc.require:
309 */
310 HWTEST_F(NwebHelperTest, NWebHelper_LoadNWebSDK_006, TestSize.Level1)
311 {
312 auto nwebEngineMock = std::make_shared<MockNWebEngine>();
313 NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
314 bool result = NWebHelper::Instance().LoadNWebSDK();
315 EXPECT_TRUE(result);
316 static WebDownloadDelegateCallback *downloadCallback;
317 WebDownloader_CreateDownloadDelegateCallback(&downloadCallback);
318 EXPECT_EQ(downloadCallback, nullptr);
__anon8c62d8f60202(NWebDownloadItem *downloadItem, WebBeforeDownloadCallbackWrapper *wrapper) 319 OnDownloadBeforeStart fun = [] (NWebDownloadItem *downloadItem, WebBeforeDownloadCallbackWrapper *wrapper) {};
320 WebDownloader_SetDownloadBeforeStart(downloadCallback, fun);
321 WebDownloadManager_PutDownloadCallback(downloadCallback);
__anon8c62d8f60302(NWebDownloadItem *downloadItem, WebDownloadItemCallbackWrapper *wrapper) 322 OnDownloadDidUpdate didUpdate = [] (NWebDownloadItem *downloadItem, WebDownloadItemCallbackWrapper *wrapper) {};
323 WebDownloader_SetDownloadDidUpdate(downloadCallback, didUpdate);
324 NWebDownloadItem *downloadItem = nullptr;
325 WebDownloadItem_CreateWebDownloadItem(&downloadItem);
326 EXPECT_EQ(downloadItem, nullptr);
327 WebDownloader_ResumeDownloadStatic(downloadItem);
328 WebDownloader_StartDownload(1, "test_web");
329 WebDownload_Continue(nullptr, "test_web");
330 WebDownload_CancelBeforeDownload(nullptr);
331 WebDownload_PauseBeforeDownload(nullptr);
332 WebDownload_ResumeBeforeDownload(nullptr);
333 WebDownload_Cancel(nullptr);
334 WebDownload_Pause(nullptr);
335 WebDownload_Resume(nullptr);
336 long itemId = WebDownloadItem_GetDownloadItemId(downloadItem);
337 EXPECT_NE(itemId, -1);
338 WebDownloadItem_GetState(nullptr);
339 NWebDownloadItem *download = nullptr;
340 int speed = WebDownloadItem_CurrentSpeed(download);
341 EXPECT_EQ(speed, 0);
342 int complete = WebDownloadItem_PercentComplete(download);
343 EXPECT_EQ(complete, 0);
344 WebDownloadItem_SetReceivedBytes(downloadItem, 1);
345 WebDownloadItem_TotalBytes(downloadItem);
346 int64_t receivedBytes = WebDownloadItem_ReceivedBytes(downloadItem);
347 EXPECT_EQ(receivedBytes, 0);
348 char* originalUrl = WebDownloadItem_OriginalUrl(downloadItem);
349 EXPECT_EQ(originalUrl, nullptr);
350 char* fileName = WebDownloadItem_SuggestedFileName(downloadItem);
351 EXPECT_EQ(fileName, nullptr);
352 char* disposition = WebDownloadItem_ContentDisposition(downloadItem);
353 EXPECT_EQ(disposition, nullptr);
354 }
355
356 /**
357 * @tc.name: NWebHelper_WebDownloadItem_IsPaused_007
358 * @tc.desc: WebDownloadItem_IsPaused.
359 * @tc.type: FUNC
360 * @tc.require:
361 */
362 HWTEST_F(NwebHelperTest, NWebHelper_WebDownloadItem_IsPaused_007, TestSize.Level1)
363 {
364 NWebHelper::Instance().nwebEngine_ = std::make_shared<MockNWebEngine>();
365 bool result = NWebHelper::Instance().LoadNWebSDK();
366 EXPECT_TRUE(result);
367 NWebDownloadItem *downloadItem = nullptr;
368 WebDownloadItem_CreateWebDownloadItem(&downloadItem);
369 EXPECT_EQ(downloadItem, nullptr);
370 NWebDownloadItem *download = nullptr;
371 bool isPaused = WebDownloadItem_IsPaused(download);
372 EXPECT_FALSE(isPaused);
373 char* method = WebDownloadItem_Method(downloadItem);
374 EXPECT_EQ(method, nullptr);
375 WebDownloadItem_LastErrorCode(downloadItem);
376 char* receivedSlices = WebDownloadItem_ReceivedSlices(downloadItem);
377 EXPECT_EQ(receivedSlices, nullptr);
378 char* lastModified = WebDownloadItem_LastModified(downloadItem);
379 EXPECT_EQ(lastModified, nullptr);
380 int nWebId = WebDownloadItem_NWebId(download);
381 EXPECT_EQ(nWebId, -1);
382 WebDownloadItem_Destroy(downloadItem);
383 DestroyBeforeDownloadCallbackWrapper(nullptr);
384 DestroyDownloadItemCallbackWrapper(nullptr);
385 WebDownloadItem_SetGuid(downloadItem, "test_web");
386 WebDownloadItem_SetUrl(downloadItem, "test_web");
387 WebDownloadItem_SetFullPath(downloadItem, "test_web");
388 WebDownloadItem_SetETag(downloadItem, "test_web");
389 WebDownloadItem_SetLastModified(downloadItem, "test_web");
390 WebDownloadItem_SetMimeType(downloadItem, "test_web");
391 WebDownloadItem_SetReceivedBytes(downloadItem, 1);
392 WebDownloadItem_SetTotalBytes(downloadItem, 1);
393 WebDownloadItem_SetReceivedSlices(downloadItem, "test_web");
394 char* guid = WebDownloadItem_Guid(downloadItem);
395 EXPECT_EQ(guid, nullptr);
396 int64_t totalBytes = WebDownloadItem_TotalBytes(downloadItem);
397 EXPECT_EQ(totalBytes, 0);
398 int64_t receivedBytes = WebDownloadItem_ReceivedBytes(downloadItem);
399 EXPECT_EQ(receivedBytes, 0);
400 char* fullPath = WebDownloadItem_FullPath(downloadItem);
401 EXPECT_EQ(fullPath, nullptr);
402 char* url = WebDownloadItem_Url(downloadItem);
403 EXPECT_EQ(url, nullptr);
404 char* eTag = WebDownloadItem_ETag(downloadItem);
405 EXPECT_EQ(eTag, nullptr);
406 char* mimeType = WebDownloadItem_MimeType(downloadItem);
407 EXPECT_EQ(mimeType, nullptr);
408 long itemId = WebDownloadItem_GetDownloadItemId(downloadItem);
409 auto state1 = WebDownload_GetItemState(nWebId, itemId);
410 auto state2 = WebDownload_GetItemStateByGuid("test_web");
411 EXPECT_EQ(state1, state2);
412 }
413
414 /**
415 * @tc.name: NWebHelper_LoadWebEngine_008
416 * @tc.desc: LoadWebEngine.
417 * @tc.type: FUNC
418 * @tc.require: AR000GGHJ8
419 */
420 HWTEST_F(NwebHelperTest, NWebHelper_LoadWebEngine_008, TestSize.Level1)
421 {
422 NWebHelper::Instance().nwebEngine_ = nullptr;
423 std::shared_ptr<NWebCreateInfoImpl> create_info = std::make_shared<NWebCreateInfoImpl>();
424 std::shared_ptr<NWeb> nweb = NWebHelper::Instance().CreateNWeb(create_info);
425 EXPECT_EQ(nweb, nullptr);
426 nweb = NWebHelper::Instance().GetNWeb(1);
427 EXPECT_EQ(nweb, nullptr);
428 NWebHelper::Instance().SetWebTag(1, "webtag");
429 std::shared_ptr<NWebDOHConfigImpl> config = std::make_shared<NWebDOHConfigImpl>();
430 NWebHelper::Instance().SetHttpDns(config);
431 std::vector<std::string> hosts;
432 NWebHelper::Instance().AddIntelligentTrackingPreventionBypassingList(hosts);
433 NWebHelper::Instance().RemoveIntelligentTrackingPreventionBypassingList(hosts);
434 NWebHelper::Instance().ClearIntelligentTrackingPreventionBypassingList();
435 NWebHelper::Instance().GetDefaultUserAgent();
436 NWebHelper::Instance().PauseAllTimers();
437 NWebHelper::Instance().ResumeAllTimers();
438
439 auto nwebEngineMock = std::make_shared<MockNWebEngine>();
440 NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
441 NWebHelper::Instance().SetHttpDns(config);
442 NWebHelper::Instance().PrepareForPageLoad("web_test", true, 0);
443 NWebHelper::Instance().WarmupServiceWorker("web_test");
444 NWebHelper::Instance().GetDataBase();
445 NWebHelper::Instance().SetConnectionTimeout(1);
446 NWebHelper::Instance().AddIntelligentTrackingPreventionBypassingList(hosts);
447 NWebHelper::Instance().RemoveIntelligentTrackingPreventionBypassingList(hosts);
448 NWebHelper::Instance().ClearIntelligentTrackingPreventionBypassingList();
449 NWebHelper::Instance().GetDefaultUserAgent();
450 NWebHelper::Instance().PauseAllTimers();
451 NWebHelper::Instance().ResumeAllTimers();
452 EXPECT_NE(NWebHelper::Instance().nwebEngine_, nullptr);
453 NWebHelper::Instance().LoadWebEngine(true, false);
454 bool result = NWebHelper::Instance().GetWebEngine(true);
455 EXPECT_TRUE(result);
456 NWebHelper::Instance().SetWebTag(1, "webtag");
457 }
458
459 /**
460 * @tc.name: NWebHelper_GetPerfConfig_001
461 * @tc.desc: GetPerfConfig.
462 * @tc.type: FUNC
463 * @tc.require:
464 */
465 HWTEST_F(NwebHelperTest, NWebHelper_GetPerfConfig_001, TestSize.Level1)
466 {
467 EXPECT_TRUE(NWebAdapterHelper::Instance().GetPerfConfig("test").empty());
468 NWebConfigHelper::Instance().ltpoConfig_["test"] = {OHOS::NWeb::FrameRateSetting{0, 0, 0}};
469 EXPECT_FALSE(NWebAdapterHelper::Instance().GetPerfConfig("test").empty());
470 NWebConfigHelper::Instance().ltpoConfig_.clear();
471 }
472
473 /**
474 * @tc.name: NWebHelper_ParseNWebLTPOConfig_001
475 * @tc.desc: ParseNWebLTPOConfig.
476 * @tc.type: FUNC
477 * @tc.require:
478 */
479 HWTEST_F(NwebHelperTest, NWebHelper_ParseNWebLTPOConfig_001, TestSize.Level1)
480 {
481 EXPECT_TRUE(NWebConfigHelper::Instance().ltpoConfig_.empty());
482 std::shared_ptr<NWebEngineInitArgsImpl> initArgs = std::make_shared<NWebEngineInitArgsImpl>();
483 NWebAdapterHelper::Instance().ParseConfig(initArgs);
484 EXPECT_TRUE(NWebConfigHelper::Instance().ltpoConfig_.empty());
485 }
486
487 /**
488 * @tc.name: NWebHelper_SetHostIP_001
489 * @tc.desc: SetHostIP.
490 * @tc.type: FUNC
491 * @tc.require:
492 */
493 HWTEST_F(NwebHelperTest, NWebHelper_SetHostIP_001, TestSize.Level1)
494 {
495 std::string hostName = "hello";
496 std::string address = "world";
497 int32_t aliveTime = 0;
498
499 NWebHelper::Instance().nwebEngine_ = nullptr;
500 NWebHelper::Instance().SetHostIP(hostName, address, aliveTime);
501 EXPECT_EQ(NWebHelper::Instance().nwebEngine_, nullptr);
502
503 auto nwebEngineMock = std::make_shared<MockNWebEngine>();
504 NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
505 NWebHelper::Instance().SetHostIP(hostName, address, aliveTime);
506 EXPECT_NE(NWebHelper::Instance().nwebEngine_, nullptr);
507
508 NWebHelper::Instance().nwebEngine_ = nullptr;
509 }
510
511 /**
512 * @tc.name: NWebHelper_ClearHostIP_001
513 * @tc.desc: ClearHostIP.
514 * @tc.type: FUNC
515 * @tc.require:
516 */
517 HWTEST_F(NwebHelperTest, NWebHelper_ClearHostIP_001, TestSize.Level1)
518 {
519 int32_t nweb_id = 1;
520 auto nwebHelper = NWebHelper::Instance().GetNWeb(nweb_id);
521 EXPECT_EQ(nwebHelper, nullptr);
522
523 std::string hostName = "name";
524 NWebHelper::Instance().nwebEngine_ = nullptr;
525 NWebHelper::Instance().ClearHostIP(hostName);
526 EXPECT_EQ(NWebHelper::Instance().nwebEngine_, nullptr);
527
528 auto nwebengineMock = std::make_shared<MockNWebEngine>();
529 NWebHelper::Instance().nwebEngine_ = nwebengineMock;
530 NWebHelper::Instance().ClearHostIP(hostName);
531 EXPECT_NE(NWebHelper::Instance().nwebEngine_, nullptr);
532
533 NWebHelper::Instance().nwebEngine_ = nullptr;
534 }
535
536 /**
537 * @tc.name: NWebHelper_EnableWholeWebPageDrawing_001
538 * @tc.desc: EnableWholeWebPageDrawing.
539 * @tc.type: FUNC
540 * @tc.require:
541 */
542 HWTEST_F(NwebHelperTest, NWebHelper_EnableWholeWebPageDrawing_001, TestSize.Level1)
543 {
544 int32_t nweb_id = 1;
545 auto nwebHelper = NWebHelper::Instance().GetNWeb(nweb_id);
546 EXPECT_EQ(nwebHelper, nullptr);
547
548 auto nwebengineMock = std::make_shared<MockNWebEngine>();
549 NWebHelper::Instance().nwebEngine_ = nwebengineMock;
550 NWebHelper::Instance().EnableWholeWebPageDrawing();
551 EXPECT_NE(NWebHelper::Instance().nwebEngine_, nullptr);
552
553 NWebHelper::Instance().nwebEngine_ = nullptr;
554 NWebHelper::Instance().EnableWholeWebPageDrawing();
555 }
556
557 /**
558 * @tc.name: NWebHelper_GetAdsBlockManager_001
559 * @tc.desc: GetAdsBlockManager.
560 * @tc.type: FUNC
561 * @tc.require:
562 */
563 HWTEST_F(NwebHelperTest, NWebHelper_GetAdsBlockManager_001, TestSize.Level1)
564 {
565 NWebHelper::Instance().nwebEngine_ = nullptr;
566 NWebHelper::Instance().bundlePath_ = "";
567 std::shared_ptr<NWebCreateInfoImpl> create_info = std::make_shared<NWebCreateInfoImpl>();
568 std::shared_ptr<NWeb> nweb = NWebHelper::Instance().CreateNWeb(create_info);
569 EXPECT_EQ(nweb, nullptr);
570 nweb = NWebHelper::Instance().GetNWeb(1);
571 EXPECT_EQ(nweb, nullptr);
572 auto manager = NWebHelper::Instance().GetAdsBlockManager();
573 EXPECT_EQ(manager, nullptr);
574 auto nwebengineMock = std::make_shared<MockNWebEngine>();
575 NWebHelper::Instance().nwebEngine_ = nwebengineMock;
576 auto manager1 = NWebHelper::Instance().GetAdsBlockManager();
577 EXPECT_EQ(manager1, nullptr);
578 NWebHelper::Instance().nwebEngine_ = nullptr;
579 }
580
581 /**
582 * @tc.name: NWebHelper_TrimMemoryByPressureLevel_001
583 * @tc.desc: TrimMemoryByPressureLevel.
584 * @tc.type: FUNC
585 * @tc.require:
586 */
587 HWTEST_F(NwebHelperTest, NWebHelper_TrimMemoryByPressureLevel_001, TestSize.Level1)
588 {
589 int32_t nweb_id = 1;
590 auto nwebHelper = NWebHelper::Instance().GetNWeb(nweb_id);
591 EXPECT_EQ(nwebHelper, nullptr);
592
593 int32_t memoryLevel = 1;
594 NWebHelper::Instance().nwebEngine_ = nullptr;
595 NWebHelper::Instance().TrimMemoryByPressureLevel(memoryLevel);
596 EXPECT_EQ(NWebHelper::Instance().nwebEngine_, nullptr);
597
598 auto nwebengineMock = std::make_shared<MockNWebEngine>();
599 NWebHelper::Instance().nwebEngine_ = nwebengineMock;
600 EXPECT_EQ(NWebHelper::Instance().GetNWeb(nweb_id), nullptr);
601 NWebHelper::Instance().TrimMemoryByPressureLevel(memoryLevel);
602 EXPECT_NE(NWebHelper::Instance().nwebEngine_, nullptr);
603
604 NWebHelper::Instance().nwebEngine_ = nullptr;
605 }
606
607 /**
608 * @tc.name: NWebHelper_ParseNWebLTPOApp_001
609 * @tc.desc: ParseNWebLTPOApp.
610 * @tc.type: FUNC
611 * @tc.require:
612 */
613 HWTEST_F(NwebHelperTest, NWebHelper_ParseNWebLTPOApp_001, TestSize.Level1)
614 {
615 EXPECT_TRUE(NWebConfigHelper::Instance().ltpoAllowedApps_.empty());
616 EXPECT_FALSE(NWebConfigHelper::Instance().IsLTPODynamicApp(""));
617 std::shared_ptr<NWebEngineInitArgsImpl> initArgs = std::make_shared<NWebEngineInitArgsImpl>();
618 NWebAdapterHelper::Instance().ParseConfig(initArgs);
619 EXPECT_TRUE(NWebConfigHelper::Instance().ltpoAllowedApps_.empty());
620 EXPECT_FALSE(NWebConfigHelper::Instance().IsLTPODynamicApp(""));
621 EXPECT_FALSE(NWebAdapterHelper::Instance().IsLTPODynamicApp(""));
622
623 NWebConfigHelper::Instance().ltpoStrategy_ = LTPO_STRATEGY;
624 NWebAdapterHelper::Instance().ParseConfig(initArgs);
625 EXPECT_EQ(NWebConfigHelper::Instance().GetLTPOStrategy(), LTPO_STRATEGY);
626 EXPECT_EQ(NWebAdapterHelper::Instance().GetLTPOStrategy(), LTPO_STRATEGY);
627 }
628
629 /**
630 * @tc.name: NWebHelper_GetWebEngine_001
631 * @tc.desc: GetWebEngine.
632 * @tc.type: FUNC
633 * @tc.require:
634 */
635 HWTEST_F(NwebHelperTest, NWebHelper_GetWebEngine_001, TestSize.Level1)
636 {
637 NWebHelper::Instance().nwebEngine_ = nullptr;
638 NWebHelper::Instance().bundlePath_ = "";
639 g_applicationContext.reset();
640 bool result = NWebHelper::Instance().GetWebEngine(true);
641 EXPECT_FALSE(result);
642 ApplicationContextMock *contextMock = new ApplicationContextMock();
643 ASSERT_NE(contextMock, nullptr);
644 g_applicationContext.reset(contextMock);
645 result = NWebHelper::Instance().GetWebEngine(true);
646 EXPECT_FALSE(result);
647 }
648
649 /**
650 * @tc.name: NWebHelper_InitWebEngine
651 * @tc.desc: InitWebEngine.
652 * @tc.type: FUNC
653 * @tc.require:
654 */
655 HWTEST_F(NwebHelperTest, NWebHelper_InitWebEngine, TestSize.Level1)
656 {
657 NWebHelper::Instance().initFlag_ = true;
658 bool resultBool = NWebHelper::Instance().InitWebEngine();
659 EXPECT_TRUE(resultBool);
660 NWebHelper::Instance().initFlag_ = false;
661 resultBool = NWebHelper::Instance().InitWebEngine();
662 EXPECT_FALSE(resultBool);
663 ApplicationContextMock *contextMock = new ApplicationContextMock();
664 ASSERT_NE(contextMock, nullptr);
665 g_applicationContext.reset(contextMock);
666 resultBool = NWebHelper::Instance().InitWebEngine();
667 EXPECT_FALSE(resultBool);
668 }
669
670 /**
671 * @tc.name: NWebHelper_SetProxyOverride
672 * @tc.desc: SetProxyOverride.
673 * @tc.type: FUNC
674 * @tc.require:
675 */
676 HWTEST_F(NwebHelperTest, NWebHelper_SetProxyOverride, TestSize.Level1)
677 {
678 std::vector<std::string> proxyUrls = {"http://127.0.0.1:8080"};
679 std::vector<std::string> proxySchemeFilters = {"http", "https"};
680 std::vector<std::string> bypassRules = {"localhost", "127.0.0.1"};
681 bool reverseBypass = false;
682 NWebHelper::Instance().nwebEngine_ = nullptr;
683 NWebHelper::Instance().bundlePath_ = "";
684 NWebHelper::Instance().SetProxyOverride(proxyUrls, proxySchemeFilters, bypassRules, reverseBypass, nullptr);
685 NWebHelper::Instance().RemoveProxyOverride(nullptr);
686 auto nwebEngineMock = std::make_shared<MockNWebEngine>();
687 NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
688 NWebHelper::Instance().initFlag_ = true;
689 NWebHelper::Instance().RemoveProxyOverride(nullptr);
690 }
691
692 /**
693 * @tc.name: NWebHelper_RemoveAllCache
694 * @tc.desc: RemoveAllCache.
695 * @tc.type: FUNC
696 * @tc.require:
697 */
698 HWTEST_F(NwebHelperTest, NWebHelper_RemoveAllCache, TestSize.Level1)
699 {
700 auto nwebEngineMock = std::make_shared<MockNWebEngine>();
701 NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
702 NWebHelper::Instance().initFlag_ = true;
703 bool includeDiskFiles = true;
704 NWebHelper::Instance().RemoveAllCache(includeDiskFiles);
705 NWebHelper::Instance().nwebEngine_ = nullptr;
706 NWebHelper::Instance().bundlePath_ = "";
707 NWebHelper::Instance().RemoveAllCache(includeDiskFiles);
708 }
709
710 /**
711 * @tc.name: NWebHelper_GetBundleName_001
712 * @tc.desc: GetBundleName.
713 * @tc.type: FUNC
714 * @tc.require:
715 */
716 HWTEST_F(NwebHelperTest, NWebHelper_GetBundleName_001, TestSize.Level1)
717 {
718 std::string bundleName = NWebAdapterHelper::Instance().GetBundleName();
719 EXPECT_TRUE(bundleName.empty());
720 NWebConfigHelper::Instance().SetBundleName("testBundleName");
721 bundleName = NWebAdapterHelper::Instance().GetBundleName();
722 EXPECT_FALSE(bundleName.empty());
723 }
724 } // namespace OHOS::NWeb
725 }
726