• 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_impl.h"
17 
18 #include "ohos_nweb/bridge/ark_web_adsblock_manager_impl.h"
19 #include "ohos_nweb/bridge/ark_web_cookie_manager_impl.h"
20 #include "ohos_nweb/bridge/ark_web_data_base_impl.h"
21 #include "ohos_nweb/bridge/ark_web_download_manager_impl.h"
22 #include "ohos_nweb/bridge/ark_web_engine_init_args_wrapper.h"
23 #include "ohos_nweb/bridge/ark_web_engine_prefetch_args_wrapper.h"
24 #include "ohos_nweb/bridge/ark_web_nweb_create_info_wrapper.h"
25 #include "ohos_nweb/bridge/ark_web_nweb_impl.h"
26 #include "ohos_nweb/bridge/ark_web_web_storage_impl.h"
27 #include "ohos_nweb/bridge/ark_web_proxy_changed_callback_impl.h"
28 
29 #include "base/bridge/ark_web_bridge_macros.h"
30 
31 namespace OHOS::ArkWeb {
32 using ArkWebRenderProcessMode = OHOS::NWeb::RenderProcessMode;
33 
ArkWebEngineImpl(std::shared_ptr<OHOS::NWeb::NWebEngine> nweb_engine)34 ArkWebEngineImpl::ArkWebEngineImpl(std::shared_ptr<OHOS::NWeb::NWebEngine> nweb_engine) : nweb_engine_(nweb_engine) {}
35 
GetInstance()36 ArkWebRefPtr<ArkWebEngine> ArkWebEngine::GetInstance()
37 {
38     std::shared_ptr<OHOS::NWeb::NWebEngine> nweb_engine = OHOS::NWeb::NWebEngine::GetInstance();
39     if (CHECK_SHARED_PTR_IS_NULL(nweb_engine)) {
40         return nullptr;
41     }
42 
43     return new ArkWebEngineImpl(nweb_engine);
44 }
45 
CreateNWeb(ArkWebRefPtr<ArkWebNWebCreateInfo> create_info)46 ArkWebRefPtr<ArkWebNWeb> ArkWebEngineImpl::CreateNWeb(ArkWebRefPtr<ArkWebNWebCreateInfo> create_info)
47 {
48     std::shared_ptr<OHOS::NWeb::NWebCreateInfo> nweb_create_info = nullptr;
49     if (!CHECK_REF_PTR_IS_NULL(create_info)) {
50         nweb_create_info = std::make_shared<ArkWebNWebCreateInfoWrapper>(create_info);
51     }
52 
53     std::shared_ptr<OHOS::NWeb::NWeb> nweb = nweb_engine_->CreateNWeb(nweb_create_info);
54     if (CHECK_SHARED_PTR_IS_NULL(nweb)) {
55         return nullptr;
56     }
57 
58     return new ArkWebNWebImpl(nweb);
59 }
60 
GetNWeb(int32_t nweb_id)61 ArkWebRefPtr<ArkWebNWeb> ArkWebEngineImpl::GetNWeb(int32_t nweb_id)
62 {
63     std::shared_ptr<OHOS::NWeb::NWeb> nweb = nweb_engine_->GetNWeb(nweb_id);
64     if (CHECK_SHARED_PTR_IS_NULL(nweb)) {
65         return nullptr;
66     }
67 
68     return new ArkWebNWebImpl(nweb);
69 }
70 
GetDataBase()71 ArkWebRefPtr<ArkWebDataBase> ArkWebEngineImpl::GetDataBase()
72 {
73     std::shared_ptr<OHOS::NWeb::NWebDataBase> nweb_data_base = nweb_engine_->GetDataBase();
74     if (CHECK_SHARED_PTR_IS_NULL(nweb_data_base)) {
75         return nullptr;
76     }
77 
78     return new ArkWebDataBaseImpl(nweb_data_base);
79 }
80 
GetWebStorage()81 ArkWebRefPtr<ArkWebWebStorage> ArkWebEngineImpl::GetWebStorage()
82 {
83     std::shared_ptr<OHOS::NWeb::NWebWebStorage> nweb_web_storage = nweb_engine_->GetWebStorage();
84     if (CHECK_SHARED_PTR_IS_NULL(nweb_web_storage)) {
85         return nullptr;
86     }
87 
88     return new ArkWebWebStorageImpl(nweb_web_storage);
89 }
90 
GetCookieManager()91 ArkWebRefPtr<ArkWebCookieManager> ArkWebEngineImpl::GetCookieManager()
92 {
93     std::shared_ptr<OHOS::NWeb::NWebCookieManager> nweb_cookie_manager = nweb_engine_->GetCookieManager();
94     if (CHECK_SHARED_PTR_IS_NULL(nweb_cookie_manager)) {
95         return nullptr;
96     }
97 
98     return new ArkWebCookieManagerImpl(nweb_cookie_manager);
99 }
100 
GetDownloadManager()101 ArkWebRefPtr<ArkWebDownloadManager> ArkWebEngineImpl::GetDownloadManager()
102 {
103     std::shared_ptr<OHOS::NWeb::NWebDownloadManager> nweb_download_manager = nweb_engine_->GetDownloadManager();
104     if (CHECK_SHARED_PTR_IS_NULL(nweb_download_manager)) {
105         return nullptr;
106     }
107 
108     return new ArkWebDownloadManagerImpl(nweb_download_manager);
109 }
110 
SetWebTag(int32_t nweb_id,const char * web_tag)111 void ArkWebEngineImpl::SetWebTag(int32_t nweb_id, const char* web_tag)
112 {
113     nweb_engine_->SetWebTag(nweb_id, web_tag);
114 }
115 
InitializeWebEngine(ArkWebRefPtr<ArkWebEngineInitArgs> init_args)116 void ArkWebEngineImpl::InitializeWebEngine(ArkWebRefPtr<ArkWebEngineInitArgs> init_args)
117 {
118     if (CHECK_REF_PTR_IS_NULL(init_args)) {
119         nweb_engine_->InitializeWebEngine(nullptr);
120         return;
121     }
122 
123     std::shared_ptr<OHOS::NWeb::NWebEngineInitArgs> nweb_engine_init_args =
124         std::make_shared<ArkWebEngineInitArgsWrapper>(init_args);
125     nweb_engine_->InitializeWebEngine(nweb_engine_init_args);
126 }
127 
PrepareForPageLoad(const ArkWebString & url,bool preconnectable,int32_t num_sockets)128 void ArkWebEngineImpl::PrepareForPageLoad(const ArkWebString& url, bool preconnectable, int32_t num_sockets)
129 {
130     nweb_engine_->PrepareForPageLoad(ArkWebStringStructToClass(url), preconnectable, num_sockets);
131 }
132 
SetWebDebuggingAccess(bool isEnableDebug)133 void ArkWebEngineImpl::SetWebDebuggingAccess(bool isEnableDebug)
134 {
135     nweb_engine_->SetWebDebuggingAccess(isEnableDebug);
136 }
137 
AddIntelligentTrackingPreventionBypassingList(const ArkWebStringVector & hosts)138 void ArkWebEngineImpl::AddIntelligentTrackingPreventionBypassingList(const ArkWebStringVector& hosts)
139 {
140     nweb_engine_->AddIntelligentTrackingPreventionBypassingList(ArkWebStringVectorStructToClass(hosts));
141 }
142 
RemoveIntelligentTrackingPreventionBypassingList(const ArkWebStringVector & hosts)143 void ArkWebEngineImpl::RemoveIntelligentTrackingPreventionBypassingList(const ArkWebStringVector& hosts)
144 {
145     nweb_engine_->RemoveIntelligentTrackingPreventionBypassingList(ArkWebStringVectorStructToClass(hosts));
146 }
147 
ClearIntelligentTrackingPreventionBypassingList()148 void ArkWebEngineImpl::ClearIntelligentTrackingPreventionBypassingList()
149 {
150     nweb_engine_->ClearIntelligentTrackingPreventionBypassingList();
151 }
152 
GetDefaultUserAgent()153 ArkWebString ArkWebEngineImpl::GetDefaultUserAgent()
154 {
155     return ArkWebStringClassToStruct(nweb_engine_->GetDefaultUserAgent());
156 }
157 
PauseAllTimers()158 void ArkWebEngineImpl::PauseAllTimers()
159 {
160     nweb_engine_->PauseAllTimers();
161 }
162 
ResumeAllTimers()163 void ArkWebEngineImpl::ResumeAllTimers()
164 {
165     nweb_engine_->ResumeAllTimers();
166 }
167 
PrefetchResource(ArkWebRefPtr<ArkWebEnginePrefetchArgs> & pre_args,const ArkWebStringMap & additional_http_headers,const ArkWebString & cache_key,const uint32_t & cache_valid_time)168 void ArkWebEngineImpl::PrefetchResource(ArkWebRefPtr<ArkWebEnginePrefetchArgs>& pre_args,
169     const ArkWebStringMap& additional_http_headers, const ArkWebString& cache_key, const uint32_t& cache_valid_time)
170 {
171     std::shared_ptr<OHOS::NWeb::NWebEnginePrefetchArgs> nweb_engine_pre_args =
172         std::make_shared<ArkWebEnginePrefetchArgsWrapper>(pre_args);
173     nweb_engine_->PrefetchResource(nweb_engine_pre_args, ArkWebStringMapStructToClass(additional_http_headers),
174         ArkWebStringStructToClass(cache_key), cache_valid_time);
175 }
176 
SetRenderProcessMode(int32_t mode)177 void ArkWebEngineImpl::SetRenderProcessMode(int32_t mode)
178 {
179     nweb_engine_->SetRenderProcessMode(static_cast<ArkWebRenderProcessMode>(mode));
180 }
181 
GetRenderProcessMode()182 int32_t ArkWebEngineImpl::GetRenderProcessMode()
183 {
184     return static_cast<int32_t>(nweb_engine_->GetRenderProcessMode());
185 }
186 
ClearPrefetchedResource(const ArkWebStringVector & cache_key_list)187 void ArkWebEngineImpl::ClearPrefetchedResource(const ArkWebStringVector& cache_key_list)
188 {
189     nweb_engine_->ClearPrefetchedResource(ArkWebStringVectorStructToClass(cache_key_list));
190 }
191 
WarmupServiceWorker(const ArkWebString & url)192 void ArkWebEngineImpl::WarmupServiceWorker(const ArkWebString& url)
193 {
194     nweb_engine_->WarmupServiceWorker(ArkWebStringStructToClass(url));
195 }
196 
SetHostIP(const ArkWebString & hostName,const ArkWebString & address,int32_t aliveTime)197 void ArkWebEngineImpl::SetHostIP(const ArkWebString& hostName, const ArkWebString& address, int32_t aliveTime)
198 {
199     nweb_engine_->SetHostIP(ArkWebStringStructToClass(hostName), ArkWebStringStructToClass(address), aliveTime);
200 }
201 
ClearHostIP(const ArkWebString & hostName)202 void ArkWebEngineImpl::ClearHostIP(const ArkWebString& hostName)
203 {
204     nweb_engine_->ClearHostIP(ArkWebStringStructToClass(hostName));
205 }
206 
SetAppCustomUserAgent(const ArkWebString & userAgent)207 void ArkWebEngineImpl::SetAppCustomUserAgent(const ArkWebString& userAgent)
208 {
209     nweb_engine_->SetAppCustomUserAgent(ArkWebStringStructToClass(userAgent));
210 }
211 
SetUserAgentForHosts(const ArkWebString & userAgent,const ArkWebStringVector & hosts)212 void ArkWebEngineImpl::SetUserAgentForHosts(const ArkWebString& userAgent, const ArkWebStringVector& hosts)
213 {
214     nweb_engine_->SetUserAgentForHosts(ArkWebStringStructToClass(userAgent), ArkWebStringVectorStructToClass(hosts));
215 }
216 
EnableWholeWebPageDrawing()217 void ArkWebEngineImpl::EnableWholeWebPageDrawing()
218 {
219     nweb_engine_->EnableWholeWebPageDrawing();
220 }
221 
GetAdsBlockManager()222 ArkWebRefPtr<ArkWebAdsBlockManager> ArkWebEngineImpl::GetAdsBlockManager()
223 {
224     std::shared_ptr<OHOS::NWeb::NWebAdsBlockManager> nweb_adsBlock_manager = nweb_engine_->GetAdsBlockManager();
225     if (CHECK_SHARED_PTR_IS_NULL(nweb_adsBlock_manager)) {
226         return nullptr;
227     }
228     return new ArkWebAdsBlockManagerImpl(nweb_adsBlock_manager);
229 }
230 
TrimMemoryByPressureLevel(int32_t memoryLevel)231 void ArkWebEngineImpl::TrimMemoryByPressureLevel(int32_t memoryLevel)
232 {
233     nweb_engine_->TrimMemoryByPressureLevel(memoryLevel);
234 }
235 
SetArkWebRomApiLevel(int apiLevel)236 void ArkWebEngineImpl::SetArkWebRomApiLevel(int apiLevel)
237 {
238     nweb_engine_->SetArkWebRomApiLevel(apiLevel);
239 }
240 
GetArkWebCoreApiLevel()241 int ArkWebEngineImpl::GetArkWebCoreApiLevel()
242 {
243     return nweb_engine_->GetArkWebCoreApiLevel();
244 }
245 
RemoveAllCache(bool include_disk_files)246 void ArkWebEngineImpl::RemoveAllCache(bool include_disk_files)
247 {
248     nweb_engine_->RemoveAllCache(include_disk_files);
249 }
250 
SetProxyOverride(const ArkWebStringVector & proxyUrls,const ArkWebStringVector & proxySchemeFilters,const ArkWebStringVector & bypassRules,const bool & reverseBypass,ArkWebRefPtr<ArkWebProxyChangedCallback> callback)251 void ArkWebEngineImpl::SetProxyOverride(const ArkWebStringVector& proxyUrls,
252                                         const ArkWebStringVector& proxySchemeFilters,
253                                         const ArkWebStringVector& bypassRules,
254                                         const bool& reverseBypass,
255                                         ArkWebRefPtr<ArkWebProxyChangedCallback> callback)
256 {
257     std::shared_ptr<OHOS::NWeb::NWebProxyChangedCallback> nweb_proxy_callback =
258         std::make_shared<ArkWebProxyChangedCallbackImpl>(callback);
259     nweb_engine_->SetProxyOverride(ArkWebStringVectorStructToClass(proxyUrls),
260                                    ArkWebStringVectorStructToClass(proxySchemeFilters),
261                                    ArkWebStringVectorStructToClass(bypassRules),
262                                    reverseBypass,
263                                    nweb_proxy_callback);
264 }
265 
RemoveProxyOverride(ArkWebRefPtr<ArkWebProxyChangedCallback> callback)266 void ArkWebEngineImpl::RemoveProxyOverride(ArkWebRefPtr<ArkWebProxyChangedCallback> callback)
267 {
268     std::shared_ptr<OHOS::NWeb::NWebProxyChangedCallback> nweb_proxy_callback =
269         std::make_shared<ArkWebProxyChangedCallbackImpl>(callback);
270     nweb_engine_->RemoveProxyOverride(nweb_proxy_callback);
271 }
272 
SetWebDebuggingAccessAndPort(bool isEnableDebug,int32_t port)273 void ArkWebEngineImpl::SetWebDebuggingAccessAndPort(bool isEnableDebug, int32_t port)
274 {
275     nweb_engine_->SetWebDebuggingAccessAndPort(isEnableDebug, port);
276 }
277 
AddBlanklessLoadingUrls(const ArkWebStringVector & urls)278 uint32_t ArkWebEngineImpl::AddBlanklessLoadingUrls(const ArkWebStringVector& urls)
279 {
280     return nweb_engine_->AddBlanklessLoadingUrls(ArkWebStringVectorStructToClass(urls));
281 }
282 
RemoveBlanklessLoadingUrls(const ArkWebStringVector & urls)283 void ArkWebEngineImpl::RemoveBlanklessLoadingUrls(const ArkWebStringVector& urls)
284 {
285     nweb_engine_->RemoveBlanklessLoadingUrls(ArkWebStringVectorStructToClass(urls));
286 }
287 
ClearBlanklessLoadingCache(const ArkWebStringVector & urls)288 void ArkWebEngineImpl::ClearBlanklessLoadingCache(const ArkWebStringVector& urls)
289 {
290     nweb_engine_->ClearBlanklessLoadingCache(ArkWebStringVectorStructToClass(urls));
291 }
292 
CheckBlankOptEnable(const ArkWebString & url,int32_t nweb_id)293 ArkWebString ArkWebEngineImpl::CheckBlankOptEnable(const ArkWebString& url, int32_t nweb_id)
294 {
295     return ArkWebStringClassToStruct(nweb_engine_->CheckBlankOptEnable(ArkWebStringStructToClass(url), nweb_id));
296 }
297 
SetBlanklessLoadingCacheCapacity(int32_t capacity)298 void ArkWebEngineImpl::SetBlanklessLoadingCacheCapacity(int32_t capacity)
299 {
300     nweb_engine_->SetBlanklessLoadingCacheCapacity(capacity);
301 }
302 
EnablePrivateNetworkAccess(bool enable)303 void ArkWebEngineImpl::EnablePrivateNetworkAccess(bool enable)
304 {
305     nweb_engine_->EnablePrivateNetworkAccess(enable);
306 }
307 
IsPrivateNetworkAccessEnabled()308 bool ArkWebEngineImpl::IsPrivateNetworkAccessEnabled()
309 {
310     return nweb_engine_->IsPrivateNetworkAccessEnabled();
311 }
312 
SetWebDestroyMode(int32_t mode)313 void ArkWebEngineImpl::SetWebDestroyMode(int32_t mode)
314 {
315     nweb_engine_->SetWebDestroyMode(static_cast<OHOS::NWeb::WebDestroyMode>(mode));
316 }
317 
318 } // namespace OHOS::ArkWeb
319