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
28 #include "base/bridge/ark_web_bridge_macros.h"
29
30 namespace OHOS::ArkWeb {
31
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
SetWholeWebDrawing()207 void ArkWebEngineImpl::SetWholeWebDrawing()
208 {
209 nweb_engine_->SetWholeWebDrawing();
210 }
211
GetAdsBlockManager()212 ArkWebRefPtr<ArkWebAdsBlockManager> ArkWebEngineImpl::GetAdsBlockManager()
213 {
214 std::shared_ptr<OHOS::NWeb::NWebAdsBlockManager> nweb_adsBlock_manager = nweb_engine_->GetAdsBlockManager();
215 if (CHECK_SHARED_PTR_IS_NULL(nweb_adsBlock_manager)) {
216 return nullptr;
217 }
218 return new ArkWebAdsBlockManagerImpl(nweb_adsBlock_manager);
219 }
220
TrimMemoryByPressureLevel(int32_t memoryLevel)221 void ArkWebEngineImpl::TrimMemoryByPressureLevel(int32_t memoryLevel)
222 {
223 nweb_engine_->TrimMemoryByPressureLevel(memoryLevel);
224 }
225 } // namespace OHOS::ArkWeb
226