• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 "ohos_nweb/bridge/ark_web_engine_wrapper.h"
17 
18 #include "ohos_nweb/bridge/ark_web_adsblock_manager_wrapper.h"
19 #include "ohos_nweb/bridge/ark_web_cookie_manager_wrapper.h"
20 #include "ohos_nweb/bridge/ark_web_data_base_wrapper.h"
21 #include "ohos_nweb/bridge/ark_web_download_manager_wrapper.h"
22 #include "ohos_nweb/bridge/ark_web_engine_init_args_impl.h"
23 #include "ohos_nweb/bridge/ark_web_engine_prefetch_args_impl.h"
24 #include "ohos_nweb/bridge/ark_web_nweb_create_info_impl.h"
25 #include "ohos_nweb/bridge/ark_web_nweb_wrapper.h"
26 #include "ohos_nweb/bridge/ark_web_web_storage_wrapper.h"
27 #include "ohos_nweb/bridge/ark_web_proxy_changed_callback_wrapper.h"
28 
29 #include "base/bridge/ark_web_bridge_macros.h"
30 #include "base/include/ark_web_errno.h"
31 
32 namespace OHOS::NWeb {
33 
GetInstance()34 std::shared_ptr<NWebEngine> NWebEngine::GetInstance()
35 {
36     ArkWebRefPtr<OHOS::ArkWeb::ArkWebEngine> ark_web_engine = OHOS::ArkWeb::ArkWebEngine::GetInstance();
37     if (CHECK_REF_PTR_IS_NULL(ark_web_engine)) {
38         return nullptr;
39     }
40 
41     return std::make_shared<OHOS::ArkWeb::ArkWebEngineWrapper>(ark_web_engine);
42 }
43 
44 } // namespace OHOS::NWeb
45 
46 namespace OHOS::ArkWeb {
47 
ArkWebEngineWrapper(ArkWebRefPtr<ArkWebEngine> ark_web_engine)48 ArkWebEngineWrapper::ArkWebEngineWrapper(ArkWebRefPtr<ArkWebEngine> ark_web_engine) : ark_web_engine_(ark_web_engine) {}
49 
CreateNWeb(std::shared_ptr<OHOS::NWeb::NWebCreateInfo> create_info)50 std::shared_ptr<OHOS::NWeb::NWeb> ArkWebEngineWrapper::CreateNWeb(
51     std::shared_ptr<OHOS::NWeb::NWebCreateInfo> create_info)
52 {
53     ArkWebRefPtr<ArkWebNWebCreateInfo> ark_web_create_info = nullptr;
54     if (!CHECK_SHARED_PTR_IS_NULL(create_info)) {
55         ark_web_create_info = new ArkWebNWebCreateInfoImpl(create_info);
56     }
57 
58     ArkWebRefPtr<ArkWebNWeb> ark_web_nweb = ark_web_engine_->CreateNWeb(ark_web_create_info);
59     if (CHECK_REF_PTR_IS_NULL(ark_web_nweb)) {
60         return nullptr;
61     }
62 
63     return std::make_shared<ArkWebNWebWrapper>(ark_web_nweb);
64 }
65 
GetNWeb(int32_t nweb_id)66 std::shared_ptr<OHOS::NWeb::NWeb> ArkWebEngineWrapper::GetNWeb(int32_t nweb_id)
67 {
68     ArkWebRefPtr<ArkWebNWeb> ark_web_nweb = ark_web_engine_->GetNWeb(nweb_id);
69     if (CHECK_REF_PTR_IS_NULL(ark_web_nweb)) {
70         return nullptr;
71     }
72 
73     return std::make_shared<ArkWebNWebWrapper>(ark_web_nweb);
74 }
75 
GetDataBase()76 std::shared_ptr<OHOS::NWeb::NWebDataBase> ArkWebEngineWrapper::GetDataBase()
77 {
78     ArkWebRefPtr<ArkWebDataBase> ark_web_data_base = ark_web_engine_->GetDataBase();
79     if (CHECK_REF_PTR_IS_NULL(ark_web_data_base)) {
80         return nullptr;
81     }
82 
83     return std::make_shared<ArkWebDataBaseWrapper>(ark_web_data_base);
84 }
85 
GetWebStorage()86 std::shared_ptr<OHOS::NWeb::NWebWebStorage> ArkWebEngineWrapper::GetWebStorage()
87 {
88     ArkWebRefPtr<ArkWebWebStorage> ark_web_web_storage = ark_web_engine_->GetWebStorage();
89     if (CHECK_REF_PTR_IS_NULL(ark_web_web_storage)) {
90         return nullptr;
91     }
92 
93     return std::make_shared<ArkWebWebStorageWrapper>(ark_web_web_storage);
94 }
95 
GetCookieManager()96 std::shared_ptr<OHOS::NWeb::NWebCookieManager> ArkWebEngineWrapper::GetCookieManager()
97 {
98     ArkWebRefPtr<ArkWebCookieManager> ark_web_cookie_manager = ark_web_engine_->GetCookieManager();
99     if (CHECK_REF_PTR_IS_NULL(ark_web_cookie_manager)) {
100         return nullptr;
101     }
102 
103     return std::make_shared<ArkWebCookieManagerWrapper>(ark_web_cookie_manager);
104 }
105 
GetDownloadManager()106 std::shared_ptr<OHOS::NWeb::NWebDownloadManager> ArkWebEngineWrapper::GetDownloadManager()
107 {
108     ArkWebRefPtr<ArkWebDownloadManager> ark_web_download_manager = ark_web_engine_->GetDownloadManager();
109     if (CHECK_REF_PTR_IS_NULL(ark_web_download_manager)) {
110         return nullptr;
111     }
112 
113     return std::make_shared<ArkWebDownloadManagerWrapper>(ark_web_download_manager);
114 }
115 
SetWebTag(int32_t nweb_id,const char * web_tag)116 void ArkWebEngineWrapper::SetWebTag(int32_t nweb_id, const char* web_tag)
117 {
118     ark_web_engine_->SetWebTag(nweb_id, web_tag);
119 }
120 
InitializeWebEngine(std::shared_ptr<OHOS::NWeb::NWebEngineInitArgs> init_args)121 void ArkWebEngineWrapper::InitializeWebEngine(std::shared_ptr<OHOS::NWeb::NWebEngineInitArgs> init_args)
122 {
123     if (CHECK_SHARED_PTR_IS_NULL(init_args)) {
124         ark_web_engine_->InitializeWebEngine(nullptr);
125         return;
126     }
127 
128     ArkWebRefPtr<ArkWebEngineInitArgs> ark_web_engine_init_args = new ArkWebEngineInitArgsImpl(init_args);
129     ark_web_engine_->InitializeWebEngine(ark_web_engine_init_args);
130 }
131 
PrepareForPageLoad(const std::string & url,bool preconnectable,int32_t num_sockets)132 void ArkWebEngineWrapper::PrepareForPageLoad(const std::string& url, bool preconnectable, int32_t num_sockets)
133 {
134     ArkWebString stUrl = ArkWebStringClassToStruct(url);
135 
136     ark_web_engine_->PrepareForPageLoad(stUrl, preconnectable, num_sockets);
137 
138     ArkWebStringStructRelease(stUrl);
139 }
140 
SetWebDebuggingAccess(bool isEnableDebug)141 void ArkWebEngineWrapper::SetWebDebuggingAccess(bool isEnableDebug)
142 {
143     ark_web_engine_->SetWebDebuggingAccess(isEnableDebug);
144 }
145 
AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string> & hosts)146 void ArkWebEngineWrapper::AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts)
147 {
148     ArkWebStringVector stHosts = ArkWebStringVectorClassToStruct(hosts);
149 
150     ark_web_engine_->AddIntelligentTrackingPreventionBypassingList(stHosts);
151 
152     ArkWebStringVectorStructRelease(stHosts);
153 }
154 
RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string> & hosts)155 void ArkWebEngineWrapper::RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts)
156 {
157     ArkWebStringVector stHosts = ArkWebStringVectorClassToStruct(hosts);
158 
159     ark_web_engine_->RemoveIntelligentTrackingPreventionBypassingList(stHosts);
160 
161     ArkWebStringVectorStructRelease(stHosts);
162 }
163 
ClearIntelligentTrackingPreventionBypassingList()164 void ArkWebEngineWrapper::ClearIntelligentTrackingPreventionBypassingList()
165 {
166     ark_web_engine_->ClearIntelligentTrackingPreventionBypassingList();
167 }
168 
GetDefaultUserAgent()169 std::string ArkWebEngineWrapper::GetDefaultUserAgent()
170 {
171     ArkWebString stUA = ark_web_engine_->GetDefaultUserAgent();
172 
173     std::string objUA = ArkWebStringStructToClass(stUA);
174     ArkWebStringStructRelease(stUA);
175     return objUA;
176 }
177 
PauseAllTimers()178 void ArkWebEngineWrapper::PauseAllTimers()
179 {
180     ark_web_engine_->PauseAllTimers();
181 }
182 
ResumeAllTimers()183 void ArkWebEngineWrapper::ResumeAllTimers()
184 {
185     ark_web_engine_->ResumeAllTimers();
186 }
187 
PrefetchResource(const std::shared_ptr<OHOS::NWeb::NWebEnginePrefetchArgs> & pre_args,const std::map<std::string,std::string> & additional_http_headers,const std::string & cache_key,const uint32_t & cache_valid_time)188 void ArkWebEngineWrapper::PrefetchResource(const std::shared_ptr<OHOS::NWeb::NWebEnginePrefetchArgs>& pre_args,
189     const std::map<std::string, std::string>& additional_http_headers, const std::string& cache_key,
190     const uint32_t& cache_valid_time)
191 {
192     ArkWebRefPtr<ArkWebEnginePrefetchArgs> ark_web_engine_pre_args = new ArkWebEnginePrefetchArgsImpl(pre_args);
193     ArkWebStringMap stHeaders = ArkWebStringMapClassToStruct(additional_http_headers);
194     ArkWebString stCacheKey = ArkWebStringClassToStruct(cache_key);
195     ark_web_engine_->PrefetchResource(ark_web_engine_pre_args, stHeaders, stCacheKey, cache_valid_time);
196 
197     ArkWebStringMapStructRelease(stHeaders);
198     ArkWebStringStructRelease(stCacheKey);
199 }
200 
SetRenderProcessMode(ArkWebRenderProcessMode mode)201 void ArkWebEngineWrapper::SetRenderProcessMode(ArkWebRenderProcessMode mode)
202 {
203     ark_web_engine_->SetRenderProcessMode(static_cast<int32_t>(mode));
204 }
205 
GetRenderProcessMode()206 ArkWebRenderProcessMode ArkWebEngineWrapper::GetRenderProcessMode()
207 {
208     return static_cast<ArkWebRenderProcessMode>(ark_web_engine_->GetRenderProcessMode());
209 }
210 
ClearPrefetchedResource(const std::vector<std::string> & cache_key_list)211 void ArkWebEngineWrapper::ClearPrefetchedResource(const std::vector<std::string>& cache_key_list)
212 {
213     ArkWebStringVector stCacheKeyList = ArkWebStringVectorClassToStruct(cache_key_list);
214 
215     ark_web_engine_->ClearPrefetchedResource(stCacheKeyList);
216 
217     ArkWebStringVectorStructRelease(stCacheKeyList);
218 }
219 
WarmupServiceWorker(const std::string & url)220 void ArkWebEngineWrapper::WarmupServiceWorker(const std::string& url)
221 {
222     ArkWebString stUrl = ArkWebStringClassToStruct(url);
223 
224     ark_web_engine_->WarmupServiceWorker(stUrl);
225 
226     ArkWebStringStructRelease(stUrl);
227 }
228 
SetHostIP(const std::string & hostName,const std::string & address,int32_t aliveTime)229 void ArkWebEngineWrapper::SetHostIP(const std::string& hostName, const std::string& address, int32_t aliveTime)
230 {
231     ark_web_engine_->SetHostIP(ArkWebStringClassToStruct(hostName), ArkWebStringClassToStruct(address), aliveTime);
232 }
233 
ClearHostIP(const std::string & hostName)234 void ArkWebEngineWrapper::ClearHostIP(const std::string& hostName)
235 {
236     ark_web_engine_->ClearHostIP(ArkWebStringClassToStruct(hostName));
237 }
238 
SetAppCustomUserAgent(const std::string & userAgent)239 void ArkWebEngineWrapper::SetAppCustomUserAgent(const std::string& userAgent)
240 {
241     ark_web_engine_->SetAppCustomUserAgent(ArkWebStringClassToStruct(userAgent));
242 }
243 
SetUserAgentForHosts(const std::string & userAgent,const std::vector<std::string> & hosts)244 void ArkWebEngineWrapper::SetUserAgentForHosts(const std::string& userAgent, const std::vector<std::string>& hosts)
245 {
246     ark_web_engine_->SetUserAgentForHosts(ArkWebStringClassToStruct(userAgent), ArkWebStringVectorClassToStruct(hosts));
247 }
248 
EnableWholeWebPageDrawing()249 void ArkWebEngineWrapper::EnableWholeWebPageDrawing()
250 {
251     ark_web_engine_->EnableWholeWebPageDrawing();
252 }
253 
GetAdsBlockManager()254 std::shared_ptr<OHOS::NWeb::NWebAdsBlockManager> ArkWebEngineWrapper::GetAdsBlockManager()
255 {
256     ArkWebRefPtr<ArkWebAdsBlockManager> ark_web_adsblock_manager = ark_web_engine_->GetAdsBlockManager();
257     if (CHECK_REF_PTR_IS_NULL(ark_web_adsblock_manager)) {
258         return nullptr;
259     }
260 
261     return std::make_shared<ArkWebAdsBlockManagerWrapper>(ark_web_adsblock_manager);
262 }
263 
TrimMemoryByPressureLevel(int32_t memoryLevel)264 void ArkWebEngineWrapper::TrimMemoryByPressureLevel(int32_t memoryLevel)
265 {
266     ark_web_engine_->TrimMemoryByPressureLevel(memoryLevel);
267 }
268 
SetArkWebRomApiLevel(int apiLevel)269 void ArkWebEngineWrapper::SetArkWebRomApiLevel(int apiLevel)
270 {
271     ark_web_engine_->SetArkWebRomApiLevel(apiLevel);
272 }
273 
GetArkWebCoreApiLevel()274 int ArkWebEngineWrapper::GetArkWebCoreApiLevel()
275 {
276     return ark_web_engine_->GetArkWebCoreApiLevel();
277 }
278 
RemoveAllCache(bool include_disk_files)279 void ArkWebEngineWrapper::RemoveAllCache(bool include_disk_files)
280 {
281     ark_web_engine_->RemoveAllCache(include_disk_files);
282 }
283 
SetProxyOverride(const std::vector<std::string> & proxyUrls,const std::vector<std::string> & proxySchemeFilters,const std::vector<std::string> & bypassRules,const bool & reverseBypass,std::shared_ptr<OHOS::NWeb::NWebProxyChangedCallback> callback)284 void ArkWebEngineWrapper::SetProxyOverride(
285     const std::vector<std::string>& proxyUrls,
286     const std::vector<std::string>& proxySchemeFilters,
287     const std::vector<std::string>& bypassRules,
288     const bool& reverseBypass,
289     std::shared_ptr<OHOS::NWeb::NWebProxyChangedCallback> callback)
290 {
291     ArkWebStringVector stProxyRules = ArkWebStringVectorClassToStruct(proxyUrls);
292     ArkWebStringVector stProxySchemeFilters = ArkWebStringVectorClassToStruct(proxySchemeFilters);
293     ArkWebStringVector stBypassRules = ArkWebStringVectorClassToStruct(bypassRules);
294     ArkWebRefPtr<ArkWebProxyChangedCallback> ark_web_proxy_callback = new ArkWebProxyChangedCallbackWrapper(callback);
295 
296     ark_web_engine_->SetProxyOverride(stProxyRules, stProxySchemeFilters, stBypassRules,
297                                       reverseBypass, ark_web_proxy_callback);
298 
299     ArkWebStringVectorStructRelease(stProxyRules);
300     ArkWebStringVectorStructRelease(stProxySchemeFilters);
301     ArkWebStringVectorStructRelease(stBypassRules);
302 }
303 
RemoveProxyOverride(std::shared_ptr<OHOS::NWeb::NWebProxyChangedCallback> callback)304 void ArkWebEngineWrapper::RemoveProxyOverride(std::shared_ptr<OHOS::NWeb::NWebProxyChangedCallback> callback)
305 {
306     ArkWebRefPtr<ArkWebProxyChangedCallback> ark_web_proxy_callback = new ArkWebProxyChangedCallbackWrapper(callback);
307     ark_web_engine_->RemoveProxyOverride(ark_web_proxy_callback);
308 }
309 
SetWebDebuggingAccessAndPort(bool isEnableDebug,int32_t port)310 void ArkWebEngineWrapper::SetWebDebuggingAccessAndPort(
311     bool isEnableDebug, int32_t port)
312 {
313     ark_web_engine_->SetWebDebuggingAccessAndPort(isEnableDebug, port);
314     if (ArkWebGetErrno() != RESULT_OK) {
315         ark_web_engine_->SetWebDebuggingAccess(isEnableDebug);
316     }
317 }
318 
AddBlanklessLoadingUrls(const std::vector<std::string> & urls)319 uint32_t ArkWebEngineWrapper::AddBlanklessLoadingUrls(const std::vector<std::string>& urls)
320 {
321     ArkWebStringVector stUrls = ArkWebStringVectorClassToStruct(urls);
322 
323     uint32_t addCounts = ark_web_engine_->AddBlanklessLoadingUrls(stUrls);
324 
325     ArkWebStringVectorStructRelease(stUrls);
326     return addCounts;
327 }
328 
RemoveBlanklessLoadingUrls(const std::vector<std::string> & urls)329 void ArkWebEngineWrapper::RemoveBlanklessLoadingUrls(const std::vector<std::string>& urls)
330 {
331     ArkWebStringVector stUrls = ArkWebStringVectorClassToStruct(urls);
332 
333     ark_web_engine_->RemoveBlanklessLoadingUrls(stUrls);
334 
335     ArkWebStringVectorStructRelease(stUrls);
336 }
337 
ClearBlanklessLoadingCache(const std::vector<std::string> & urls)338 void ArkWebEngineWrapper::ClearBlanklessLoadingCache(const std::vector<std::string>& urls)
339 {
340     ArkWebStringVector stUrls = ArkWebStringVectorClassToStruct(urls);
341 
342     ark_web_engine_->ClearBlanklessLoadingCache(stUrls);
343 
344     ArkWebStringVectorStructRelease(stUrls);
345 }
346 
CheckBlankOptEnable(const std::string & url,int32_t nweb_id)347 std::string ArkWebEngineWrapper::CheckBlankOptEnable(const std::string& url, int32_t nweb_id)
348 {
349     ArkWebString url_ = ArkWebStringClassToStruct(url);
350     std::string ret = ArkWebStringStructToClass(ark_web_engine_->CheckBlankOptEnable(url_, nweb_id));
351     ArkWebStringStructRelease(url_);
352     return ret;
353 }
354 
SetBlanklessLoadingCacheCapacity(int32_t capacity)355 void ArkWebEngineWrapper::SetBlanklessLoadingCacheCapacity(int32_t capacity)
356 {
357     ark_web_engine_->SetBlanklessLoadingCacheCapacity(capacity);
358 }
359 
EnablePrivateNetworkAccess(bool enable)360 void ArkWebEngineWrapper::EnablePrivateNetworkAccess(bool enable)
361 {
362     ark_web_engine_->EnablePrivateNetworkAccess(enable);
363 }
364 
IsPrivateNetworkAccessEnabled()365 bool ArkWebEngineWrapper::IsPrivateNetworkAccessEnabled()
366 {
367     return ark_web_engine_->IsPrivateNetworkAccessEnabled();
368 }
369 
SetWebDestroyMode(OHOS::NWeb::WebDestroyMode mode)370 void ArkWebEngineWrapper::SetWebDestroyMode(OHOS::NWeb::WebDestroyMode mode)
371 {
372     ark_web_engine_->SetWebDestroyMode(static_cast<int32_t>(mode));
373 }
374 
375 } // namespace OHOS::ArkWeb
376