• 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 
SetAppCustomUserAgent(const std::string & userAgent)106     void SetAppCustomUserAgent(const std::string& userAgent) {}
107 
SetUserAgentForHosts(const std::string & userAgent,const std::vector<std::string> & hosts)108     void SetUserAgentForHosts(const std::string& userAgent, const std::vector<std::string>& hosts) {}
109 
SetWholeWebDrawing()110     void SetWholeWebDrawing() {}
111 
GetAdsBlockManager()112     std::shared_ptr<NWebAdsBlockManager> GetAdsBlockManager()
113     {
114         return nullptr;
115     }
116 
EnableBackForwardCache(bool nativeEmbed,bool mediaTakeOver)117     void EnableBackForwardCache(bool nativeEmbed, bool mediaTakeOver) {}
118 
RemoveAllCache(bool include_disk_files)119     void RemoveAllCache(bool include_disk_files) {}
120 };
121 
122 class OHArkWebInterfaceTest : public testing::Test {
123 public:
124     static void SetUpTestCase(void);
125     static void TearDownTestCase(void);
126     void SetUp();
127     void TearDown();
128 };
129 
SetUpTestCase(void)130 void OHArkWebInterfaceTest::SetUpTestCase(void)
131 {}
132 
TearDownTestCase(void)133 void OHArkWebInterfaceTest::TearDownTestCase(void)
134 {}
135 
SetUp(void)136 void OHArkWebInterfaceTest::SetUp(void)
137 {}
138 
TearDown(void)139 void OHArkWebInterfaceTest::TearDown(void)
140 {}
141 
142 /**
143  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_001
144  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadComponentAPI
145  */
146 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_001, TestSize.Level1) {
147     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_COMPONENT;
148     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
149     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
150 
151     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
152     EXPECT_NE(result, nullptr);
153 
154     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
155     EXPECT_NE(result1, nullptr);
156 
157     OH_ArkWeb_DestroyGlobalPointersForTest();
158     NWebHelper::Instance().nwebEngine_ = nullptr;
159     NWebHelper::Instance().bundlePath_ = "";
160     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
161     EXPECT_EQ(result2, nullptr);
162 }
163 
164 /**
165  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_002
166  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadControllerAPI
167  */
168 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_002, TestSize.Level1) {
169     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_CONTROLLER;
170     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
171     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
172 
173     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
174     EXPECT_NE(result, nullptr);
175 
176     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
177     EXPECT_NE(result1, nullptr);
178 
179     OH_ArkWeb_DestroyGlobalPointersForTest();
180     NWebHelper::Instance().nwebEngine_ = nullptr;
181     NWebHelper::Instance().bundlePath_ = "";
182     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
183     EXPECT_EQ(result2, nullptr);
184 }
185 
186 /**
187  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_003
188  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadWebMessagePortAPI
189  */
190 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_003, TestSize.Level1) {
191     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_WEB_MESSAGE_PORT;
192     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
193     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
194 
195     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
196     EXPECT_NE(result, nullptr);
197 
198     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
199     EXPECT_NE(result1, nullptr);
200 
201     OH_ArkWeb_DestroyGlobalPointersForTest();
202     NWebHelper::Instance().nwebEngine_ = nullptr;
203     NWebHelper::Instance().bundlePath_ = "";
204     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
205     EXPECT_EQ(result2, nullptr);
206 }
207 
208 /**
209  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_004
210  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadWebMessageAPI
211  */
212 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_004, TestSize.Level1) {
213     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_WEB_MESSAGE;
214     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
215     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
216 
217     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
218     EXPECT_NE(result, nullptr);
219 
220     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
221     EXPECT_NE(result1, nullptr);
222 
223     OH_ArkWeb_DestroyGlobalPointersForTest();
224     NWebHelper::Instance().nwebEngine_ = nullptr;
225     NWebHelper::Instance().bundlePath_ = "";
226     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
227     EXPECT_EQ(result2, nullptr);
228 }
229 
230 
231 /**
232  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_005
233  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadCookieManagerAPI
234  */
235 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_005, TestSize.Level1) {
236     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_COOKIE_MANAGER;
237     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
238     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
239     NWebHelper::Instance().initFlag_ = true;
240 
241     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
242     EXPECT_NE(result, nullptr);
243 
244     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
245     EXPECT_NE(result1, nullptr);
246 
247     OH_ArkWeb_DestroyGlobalPointersForTest();
248     NWebHelper::Instance().nwebEngine_ = nullptr;
249     NWebHelper::Instance().bundlePath_ = "";
250     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
251     EXPECT_EQ(result2, nullptr);
252 }
253 
254 /**
255  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_006
256  * @tc.desc  : Test OH_ArkWeb_GetNativeAPI->LoadJavaScriptValueAPI
257  */
258 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_GetNativeAPI_006, TestSize.Level1) {
259     ArkWeb_NativeAPIVariantKind type = ARKWEB_NATIVE_JAVASCRIPT_VALUE;
260     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
261     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
262 
263     ArkWeb_AnyNativeAPI* result = OH_ArkWeb_GetNativeAPI(type);
264     EXPECT_NE(result, nullptr);
265 
266     ArkWeb_AnyNativeAPI* result1 = OH_ArkWeb_GetNativeAPI(type);
267     EXPECT_NE(result1, nullptr);
268 
269     OH_ArkWeb_DestroyGlobalPointersForTest();
270     NWebHelper::Instance().nwebEngine_ = nullptr;
271     NWebHelper::Instance().bundlePath_ = "";
272     ArkWeb_AnyNativeAPI* result2 = OH_ArkWeb_GetNativeAPI(type);
273     EXPECT_EQ(result2, nullptr);
274 }
275 
276 /**
277  * @tc.name  : OHArkWebInterfaceTest_OH_ArkWeb_RegisterScrollCallback
278  * @tc.desc  : Test OH_ArkWeb_RegisterScrollCallback
279  */
280 HWTEST_F(OHArkWebInterfaceTest, OHArkWebInterfaceTest_OH_ArkWeb_RegisterScrollCallback, TestSize.Level1) {
281     const char* webTag = "testWebTag";
282     void* userData = nullptr;
__anon0ef023a90102(const char* webTag, void* userData, double x, double y) 283     ArkWeb_OnScrollCallback callback = [](const char* webTag, void* userData, double x, double y) {};
284     auto nwebEngineMock = std::make_shared<MockNWebEngine>();
285     NWebHelper::Instance().nwebEngine_ = nwebEngineMock;
286     bool result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData);
287     EXPECT_EQ(result, false);
288     result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData);
289     EXPECT_EQ(result, false);
290     OH_ArkWeb_DestroyGlobalPointersForTest();
291     NWebHelper::Instance().nwebEngine_ = nullptr;
292     NWebHelper::Instance().bundlePath_ = "";
293     result = OH_ArkWeb_RegisterScrollCallback(webTag, callback, userData);
294     EXPECT_EQ(result, false);
295 }
296 
297 }
298 }