/* * Copyright (c) 2023, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace WebView { enum class NewWindow { No, Yes, }; enum class ForceNewProcess { No, Yes, }; enum class AllowPopups { No, Yes, }; enum class DisableScripting { No, Yes, }; enum class DisableSQLDatabase { No, Yes, }; enum class EnableAutoplay { No, Yes, }; struct SystemDNS { }; struct DNSOverTLS { ByteString server_address; u16 port; }; struct DNSOverUDP { ByteString server_address; u16 port; }; using DNSSettings = Variant; struct ChromeOptions { Vector urls; Vector raw_urls; URL::URL new_tab_page_url; Vector certificates {}; NewWindow new_window { NewWindow::No }; ForceNewProcess force_new_process { ForceNewProcess::No }; AllowPopups allow_popups { AllowPopups::No }; DisableScripting disable_scripting { DisableScripting::No }; DisableSQLDatabase disable_sql_database { DisableSQLDatabase::No }; Optional debug_helper_process {}; Optional profile_helper_process {}; Optional webdriver_content_ipc_path {}; DNSSettings dns_settings { SystemDNS {} }; }; enum class IsLayoutTestMode { No, Yes, }; enum class LogAllJSExceptions { No, Yes, }; enum class EnableIDLTracing { No, Yes, }; enum class EnableHTTPCache { No, Yes, }; enum class ExposeInternalsObject { No, Yes, }; enum class ForceCPUPainting { No, Yes, }; enum class ForceFontconfig { No, Yes, }; enum class CollectGarbageOnEveryAllocation { No, Yes, }; enum class IsHeadless { No, Yes, }; enum class PaintViewportScrollbars { Yes, No, }; struct WebContentOptions { String command_line; String executable_path; Optional config_path {}; Optional user_agent_preset {}; IsLayoutTestMode is_layout_test_mode { IsLayoutTestMode::No }; LogAllJSExceptions log_all_js_exceptions { LogAllJSExceptions::No }; EnableIDLTracing enable_idl_tracing { EnableIDLTracing::No }; EnableHTTPCache enable_http_cache { EnableHTTPCache::No }; ExposeInternalsObject expose_internals_object { ExposeInternalsObject::No }; ForceCPUPainting force_cpu_painting { ForceCPUPainting::No }; ForceFontconfig force_fontconfig { ForceFontconfig::No }; EnableAutoplay enable_autoplay { EnableAutoplay::No }; CollectGarbageOnEveryAllocation collect_garbage_on_every_allocation { CollectGarbageOnEveryAllocation::No }; Optional echo_server_port {}; IsHeadless is_headless { IsHeadless::No }; PaintViewportScrollbars paint_viewport_scrollbars { PaintViewportScrollbars::Yes }; }; }