* Copyright (c) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "nweb_engine_impl.h"
#include "cef/libcef/browser/devtools/devtools_manager_delegate.h"
#include "nweb_adsblock_manager_impl.h"
#include "nweb_api_level.h"
#include "nweb_cookie_manager_impl.h"
#include "nweb_data_base_impl.h"
#include "nweb_download_manager_impl.h"
#include "nweb_hilog.h"
#include "nweb_impl.h"
#include "nweb_key_event_impl.h"
#include "nweb_web_storage_impl.h"
namespace OHOS::NWeb {
static std::shared_ptr<NWebEngineImpl> g_nweb_engine_impl =
std::make_shared<NWebEngineImpl>();
NWebEngineImpl::NWebEngineImpl() {
nweb_data_base_ = std::make_shared<NWebDataBaseImpl>();
nweb_web_storage_ = std::make_shared<NWebWebStorageImpl>();
nweb_download_manager_ = std::make_shared<NWebDownloadManagerImpl>();
}
std::shared_ptr<NWebEngine> NWebEngine::GetInstance() {
return g_nweb_engine_impl;
}
std::shared_ptr<NWeb>
NWebEngineImpl::CreateNWeb(std::shared_ptr<NWebCreateInfo> create_info) {
return NWebImpl::CreateNWeb(create_info);
}
std::shared_ptr<NWeb> NWebEngineImpl::GetNWeb(int32_t nweb_id) {
return NWebImpl::GetNWeb(nweb_id);
}
std::shared_ptr<NWebDataBase> NWebEngineImpl::GetDataBase() {
return nweb_data_base_;
}
std::shared_ptr<NWebWebStorage> NWebEngineImpl::GetWebStorage() {
return nweb_web_storage_;
}
std::shared_ptr<NWebCookieManager> NWebEngineImpl::GetCookieManager() {
return NWebCookieManagerImpl::GetInstance();
}
std::shared_ptr<NWebDownloadManager> NWebEngineImpl::GetDownloadManager() {
return nweb_download_manager_;
}
void NWebEngineImpl::SetWebTag(int32_t nweb_id, const char *web_tag) {
NWebImpl::SetWebTag(nweb_id, web_tag);
}
void NWebEngineImpl::InitializeWebEngine(
std::shared_ptr<NWebEngineInitArgs> init_args) {
#if defined(OHOS_API_INIT_WEB_ENGINE)
NWebImpl::InitializeWebEngine(init_args);
#endif
}
void NWebEngineImpl::PrepareForPageLoad(const std::string &url,
bool preconnectable,
int32_t num_sockets) {
return NWebImpl::PrepareForPageLoad(url, preconnectable, num_sockets);
}
void NWebEngineImpl::RemoveAllCache(bool include_disk_files) {
return NWebImpl::RemoveAllCache(include_disk_files);
}
void NWebEngineImpl::SetWebDebuggingAccess(bool isEnableDebug) {
static bool isDebuggingEnabled = false;
if (isEnableDebug && !isDebuggingEnabled) {
CefDevToolsManagerDelegate::StartHttpHandler(nullptr);
WVLOG_I("StartHttpHandler Enabled");
isDebuggingEnabled = true;
} else if (!isEnableDebug && isDebuggingEnabled) {
CefDevToolsManagerDelegate::StopHttpHandler();
WVLOG_I("StopHttpHandler Enabled");
isDebuggingEnabled = false;
}
}
void NWebEngineImpl::AddIntelligentTrackingPreventionBypassingList(
const std::vector<std::string> &hosts) {
#ifdef OHOS_ITP
NWebImpl::AddIntelligentTrackingPreventionBypassingList(hosts);
#endif
}
void NWebEngineImpl::RemoveIntelligentTrackingPreventionBypassingList(
const std::vector<std::string> &hosts) {
#ifdef OHOS_ITP
NWebImpl::RemoveIntelligentTrackingPreventionBypassingList(hosts);
#endif
}
void NWebEngineImpl::ClearIntelligentTrackingPreventionBypassingList() {
#ifdef OHOS_ITP
NWebImpl::ClearIntelligentTrackingPreventionBypassingList();
#endif
}
std::string NWebEngineImpl::GetDefaultUserAgent() {
return NWebImpl::GetDefaultUserAgent();
}
void NWebEngineImpl::PauseAllTimers() {
NWebImpl::PauseAllTimers();
}
void NWebEngineImpl::ResumeAllTimers() {
NWebImpl::ResumeAllTimers();
}
void NWebEngineImpl::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) {
return NWebImpl::PrefetchResource(pre_args, additional_http_headers,
cache_key, cache_valid_time);
}
void NWebEngineImpl::SetRenderProcessMode(RenderProcessMode mode) {
NWebImpl::SetRenderProcessMode(mode);
}
RenderProcessMode NWebEngineImpl::GetRenderProcessMode() {
return NWebImpl::GetRenderProcessMode();
}
void NWebEngineImpl::ClearPrefetchedResource(const std::vector<std::string>& cache_key_list) {
return NWebImpl::ClearPrefetchedResource(cache_key_list);
}
void NWebEngineImpl::WarmupServiceWorker(const std::string &url) {
NWebImpl::WarmupServiceWorker(url);
}
void NWebEngineImpl::SetHostIP(
const std::string &hostName, const std::string &address, int32_t aliveTime) {
NWebImpl::SetHostIP(hostName, address, aliveTime);
}
void NWebEngineImpl::ClearHostIP(const std::string &hostName) {
NWebImpl::ClearHostIP(hostName);
}
void NWebEngineImpl::EnableWholeWebPageDrawing() {
#if defined(OHOS_SOFTWARE_COMPOSITOR)
NWebImpl::EnableWholeWebPageDrawing();
#endif
}
std::shared_ptr<NWebAdsBlockManager> NWebEngineImpl::GetAdsBlockManager() {
return NWebAdsBlockManagerImpl::GetInstance();
}
void NWebEngineImpl::TrimMemoryByPressureLevel(int32_t memoryLevel) {
NWebImpl::TrimMemoryByPressureLevel(memoryLevel);
}
void NWebEngineImpl::SetArkWebRomApiLevel(int apiLevel) {
romApiLevel_ = apiLevel;
WVLOG_I("rom api level is %{public}d", romApiLevel_);
}
int NWebEngineImpl::GetArkWebRomApiLevel() {
return romApiLevel_;
}
int NWebEngineImpl::GetArkWebCoreApiLevel() {
return ARKWEB_CORE_API_LEVEL;
}
bool NWebEngineImpl::CheckArkWebRomApiLevel(int apiLevel) {
return g_nweb_engine_impl->GetArkWebRomApiLevel() >= apiLevel;
}
void NWebEngineImpl::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<NWebProxyChangedCallback> callback) {
NWebImpl::SetProxyOverride(proxyUrls, proxySchemeFilters, bypassRules, reverseBypass, callback);
}
void NWebEngineImpl::RemoveProxyOverride(std::shared_ptr<NWebProxyChangedCallback> callback) {
NWebImpl::RemoveProxyOverride(callback);
}
}