diff --git a/Ladybird/HelperProcess.cpp b/Ladybird/HelperProcess.cpp index a677e7aee73..b00d95d10be 100644 --- a/Ladybird/HelperProcess.cpp +++ b/Ladybird/HelperProcess.cpp @@ -59,6 +59,8 @@ ErrorOr> launch_web_content_process( arguments.append("--log-all-js-exceptions"sv); if (web_content_options.enable_idl_tracing == Ladybird::EnableIDLTracing::Yes) arguments.append("--enable-idl-tracing"sv); + if (web_content_options.expose_internals_object == Ladybird::ExposeInternalsObject::Yes) + arguments.append("--expose-internals-object"sv); if (auto server = mach_server_name(); server.has_value()) { arguments.append("--mach-server-name"sv); arguments.append(server.value()); diff --git a/Ladybird/Qt/main.cpp b/Ladybird/Qt/main.cpp index 4a34eed8db4..578a34ffcbe 100644 --- a/Ladybird/Qt/main.cpp +++ b/Ladybird/Qt/main.cpp @@ -82,6 +82,7 @@ ErrorOr serenity_main(Main::Arguments arguments) bool enable_callgrind_profiling = false; bool disable_sql_database = false; bool enable_qt_networking = false; + bool expose_internals_object = false; bool use_gpu_painting = false; bool debug_web_content = false; bool log_all_js_exceptions = false; @@ -99,6 +100,7 @@ ErrorOr serenity_main(Main::Arguments arguments) args_parser.add_option(certificates, "Path to a certificate file", "certificate", 'C', "certificate"); args_parser.add_option(log_all_js_exceptions, "Log all JavaScript exceptions", "log-all-js-exceptions"); args_parser.add_option(enable_idl_tracing, "Enable IDL tracing", "enable-idl-tracing"); + args_parser.add_option(expose_internals_object, "Expose internals object", "expose-internals-object"); args_parser.parse(arguments); WebView::ProcessManager::initialize(); @@ -149,6 +151,7 @@ ErrorOr serenity_main(Main::Arguments arguments) .wait_for_debugger = debug_web_content ? Ladybird::WaitForDebugger::Yes : Ladybird::WaitForDebugger::No, .log_all_js_exceptions = log_all_js_exceptions ? Ladybird::LogAllJSExceptions::Yes : Ladybird::LogAllJSExceptions::No, .enable_idl_tracing = enable_idl_tracing ? Ladybird::EnableIDLTracing::Yes : Ladybird::EnableIDLTracing::No, + .expose_internals_object = expose_internals_object ? Ladybird::ExposeInternalsObject::Yes : Ladybird::ExposeInternalsObject::No, }; Ladybird::BrowserWindow window(initial_urls, cookie_jar, web_content_options, webdriver_content_ipc_path); diff --git a/Ladybird/Types.h b/Ladybird/Types.h index 476c7351971..db42ea73c58 100644 --- a/Ladybird/Types.h +++ b/Ladybird/Types.h @@ -45,6 +45,11 @@ enum class EnableIDLTracing { Yes }; +enum class ExposeInternalsObject { + No, + Yes +}; + struct WebContentOptions { String command_line; String executable_path; @@ -55,6 +60,7 @@ struct WebContentOptions { WaitForDebugger wait_for_debugger { WaitForDebugger::No }; LogAllJSExceptions log_all_js_exceptions { LogAllJSExceptions::No }; EnableIDLTracing enable_idl_tracing { EnableIDLTracing::No }; + ExposeInternalsObject expose_internals_object { ExposeInternalsObject::No }; }; } diff --git a/Ladybird/WebContent/main.cpp b/Ladybird/WebContent/main.cpp index c3c417faf9b..417e36777f5 100644 --- a/Ladybird/WebContent/main.cpp +++ b/Ladybird/WebContent/main.cpp @@ -94,6 +94,7 @@ ErrorOr serenity_main(Main::Arguments arguments) Vector certificates; int request_server_socket { -1 }; bool is_layout_test_mode = false; + bool expose_internals_object = false; bool use_lagom_networking = false; bool use_gpu_painting = false; bool wait_for_debugger = false; @@ -105,6 +106,7 @@ ErrorOr serenity_main(Main::Arguments arguments) args_parser.add_option(executable_path, "Chrome process executable path", "executable-path", 0, "executable_path"); args_parser.add_option(request_server_socket, "File descriptor of the socket for the RequestServer connection", "request-server-socket", 'r', "request_server_socket"); args_parser.add_option(is_layout_test_mode, "Is layout test mode", "layout-test-mode"); + args_parser.add_option(expose_internals_object, "Expose internals object", "expose-internals-object"); args_parser.add_option(use_lagom_networking, "Enable Lagom servers for networking", "use-lagom-networking"); args_parser.add_option(use_gpu_painting, "Enable GPU painting", "use-gpu-painting"); args_parser.add_option(wait_for_debugger, "Wait for debugger", "wait-for-debugger"); @@ -118,6 +120,10 @@ ErrorOr serenity_main(Main::Arguments arguments) Core::Process::wait_for_debugger_and_break(); } + // Layout test mode implies internals object is exposed + if (is_layout_test_mode) + expose_internals_object = true; + Web::set_chrome_process_command_line(command_line); Web::set_chrome_process_executable_path(executable_path); if (use_gpu_painting) { @@ -137,7 +143,7 @@ ErrorOr serenity_main(Main::Arguments arguments) #endif TRY(initialize_lagom_networking(request_server_socket)); - Web::HTML::Window::set_internals_object_exposed(is_layout_test_mode); + Web::HTML::Window::set_internals_object_exposed(expose_internals_object); Web::Platform::FontPlugin::install(*new Ladybird::FontPlugin(is_layout_test_mode));