ladybird/Libraries/LibWebView/Options.h
Timothy Flynn b2c112c41a LibWebView+RequestServer: Add a simple test mode for the HTTP disk cache
This mode allows us to test the HTTP disk cache with two mechanisms:

1. If RequestServer is launched with --http-disk-cache-mode=testing, it
   will cache requests with a X-Ladybird-Enable-Disk-Cache header.

2. In test mode, RS will include a X-Ladybird-Disk-Cache-Status response
   header indicating how the response was handled by the cache. There is
   no standard way for a web request to know what happened with respect
   to the disk cache, so this fills that hole for testing.

This mode is not exposed to users.
2025-11-20 09:33:49 +01:00

177 lines
3.6 KiB
C++

/*
* Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/ByteString.h>
#include <AK/Optional.h>
#include <AK/String.h>
#include <AK/Vector.h>
#include <LibURL/URL.h>
#include <LibWebView/ProcessType.h>
namespace WebView {
enum class HeadlessMode {
Screenshot,
LayoutTree,
Text,
Manual,
Test,
};
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;
bool validate_dnssec_locally;
};
struct DNSOverUDP {
ByteString server_address;
u16 port;
bool validate_dnssec_locally;
};
using DNSSettings = Variant<SystemDNS, DNSOverTLS, DNSOverUDP>;
constexpr inline u16 default_devtools_port = 6000;
enum class EnableContentFilter {
No,
Yes,
};
struct BrowserOptions {
Vector<URL::URL> urls;
Vector<ByteString> raw_urls;
Optional<HeadlessMode> headless_mode;
int window_width { 800 };
int window_height { 600 };
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<ProcessType> debug_helper_process {};
Optional<ProcessType> profile_helper_process {};
Optional<ByteString> webdriver_content_ipc_path {};
Optional<DNSSettings> dns_settings {};
Optional<u16> devtools_port;
EnableContentFilter enable_content_filter { EnableContentFilter::Yes };
};
enum class HTTPDiskCacheMode {
Disabled,
Enabled,
Testing,
};
struct RequestServerOptions {
Vector<ByteString> certificates;
HTTPDiskCacheMode http_disk_cache_mode { HTTPDiskCacheMode::Disabled };
};
enum class IsLayoutTestMode {
No,
Yes,
};
enum class LogAllJSExceptions {
No,
Yes,
};
enum class EnableIDLTracing {
No,
Yes,
};
enum class EnableHTTPCache {
No,
Yes,
};
enum class DisableSiteIsolation {
No,
Yes,
};
enum class ExposeInternalsObject {
No,
Yes,
};
enum class ForceCPUPainting {
No,
Yes,
};
enum class ForceFontconfig {
No,
Yes,
};
enum class CollectGarbageOnEveryAllocation {
No,
Yes,
};
enum class PaintViewportScrollbars {
Yes,
No,
};
struct WebContentOptions {
String command_line;
String executable_path;
Optional<ByteString> config_path {};
Optional<StringView> user_agent_preset {};
IsLayoutTestMode is_layout_test_mode { IsLayoutTestMode::No };
LogAllJSExceptions log_all_js_exceptions { LogAllJSExceptions::No };
DisableSiteIsolation disable_site_isolation { DisableSiteIsolation::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<u16> echo_server_port {};
PaintViewportScrollbars paint_viewport_scrollbars { PaintViewportScrollbars::Yes };
Optional<StringView> default_time_zone {};
};
}