1 /*
2  * Copyright (c) 2023 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 #ifndef NWEB_INIT_PARAMS_H
16 #define NWEB_INIT_PARAMS_H
17 
18 #include "nweb.h"
19 #include "nweb_download_manager.h"
20 
21 namespace OHOS::NWeb {
22 
23 class NWebDOHConfigImpl : public NWebDOHConfig {
24 public:
25     NWebDOHConfigImpl() = default;
26     ~NWebDOHConfigImpl() = default;
27 
SetMode(int mode)28     void SetMode(int mode)
29     {
30         mode_ = mode;
31     }
32 
GetMode()33     int GetMode() override
34     {
35         return mode_;
36     }
37 
SetConfig(const std::string & config)38     void SetConfig(const std::string& config)
39     {
40         config_ = config;
41     }
42 
GetConfig()43     std::string GetConfig() override
44     {
45         return config_;
46     }
47 
48 private:
49     int mode_ = -1;
50     std::string config_;
51 };
52 
53 class NWebCreateInfoImpl : public NWebCreateInfo {
54 public:
55     NWebCreateInfoImpl() = default;
56     ~NWebCreateInfoImpl() = default;
57 
SetWidth(uint32_t width)58     void SetWidth(uint32_t width)
59     {
60         width_ = width;
61     }
62 
GetWidth()63     uint32_t GetWidth() override
64     {
65         return width_;
66     }
67 
SetHeight(uint32_t height)68     void SetHeight(uint32_t height)
69     {
70         height_ = height;
71     }
72 
GetHeight()73     uint32_t GetHeight() override
74     {
75         return height_;
76     }
77 
SetIsIncognitoMode(bool isIncognitoMode)78     void SetIsIncognitoMode(bool isIncognitoMode)
79     {
80         isIncognitoMode_ = isIncognitoMode;
81     }
82 
GetIsIncognitoMode()83     bool GetIsIncognitoMode() override
84     {
85         return isIncognitoMode_;
86     }
87 
SetProducerSurface(void * producerSurface)88     void SetProducerSurface(void* producerSurface)
89     {
90         producerSurface_ = producerSurface;
91     }
92 
GetProducerSurface()93     void* GetProducerSurface() override
94     {
95         return producerSurface_;
96     }
97 
SetEnhanceSurfaceInfo(void * enhanceSurfaceInfo)98     void SetEnhanceSurfaceInfo(void* enhanceSurfaceInfo)
99     {
100         enhanceSurfaceInfo_ = enhanceSurfaceInfo;
101     }
102 
GetEnhanceSurfaceInfo()103     void* GetEnhanceSurfaceInfo() override
104     {
105         return enhanceSurfaceInfo_;
106     }
107 
SetEngineInitArgs(std::shared_ptr<NWebEngineInitArgs> initArgs)108     void SetEngineInitArgs(std::shared_ptr<NWebEngineInitArgs> initArgs)
109     {
110         initArgs_ = initArgs;
111     }
112 
GetEngineInitArgs()113     std::shared_ptr<NWebEngineInitArgs> GetEngineInitArgs() override
114     {
115         return initArgs_;
116     }
117 
SetOutputFrameCallback(std::shared_ptr<NWebOutputFrameCallback> outputFrameCallback)118     void SetOutputFrameCallback(std::shared_ptr<NWebOutputFrameCallback> outputFrameCallback)
119     {
120         outputFrameCallback_ = outputFrameCallback;
121     }
122 
GetOutputFrameCallback()123     std::shared_ptr<NWebOutputFrameCallback> GetOutputFrameCallback() override
124     {
125         return outputFrameCallback_;
126     }
127 
128 private:
129     uint32_t width_ = 0;
130     uint32_t height_ = 0;
131 
132     bool isIncognitoMode_ = false;
133 
134     void* producerSurface_ = nullptr;
135     void* enhanceSurfaceInfo_ = nullptr;
136 
137     std::shared_ptr<NWebEngineInitArgs> initArgs_ = nullptr;
138     std::shared_ptr<NWebOutputFrameCallback> outputFrameCallback_ = nullptr;
139 };
140 
141 class NWebEngineInitArgsImpl : public NWebEngineInitArgs {
142 public:
143     NWebEngineInitArgsImpl() = default;
144     ~NWebEngineInitArgsImpl() = default;
145 
AddArg(const std::string & arg)146     void AddArg(const std::string& arg)
147     {
148         argsToAdd_.emplace_back(arg);
149     }
150 
AddDeleteArg(const std::string & arg)151     void AddDeleteArg(const std::string& arg)
152     {
153         argsToDelete_.emplace_back(arg);
154     }
155 
SetDumpPath(const std::string & dumpPath)156     void SetDumpPath(const std::string& dumpPath)
157     {
158         dumpPath_ = dumpPath;
159     }
160 
GetDumpPath()161     std::string GetDumpPath() override
162     {
163         return dumpPath_;
164     }
165 
SetIsPopup(bool isPopup)166     void SetIsPopup(bool isPopup)
167     {
168         isPopup_ = isPopup;
169     }
170 
GetIsPopup()171     bool GetIsPopup() override
172     {
173         return isPopup_;
174     }
175 
SetIsFrameInfoDump(bool isFrameInfoDump)176     void SetIsFrameInfoDump(bool isFrameInfoDump)
177     {
178         isFrameInfoDump_ = isFrameInfoDump;
179     }
180 
GetIsFrameInfoDump()181     bool GetIsFrameInfoDump() override
182     {
183         return isFrameInfoDump_;
184     }
185 
SetIsEnhanceSurface(bool isEnhanceSurface)186     void SetIsEnhanceSurface(bool isEnhanceSurface)
187     {
188         isEnhanceSurface_ = isEnhanceSurface;
189     }
190 
GetIsEnhanceSurface()191     bool GetIsEnhanceSurface() override
192     {
193         return isEnhanceSurface_;
194     }
195 
SetIsMultiRendererProcess(bool isMultiRendererProcess)196     void SetIsMultiRendererProcess(bool isMultiRendererProcess)
197     {
198         isMultiRendererProcess_ = isMultiRendererProcess;
199     }
200 
GetIsMultiRendererProcess()201     bool GetIsMultiRendererProcess() override
202     {
203         return isMultiRendererProcess_;
204     }
205 
SetArgsToAdd(const std::list<std::string> & argsToAdd)206     void SetArgsToAdd(const std::list<std::string>& argsToAdd)
207     {
208         argsToAdd_ = argsToAdd;
209     }
210 
GetArgsToAdd()211     std::list<std::string> GetArgsToAdd() override
212     {
213         return argsToAdd_;
214     }
215 
SetArgsToDelete(const std::list<std::string> & argsToDelete)216     void SetArgsToDelete(const std::list<std::string>& argsToDelete)
217     {
218         argsToDelete_ = argsToDelete;
219     }
220 
GetArgsToDelete()221     std::list<std::string> GetArgsToDelete() override
222     {
223         return argsToDelete_;
224     }
225 
SetSharedRenderProcessToken(const std::string & sharedRenderProcessToken)226     void SetSharedRenderProcessToken(const std::string& sharedRenderProcessToken)
227     {
228         sharedRenderProcessToken_ = sharedRenderProcessToken;
229     }
230 
GetSharedRenderProcessToken()231     std::string GetSharedRenderProcessToken() override
232     {
233         return sharedRenderProcessToken_;
234     }
235 
236 private:
237     std::string dumpPath_;
238 
239     bool isPopup_ = false;
240     bool isFrameInfoDump_ = false;
241     bool isEnhanceSurface_ = false;
242     bool isMultiRendererProcess_ = false;
243 
244     std::list<std::string> argsToAdd_;
245     std::list<std::string> argsToDelete_;
246     std::string sharedRenderProcessToken_;
247 };
248 
249 class NWebEnginePrefetchArgsImpl : public NWebEnginePrefetchArgs {
250 public:
NWebEnginePrefetchArgsImpl(const std::string & url,const std::string & method,const std::string & formData)251     NWebEnginePrefetchArgsImpl(const std::string& url, const std::string& method, const std::string& formData)
252         : url_(url), method_(method), form_data_(formData)
253     {}
254 
255     ~NWebEnginePrefetchArgsImpl() = default;
256 
GetUrl()257     std::string GetUrl() override
258     {
259         return url_;
260     }
261 
GetMethod()262     std::string GetMethod() override
263     {
264         return method_;
265     }
266 
GetFormData()267     std::string GetFormData() override
268     {
269         return form_data_;
270     }
271 
272 private:
273     std::string url_;
274     std::string method_;
275     std::string form_data_;
276 };
277 
278 class NWebPDFConfigArgsImpl : public NWebPDFConfigArgs {
279 public:
NWebPDFConfigArgsImpl(const double width,const double height,const double scale,const double marginTop,const double marginBottom,const double marginRight,const double marginLeft,const bool shouldPrintBackground)280     NWebPDFConfigArgsImpl(const double width, const double height, const double scale, const double marginTop,
281         const double marginBottom, const double marginRight, const double marginLeft, const bool shouldPrintBackground)
282         : width_(width), height_(height), scale_(scale), marginTop_(marginTop), marginBottom_(marginBottom),
283           marginRight_(marginRight), marginLeft_(marginLeft), shouldPrintBackground_(shouldPrintBackground)
284     {}
285 
286     ~NWebPDFConfigArgsImpl() = default;
287 
GetWidth()288     double GetWidth() override
289     {
290         return width_;
291     }
GetHeight()292     double GetHeight() override
293     {
294         return height_;
295     }
GetScale()296     double GetScale() override
297     {
298         return scale_;
299     }
GetMarginTop()300     double GetMarginTop() override
301     {
302         return marginTop_;
303     }
GetMarginBottom()304     double GetMarginBottom() override
305     {
306         return marginBottom_;
307     }
GetMarginRight()308     double GetMarginRight() override
309     {
310         return marginRight_;
311     }
GetMarginLeft()312     double GetMarginLeft() override
313     {
314         return marginLeft_;
315     }
GetShouldPrintBackground()316     bool GetShouldPrintBackground() override
317     {
318         return shouldPrintBackground_;
319     }
320 
321 private:
322     double width_;
323     double height_;
324     double scale_;
325     double marginTop_;
326     double marginBottom_;
327     double marginRight_;
328     double marginLeft_;
329     bool shouldPrintBackground_;
330 };
331 } // namespace OHOS::NWeb
332 
333 #endif // NWEB_INIT_PARAMS_H
334