• 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 
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