• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <cstring>
17 #include <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