10826e83eSopenharmony_ci/*
20826e83eSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
30826e83eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
40826e83eSopenharmony_ci * you may not use this file except in compliance with the License.
50826e83eSopenharmony_ci * You may obtain a copy of the License at
60826e83eSopenharmony_ci *
70826e83eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
80826e83eSopenharmony_ci *
90826e83eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
100826e83eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
110826e83eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
120826e83eSopenharmony_ci * See the License for the specific language governing permissions and
130826e83eSopenharmony_ci * limitations under the License.
140826e83eSopenharmony_ci */
150826e83eSopenharmony_ci#ifndef NWEB_INIT_PARAMS_H
160826e83eSopenharmony_ci#define NWEB_INIT_PARAMS_H
170826e83eSopenharmony_ci
180826e83eSopenharmony_ci#include "nweb.h"
190826e83eSopenharmony_ci#include "nweb_download_manager.h"
200826e83eSopenharmony_ci
210826e83eSopenharmony_cinamespace OHOS::NWeb {
220826e83eSopenharmony_ci
230826e83eSopenharmony_ciclass NWebDOHConfigImpl : public NWebDOHConfig {
240826e83eSopenharmony_cipublic:
250826e83eSopenharmony_ci    NWebDOHConfigImpl() = default;
260826e83eSopenharmony_ci    ~NWebDOHConfigImpl() = default;
270826e83eSopenharmony_ci
280826e83eSopenharmony_ci    void SetMode(int mode)
290826e83eSopenharmony_ci    {
300826e83eSopenharmony_ci        mode_ = mode;
310826e83eSopenharmony_ci    }
320826e83eSopenharmony_ci
330826e83eSopenharmony_ci    int GetMode() override
340826e83eSopenharmony_ci    {
350826e83eSopenharmony_ci        return mode_;
360826e83eSopenharmony_ci    }
370826e83eSopenharmony_ci
380826e83eSopenharmony_ci    void SetConfig(const std::string& config)
390826e83eSopenharmony_ci    {
400826e83eSopenharmony_ci        config_ = config;
410826e83eSopenharmony_ci    }
420826e83eSopenharmony_ci
430826e83eSopenharmony_ci    std::string GetConfig() override
440826e83eSopenharmony_ci    {
450826e83eSopenharmony_ci        return config_;
460826e83eSopenharmony_ci    }
470826e83eSopenharmony_ci
480826e83eSopenharmony_ciprivate:
490826e83eSopenharmony_ci    int mode_ = -1;
500826e83eSopenharmony_ci    std::string config_;
510826e83eSopenharmony_ci};
520826e83eSopenharmony_ci
530826e83eSopenharmony_ciclass NWebCreateInfoImpl : public NWebCreateInfo {
540826e83eSopenharmony_cipublic:
550826e83eSopenharmony_ci    NWebCreateInfoImpl() = default;
560826e83eSopenharmony_ci    ~NWebCreateInfoImpl() = default;
570826e83eSopenharmony_ci
580826e83eSopenharmony_ci    void SetWidth(uint32_t width)
590826e83eSopenharmony_ci    {
600826e83eSopenharmony_ci        width_ = width;
610826e83eSopenharmony_ci    }
620826e83eSopenharmony_ci
630826e83eSopenharmony_ci    uint32_t GetWidth() override
640826e83eSopenharmony_ci    {
650826e83eSopenharmony_ci        return width_;
660826e83eSopenharmony_ci    }
670826e83eSopenharmony_ci
680826e83eSopenharmony_ci    void SetHeight(uint32_t height)
690826e83eSopenharmony_ci    {
700826e83eSopenharmony_ci        height_ = height;
710826e83eSopenharmony_ci    }
720826e83eSopenharmony_ci
730826e83eSopenharmony_ci    uint32_t GetHeight() override
740826e83eSopenharmony_ci    {
750826e83eSopenharmony_ci        return height_;
760826e83eSopenharmony_ci    }
770826e83eSopenharmony_ci
780826e83eSopenharmony_ci    void SetIsIncognitoMode(bool isIncognitoMode)
790826e83eSopenharmony_ci    {
800826e83eSopenharmony_ci        isIncognitoMode_ = isIncognitoMode;
810826e83eSopenharmony_ci    }
820826e83eSopenharmony_ci
830826e83eSopenharmony_ci    bool GetIsIncognitoMode() override
840826e83eSopenharmony_ci    {
850826e83eSopenharmony_ci        return isIncognitoMode_;
860826e83eSopenharmony_ci    }
870826e83eSopenharmony_ci
880826e83eSopenharmony_ci    void SetProducerSurface(void* producerSurface)
890826e83eSopenharmony_ci    {
900826e83eSopenharmony_ci        producerSurface_ = producerSurface;
910826e83eSopenharmony_ci    }
920826e83eSopenharmony_ci
930826e83eSopenharmony_ci    void* GetProducerSurface() override
940826e83eSopenharmony_ci    {
950826e83eSopenharmony_ci        return producerSurface_;
960826e83eSopenharmony_ci    }
970826e83eSopenharmony_ci
980826e83eSopenharmony_ci    void SetEnhanceSurfaceInfo(void* enhanceSurfaceInfo)
990826e83eSopenharmony_ci    {
1000826e83eSopenharmony_ci        enhanceSurfaceInfo_ = enhanceSurfaceInfo;
1010826e83eSopenharmony_ci    }
1020826e83eSopenharmony_ci
1030826e83eSopenharmony_ci    void* GetEnhanceSurfaceInfo() override
1040826e83eSopenharmony_ci    {
1050826e83eSopenharmony_ci        return enhanceSurfaceInfo_;
1060826e83eSopenharmony_ci    }
1070826e83eSopenharmony_ci
1080826e83eSopenharmony_ci    void SetEngineInitArgs(std::shared_ptr<NWebEngineInitArgs> initArgs)
1090826e83eSopenharmony_ci    {
1100826e83eSopenharmony_ci        initArgs_ = initArgs;
1110826e83eSopenharmony_ci    }
1120826e83eSopenharmony_ci
1130826e83eSopenharmony_ci    std::shared_ptr<NWebEngineInitArgs> GetEngineInitArgs() override
1140826e83eSopenharmony_ci    {
1150826e83eSopenharmony_ci        return initArgs_;
1160826e83eSopenharmony_ci    }
1170826e83eSopenharmony_ci
1180826e83eSopenharmony_ci    void SetOutputFrameCallback(std::shared_ptr<NWebOutputFrameCallback> outputFrameCallback)
1190826e83eSopenharmony_ci    {
1200826e83eSopenharmony_ci        outputFrameCallback_ = outputFrameCallback;
1210826e83eSopenharmony_ci    }
1220826e83eSopenharmony_ci
1230826e83eSopenharmony_ci    std::shared_ptr<NWebOutputFrameCallback> GetOutputFrameCallback() override
1240826e83eSopenharmony_ci    {
1250826e83eSopenharmony_ci        return outputFrameCallback_;
1260826e83eSopenharmony_ci    }
1270826e83eSopenharmony_ci
1280826e83eSopenharmony_ciprivate:
1290826e83eSopenharmony_ci    uint32_t width_ = 0;
1300826e83eSopenharmony_ci    uint32_t height_ = 0;
1310826e83eSopenharmony_ci
1320826e83eSopenharmony_ci    bool isIncognitoMode_ = false;
1330826e83eSopenharmony_ci
1340826e83eSopenharmony_ci    void* producerSurface_ = nullptr;
1350826e83eSopenharmony_ci    void* enhanceSurfaceInfo_ = nullptr;
1360826e83eSopenharmony_ci
1370826e83eSopenharmony_ci    std::shared_ptr<NWebEngineInitArgs> initArgs_ = nullptr;
1380826e83eSopenharmony_ci    std::shared_ptr<NWebOutputFrameCallback> outputFrameCallback_ = nullptr;
1390826e83eSopenharmony_ci};
1400826e83eSopenharmony_ci
1410826e83eSopenharmony_ciclass NWebEngineInitArgsImpl : public NWebEngineInitArgs {
1420826e83eSopenharmony_cipublic:
1430826e83eSopenharmony_ci    NWebEngineInitArgsImpl() = default;
1440826e83eSopenharmony_ci    ~NWebEngineInitArgsImpl() = default;
1450826e83eSopenharmony_ci
1460826e83eSopenharmony_ci    void AddArg(const std::string& arg)
1470826e83eSopenharmony_ci    {
1480826e83eSopenharmony_ci        argsToAdd_.emplace_back(arg);
1490826e83eSopenharmony_ci    }
1500826e83eSopenharmony_ci
1510826e83eSopenharmony_ci    void AddDeleteArg(const std::string& arg)
1520826e83eSopenharmony_ci    {
1530826e83eSopenharmony_ci        argsToDelete_.emplace_back(arg);
1540826e83eSopenharmony_ci    }
1550826e83eSopenharmony_ci
1560826e83eSopenharmony_ci    void SetDumpPath(const std::string& dumpPath)
1570826e83eSopenharmony_ci    {
1580826e83eSopenharmony_ci        dumpPath_ = dumpPath;
1590826e83eSopenharmony_ci    }
1600826e83eSopenharmony_ci
1610826e83eSopenharmony_ci    std::string GetDumpPath() override
1620826e83eSopenharmony_ci    {
1630826e83eSopenharmony_ci        return dumpPath_;
1640826e83eSopenharmony_ci    }
1650826e83eSopenharmony_ci
1660826e83eSopenharmony_ci    void SetIsPopup(bool isPopup)
1670826e83eSopenharmony_ci    {
1680826e83eSopenharmony_ci        isPopup_ = isPopup;
1690826e83eSopenharmony_ci    }
1700826e83eSopenharmony_ci
1710826e83eSopenharmony_ci    bool GetIsPopup() override
1720826e83eSopenharmony_ci    {
1730826e83eSopenharmony_ci        return isPopup_;
1740826e83eSopenharmony_ci    }
1750826e83eSopenharmony_ci
1760826e83eSopenharmony_ci    void SetIsFrameInfoDump(bool isFrameInfoDump)
1770826e83eSopenharmony_ci    {
1780826e83eSopenharmony_ci        isFrameInfoDump_ = isFrameInfoDump;
1790826e83eSopenharmony_ci    }
1800826e83eSopenharmony_ci
1810826e83eSopenharmony_ci    bool GetIsFrameInfoDump() override
1820826e83eSopenharmony_ci    {
1830826e83eSopenharmony_ci        return isFrameInfoDump_;
1840826e83eSopenharmony_ci    }
1850826e83eSopenharmony_ci
1860826e83eSopenharmony_ci    void SetIsEnhanceSurface(bool isEnhanceSurface)
1870826e83eSopenharmony_ci    {
1880826e83eSopenharmony_ci        isEnhanceSurface_ = isEnhanceSurface;
1890826e83eSopenharmony_ci    }
1900826e83eSopenharmony_ci
1910826e83eSopenharmony_ci    bool GetIsEnhanceSurface() override
1920826e83eSopenharmony_ci    {
1930826e83eSopenharmony_ci        return isEnhanceSurface_;
1940826e83eSopenharmony_ci    }
1950826e83eSopenharmony_ci
1960826e83eSopenharmony_ci    void SetIsMultiRendererProcess(bool isMultiRendererProcess)
1970826e83eSopenharmony_ci    {
1980826e83eSopenharmony_ci        isMultiRendererProcess_ = isMultiRendererProcess;
1990826e83eSopenharmony_ci    }
2000826e83eSopenharmony_ci
2010826e83eSopenharmony_ci    bool GetIsMultiRendererProcess() override
2020826e83eSopenharmony_ci    {
2030826e83eSopenharmony_ci        return isMultiRendererProcess_;
2040826e83eSopenharmony_ci    }
2050826e83eSopenharmony_ci
2060826e83eSopenharmony_ci    void SetArgsToAdd(const std::list<std::string>& argsToAdd)
2070826e83eSopenharmony_ci    {
2080826e83eSopenharmony_ci        argsToAdd_ = argsToAdd;
2090826e83eSopenharmony_ci    }
2100826e83eSopenharmony_ci
2110826e83eSopenharmony_ci    std::list<std::string> GetArgsToAdd() override
2120826e83eSopenharmony_ci    {
2130826e83eSopenharmony_ci        return argsToAdd_;
2140826e83eSopenharmony_ci    }
2150826e83eSopenharmony_ci
2160826e83eSopenharmony_ci    void SetArgsToDelete(const std::list<std::string>& argsToDelete)
2170826e83eSopenharmony_ci    {
2180826e83eSopenharmony_ci        argsToDelete_ = argsToDelete;
2190826e83eSopenharmony_ci    }
2200826e83eSopenharmony_ci
2210826e83eSopenharmony_ci    std::list<std::string> GetArgsToDelete() override
2220826e83eSopenharmony_ci    {
2230826e83eSopenharmony_ci        return argsToDelete_;
2240826e83eSopenharmony_ci    }
2250826e83eSopenharmony_ci
2260826e83eSopenharmony_ci    void SetSharedRenderProcessToken(const std::string& sharedRenderProcessToken)
2270826e83eSopenharmony_ci    {
2280826e83eSopenharmony_ci        sharedRenderProcessToken_ = sharedRenderProcessToken;
2290826e83eSopenharmony_ci    }
2300826e83eSopenharmony_ci
2310826e83eSopenharmony_ci    std::string GetSharedRenderProcessToken() override
2320826e83eSopenharmony_ci    {
2330826e83eSopenharmony_ci        return sharedRenderProcessToken_;
2340826e83eSopenharmony_ci    }
2350826e83eSopenharmony_ci
2360826e83eSopenharmony_ciprivate:
2370826e83eSopenharmony_ci    std::string dumpPath_;
2380826e83eSopenharmony_ci
2390826e83eSopenharmony_ci    bool isPopup_ = false;
2400826e83eSopenharmony_ci    bool isFrameInfoDump_ = false;
2410826e83eSopenharmony_ci    bool isEnhanceSurface_ = false;
2420826e83eSopenharmony_ci    bool isMultiRendererProcess_ = false;
2430826e83eSopenharmony_ci
2440826e83eSopenharmony_ci    std::list<std::string> argsToAdd_;
2450826e83eSopenharmony_ci    std::list<std::string> argsToDelete_;
2460826e83eSopenharmony_ci    std::string sharedRenderProcessToken_;
2470826e83eSopenharmony_ci};
2480826e83eSopenharmony_ci
2490826e83eSopenharmony_ciclass NWebEnginePrefetchArgsImpl : public NWebEnginePrefetchArgs {
2500826e83eSopenharmony_cipublic:
2510826e83eSopenharmony_ci    NWebEnginePrefetchArgsImpl(const std::string& url, const std::string& method, const std::string& formData)
2520826e83eSopenharmony_ci        : url_(url), method_(method), form_data_(formData)
2530826e83eSopenharmony_ci    {}
2540826e83eSopenharmony_ci
2550826e83eSopenharmony_ci    ~NWebEnginePrefetchArgsImpl() = default;
2560826e83eSopenharmony_ci
2570826e83eSopenharmony_ci    std::string GetUrl() override
2580826e83eSopenharmony_ci    {
2590826e83eSopenharmony_ci        return url_;
2600826e83eSopenharmony_ci    }
2610826e83eSopenharmony_ci
2620826e83eSopenharmony_ci    std::string GetMethod() override
2630826e83eSopenharmony_ci    {
2640826e83eSopenharmony_ci        return method_;
2650826e83eSopenharmony_ci    }
2660826e83eSopenharmony_ci
2670826e83eSopenharmony_ci    std::string GetFormData() override
2680826e83eSopenharmony_ci    {
2690826e83eSopenharmony_ci        return form_data_;
2700826e83eSopenharmony_ci    }
2710826e83eSopenharmony_ci
2720826e83eSopenharmony_ciprivate:
2730826e83eSopenharmony_ci    std::string url_;
2740826e83eSopenharmony_ci    std::string method_;
2750826e83eSopenharmony_ci    std::string form_data_;
2760826e83eSopenharmony_ci};
2770826e83eSopenharmony_ci
2780826e83eSopenharmony_ciclass NWebPDFConfigArgsImpl : public NWebPDFConfigArgs {
2790826e83eSopenharmony_cipublic:
2800826e83eSopenharmony_ci    NWebPDFConfigArgsImpl(const double width, const double height, const double scale, const double marginTop,
2810826e83eSopenharmony_ci        const double marginBottom, const double marginRight, const double marginLeft, const bool shouldPrintBackground)
2820826e83eSopenharmony_ci        : width_(width), height_(height), scale_(scale), marginTop_(marginTop), marginBottom_(marginBottom),
2830826e83eSopenharmony_ci          marginRight_(marginRight), marginLeft_(marginLeft), shouldPrintBackground_(shouldPrintBackground)
2840826e83eSopenharmony_ci    {}
2850826e83eSopenharmony_ci
2860826e83eSopenharmony_ci    ~NWebPDFConfigArgsImpl() = default;
2870826e83eSopenharmony_ci
2880826e83eSopenharmony_ci    double GetWidth() override
2890826e83eSopenharmony_ci    {
2900826e83eSopenharmony_ci        return width_;
2910826e83eSopenharmony_ci    }
2920826e83eSopenharmony_ci    double GetHeight() override
2930826e83eSopenharmony_ci    {
2940826e83eSopenharmony_ci        return height_;
2950826e83eSopenharmony_ci    }
2960826e83eSopenharmony_ci    double GetScale() override
2970826e83eSopenharmony_ci    {
2980826e83eSopenharmony_ci        return scale_;
2990826e83eSopenharmony_ci    }
3000826e83eSopenharmony_ci    double GetMarginTop() override
3010826e83eSopenharmony_ci    {
3020826e83eSopenharmony_ci        return marginTop_;
3030826e83eSopenharmony_ci    }
3040826e83eSopenharmony_ci    double GetMarginBottom() override
3050826e83eSopenharmony_ci    {
3060826e83eSopenharmony_ci        return marginBottom_;
3070826e83eSopenharmony_ci    }
3080826e83eSopenharmony_ci    double GetMarginRight() override
3090826e83eSopenharmony_ci    {
3100826e83eSopenharmony_ci        return marginRight_;
3110826e83eSopenharmony_ci    }
3120826e83eSopenharmony_ci    double GetMarginLeft() override
3130826e83eSopenharmony_ci    {
3140826e83eSopenharmony_ci        return marginLeft_;
3150826e83eSopenharmony_ci    }
3160826e83eSopenharmony_ci    bool GetShouldPrintBackground() override
3170826e83eSopenharmony_ci    {
3180826e83eSopenharmony_ci        return shouldPrintBackground_;
3190826e83eSopenharmony_ci    }
3200826e83eSopenharmony_ci
3210826e83eSopenharmony_ciprivate:
3220826e83eSopenharmony_ci    double width_;
3230826e83eSopenharmony_ci    double height_;
3240826e83eSopenharmony_ci    double scale_;
3250826e83eSopenharmony_ci    double marginTop_;
3260826e83eSopenharmony_ci    double marginBottom_;
3270826e83eSopenharmony_ci    double marginRight_;
3280826e83eSopenharmony_ci    double marginLeft_;
3290826e83eSopenharmony_ci    bool shouldPrintBackground_;
3300826e83eSopenharmony_ci};
3310826e83eSopenharmony_ci} // namespace OHOS::NWeb
3320826e83eSopenharmony_ci
3330826e83eSopenharmony_ci#endif // NWEB_INIT_PARAMS_H
334