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