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 #ifndef ARK_WEB_ENGINE_WRAPPER_H_
17 #define ARK_WEB_ENGINE_WRAPPER_H_
18 #pragma once
19 
20 #include "include/nweb_engine.h"
21 #include "ohos_nweb/include/ark_web_engine.h"
22 
23 namespace OHOS::ArkWeb {
24 using ArkWebRenderProcessMode = OHOS::NWeb::RenderProcessMode;
25 
26 class ArkWebEngineWrapper : public OHOS::NWeb::NWebEngine {
27 public:
28     ArkWebEngineWrapper(ArkWebRefPtr<ArkWebEngine> ark_web_engine);
29     ~ArkWebEngineWrapper() = default;
30 
31     std::shared_ptr<OHOS::NWeb::NWeb> CreateNWeb(std::shared_ptr<OHOS::NWeb::NWebCreateInfo> create_info) override;
32 
33     std::shared_ptr<OHOS::NWeb::NWeb> GetNWeb(int32_t nweb_id) override;
34 
35     std::shared_ptr<OHOS::NWeb::NWebDataBase> GetDataBase() override;
36 
37     std::shared_ptr<OHOS::NWeb::NWebWebStorage> GetWebStorage() override;
38 
39     std::shared_ptr<OHOS::NWeb::NWebCookieManager> GetCookieManager() override;
40 
41     std::shared_ptr<OHOS::NWeb::NWebDownloadManager> GetDownloadManager() override;
42 
43     void SetWebTag(int32_t nweb_id, const char* web_tag) override;
44 
45     void InitializeWebEngine(std::shared_ptr<OHOS::NWeb::NWebEngineInitArgs> init_args) override;
46 
47     void PrepareForPageLoad(const std::string& url, bool preconnectable, int32_t num_sockets) override;
48 
49     void SetWebDebuggingAccess(bool isEnableDebug) override;
50 
51     void AddIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts) override;
52 
53     void RemoveIntelligentTrackingPreventionBypassingList(const std::vector<std::string>& hosts) override;
54 
55     void ClearIntelligentTrackingPreventionBypassingList() override;
56 
57     std::string GetDefaultUserAgent() override;
58 
59     void PauseAllTimers() override;
60 
61     void ResumeAllTimers() override;
62 
63     void PrefetchResource(const std::shared_ptr<OHOS::NWeb::NWebEnginePrefetchArgs>& pre_args,
64         const std::map<std::string, std::string>& additional_http_headers, const std::string& cache_key,
65         const uint32_t& cache_valid_time) override;
66 
67     void SetRenderProcessMode(ArkWebRenderProcessMode mode) override;
68 
69     ArkWebRenderProcessMode GetRenderProcessMode() override;
70 
71     void ClearPrefetchedResource(const std::vector<std::string>& cache_key_list) override;
72 
73     void SetHostIP(const std::string& hostName, const std::string& address, int32_t aliveTime) override;
74 
75     void ClearHostIP(const std::string& hostName) override;
76 
77     void WarmupServiceWorker(const std::string& url) override;
78 
79     void SetWholeWebDrawing() override;
80 
81     std::shared_ptr<OHOS::NWeb::NWebAdsBlockManager> GetAdsBlockManager() override;
82 
83     void TrimMemoryByPressureLevel(int32_t memoryLevel) override;
84 
85 private:
86     ArkWebRefPtr<ArkWebEngine> ark_web_engine_;
87 };
88 
89 } // namespace OHOS::ArkWeb
90 
91 #endif // ARK_WEB_ENGINE_WRAPPER_H_
92