• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 <gtest/gtest.h>
17 #include <gmock/gmock.h>
18 #include <securec.h>
19 
20 #define private public
21 #include "nweb.h"
22 #include "nweb_helper.h"
23 #include "nweb_config_helper.h"
24 #include "nweb_adapter_helper.h"
25 #include "base/web/webview/interfaces/native/arkweb_interface.h"
26 
27 using namespace testing;
28 using namespace testing::ext;
29 
30 namespace OHOS {
31 namespace NWeb {
32 class MockNWebEngine : public OHOS::NWeb::NWebEngine {
33 public:
CreateNWeb(std::shared_ptr<NWebCreateInfo> create_info)34     std::shared_ptr<NWeb> CreateNWeb(std::shared_ptr<NWebCreateInfo> create_info)
35     {
36         return nullptr;
37     }
38 
GetNWeb(int32_t nweb_id)39     std::shared_ptr<NWeb> GetNWeb(int32_t nweb_id)
40     {
41         return nullptr;
42     }
43 
GetDataBase()44     std::shared_ptr<NWebDataBase> GetDataBase()
45     {
46         return nullptr;
47     }
48 
GetWebStorage()49     std::shared_ptr<NWebWebStorage> GetWebStorage()
50     {
51         return nullptr;
52     }
53 
GetCookieManager()54     std::shared_ptr<NWebCookieManager> GetCookieManager()
55     {
56         return nullptr;
57     }
58 
GetDownloadManager()59     std::shared_ptr<NWebDownloadManager> GetDownloadManager()
60     {
61         return nullptr;
62     }
63 
SetWebTag(int32_t nweb_id,const char * web_tag)64     void SetWebTag(int32_t nweb_id, const char* web_tag) {}
65 
InitializeWebEngine(std::shared_ptr<NWebEngineInitArgs> init_args)66     void InitializeWebEngine(std::shared_ptr<NWebEngineInitArgs> init_args) {}
67 
PrepareForPageLoad(const std::string & url,bool preconnectable,int32_t num_sockets)68     void PrepareForPageLoad(const std::string& url, bool preconnectable, int32_t num_sockets) {}
69 
SetWebDebuggingAccess(bool isEnableDebug)70     void SetWebDebuggingAccess(bool isEnableDebug) {}
71 
AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string> & hosts)72     void AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts) {}
73 
RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string> & hosts)74     void RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts) {}
ClearIntelligentTrackingPreventionBypassingList()75     void ClearIntelligentTrackingPreventionBypassingList() {}
76 
GetDefaultUserAgent()77     std::string GetDefaultUserAgent()
78     {
79         return "";
80     }
81 
PauseAllTimers()82     void PauseAllTimers() {}
83 
ResumeAllTimers()84     void ResumeAllTimers() {}
85 
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)86     void PrefetchResource(const std::shared_ptr<NWebEnginePrefetchArgs>& pre_args,
87         const std::map<std::string, std::string>& additional_http_headers, const std::string& cache_key,
88         const uint32_t& cache_valid_time)
89     {}
90 
SetRenderProcessMode(RenderProcessMode mode)91     void SetRenderProcessMode(RenderProcessMode mode) {}
92 
GetRenderProcessMode()93     RenderProcessMode GetRenderProcessMode()
94     {
95         return RenderProcessMode::SINGLE_MODE;
96     }
97 
ClearPrefetchedResource(const std::vector<std::string> & cache_key_list)98     void ClearPrefetchedResource(const std::vector<std::string>& cache_key_list) {}
99 
WarmupServiceWorker(const std::string & url)100     void WarmupServiceWorker(const std::string& url) {}
101 
SetHostIP(const std::string & hostName,const std::string & address,int32_t aliveTime)102     void SetHostIP(const std::string& hostName, const std::string& address, int32_t aliveTime) {}
103 
ClearHostIP(const std::string & hostName)104     void ClearHostIP(const std::string& hostName) {}
105 
SetWholeWebDrawing()106     void SetWholeWebDrawing() {}
107 
GetAdsBlockManager()108     std::shared_ptr<NWebAdsBlockManager> GetAdsBlockManager()
109     {
110         return nullptr;
111     }
112 
EnableBackForwardCache(bool nativeEmbed,bool mediaTakeOver)113     void EnableBackForwardCache(bool nativeEmbed, bool mediaTakeOver) {}
114 
RemoveAllCache(bool include_disk_files)115     void RemoveAllCache(bool include_disk_files) {}
116 };
117 
118 class OHArkWebInterfaceTest : public testing::Test {
119 public:
120     static void SetUpTestCase(void);
121     static void TearDownTestCase(void);
122     void SetUp();
123     void TearDown();
124 };
125 
SetUpTestCase(void)126 void OHArkWebInterfaceTest::SetUpTestCase(void)
127 {}
128 
TearDownTestCase(void)129 void OHArkWebInterfaceTest::TearDownTestCase(void)
130 {}
131 
SetUp(void)132 void OHArkWebInterfaceTest::SetUp(void)
133 {}
134 
TearDown(void)135 void OHArkWebInterfaceTest::TearDown(void)
136 {}
137 
138 /**
139  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_001
140  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadComponentAPI
141  */
142 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_001, TestSize.Level1) {
143     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_COMPONENT;
144     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
145     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
146 
147     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
148     EXPECT_NE(result, nullptr);
149 
150     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
151     EXPECT_NE(result1, nullptr);
152 
153     OH_ArkWeb_DestroyGlobalPointersForTest();
154     NWebHelper::Instance().nwebEngine_ = nullptr;
155     NWebHelper::Instance().bundlePath_ = "";
156     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
157     EXPECT_EQ(result2, nullptr);
158 }
159 
160 /**
161  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_002
162  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadControllerAPI
163  */
164 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_002, TestSize.Level1) {
165     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_CONTROLLER;
166     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
167     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
168 
169     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
170     EXPECT_NE(result, nullptr);
171 
172     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
173     EXPECT_NE(result1, nullptr);
174 
175     OH_ArkWeb_DestroyGlobalPointersForTest();
176     NWebHelper::Instance().nwebEngine_ = nullptr;
177     NWebHelper::Instance().bundlePath_ = "";
178     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
179     EXPECT_EQ(result2, nullptr);
180 }
181 
182 /**
183  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_003
184  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadWebMessagePortAPI
185  */
186 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_003, TestSize.Level1) {
187     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_WEB_MESSAGE_PORT;
188     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
189     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
190 
191     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
192     EXPECT_NE(result, nullptr);
193 
194     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
195     EXPECT_NE(result1, nullptr);
196 
197     OH_ArkWeb_DestroyGlobalPointersForTest();
198     NWebHelper::Instance().nwebEngine_ = nullptr;
199     NWebHelper::Instance().bundlePath_ = "";
200     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
201     EXPECT_EQ(result2, nullptr);
202 }
203 
204 /**
205  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_004
206  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadWebMessageAPI
207  */
208 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_004, TestSize.Level1) {
209     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_WEB_MESSAGE;
210     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
211     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
212 
213     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
214     EXPECT_NE(result, nullptr);
215 
216     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
217     EXPECT_NE(result1, nullptr);
218 
219     OH_ArkWeb_DestroyGlobalPointersForTest();
220     NWebHelper::Instance().nwebEngine_ = nullptr;
221     NWebHelper::Instance().bundlePath_ = "";
222     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
223     EXPECT_EQ(result2, nullptr);
224 }
225 
226 
227 /**
228  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_005
229  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadCookieManagerAPI
230  */
231 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_005, TestSize.Level1) {
232     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_COOKIE_MANAGER;
233     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
234     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
235     NWebHelper::Instance().initFlag_ = true;
236 
237     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
238     EXPECT_NE(result, nullptr);
239 
240     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
241     EXPECT_NE(result1, nullptr);
242 
243     OH_ArkWeb_DestroyGlobalPointersForTest();
244     NWebHelper::Instance().nwebEngine_ = nullptr;
245     NWebHelper::Instance().bundlePath_ = "";
246     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
247     EXPECT_EQ(result2, nullptr);
248 }
249 
250 /**
251  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_006
252  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadJavaScriptValueAPI
253  */
254 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_006, TestSize.Level1) {
255     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_JAVASCRIPT_VALUE;
256     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
257     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
258 
259     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
260     EXPECT_NE(result, nullptr);
261 
262     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
263     EXPECT_NE(result1, nullptr);
264 
265     OH_ArkWeb_DestroyGlobalPointersForTest();
266     NWebHelper::Instance().nwebEngine_ = nullptr;
267     NWebHelper::Instance().bundlePath_ = "";
268     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
269     EXPECT_EQ(result2, nullptr);
270 }
271 
272 /**
273  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_RegisterScrollCallback
274  * @tc.desc  : Test OH_ArkWeb_RegisterScrollCallback
275  */
276 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_RegisterScrollCallback, TestSize.Level1) {
277     const char* webTag = "testWebTag";
278     void* userData = nullptr;
__anonc6ac4f470102(const char* webTag, void* userData, double x, double y) 279     ArkWeb_OnScrollCallback callback = [](const char* webTag, void* userData, double x, double y) {};
280     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
281     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
282     bool result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData);
283     EXPECT_EQ(result, false);
284     result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData);
285     EXPECT_EQ(result, false);
286     OH_ArkWeb_DestroyGlobalPointersForTest();
287     NWebHelper::Instance().nwebEngine_ = nullptr;
288     NWebHelper::Instance().bundlePath_ = "";
289     result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData);
290     EXPECT_EQ(result, false);
291 }
292 
293 }
294 }