Everywhere: Use Skia painter by default
Skia painter is visibly faster than LibGfx painter and has more complete CSS transforms support. With this change: - On Linux, it will try to use Vulkan-backend with fallback to CPU-backend - On macOS it will try to use Metal-backend with fallback to CPU-backend - headless-browser always runs with CPU-backend in layout mode
Author: https://github.com/kalenikaliaksandr
Commit: 3627329bed
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/736
Reviewed-by: https://github.com/jamierocks
|
@ -83,7 +83,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
Vector<ByteString> raw_urls;
|
Vector<ByteString> raw_urls;
|
||||||
Vector<ByteString> certificates;
|
Vector<ByteString> certificates;
|
||||||
StringView webdriver_content_ipc_path;
|
StringView webdriver_content_ipc_path;
|
||||||
bool use_skia_painting = false;
|
|
||||||
bool debug_web_content = false;
|
bool debug_web_content = false;
|
||||||
bool log_all_js_exceptions = false;
|
bool log_all_js_exceptions = false;
|
||||||
bool enable_http_cache = false;
|
bool enable_http_cache = false;
|
||||||
|
@ -95,7 +94,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
args_parser.set_general_help("The Ladybird web browser");
|
args_parser.set_general_help("The Ladybird web browser");
|
||||||
args_parser.add_positional_argument(raw_urls, "URLs to open", "url", Core::ArgsParser::Required::No);
|
args_parser.add_positional_argument(raw_urls, "URLs to open", "url", Core::ArgsParser::Required::No);
|
||||||
args_parser.add_option(webdriver_content_ipc_path, "Path to WebDriver IPC for WebContent", "webdriver-content-path", 0, "path", Core::ArgsParser::OptionHideMode::CommandLineAndMarkdown);
|
args_parser.add_option(webdriver_content_ipc_path, "Path to WebDriver IPC for WebContent", "webdriver-content-path", 0, "path", Core::ArgsParser::OptionHideMode::CommandLineAndMarkdown);
|
||||||
args_parser.add_option(use_skia_painting, "Enable Skia painting", "enable-skia-painting");
|
|
||||||
args_parser.add_option(debug_web_content, "Wait for debugger to attach to WebContent", "debug-web-content");
|
args_parser.add_option(debug_web_content, "Wait for debugger to attach to WebContent", "debug-web-content");
|
||||||
args_parser.add_option(certificates, "Path to a certificate file", "certificate", 'C', "certificate");
|
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(log_all_js_exceptions, "Log all JavaScript exceptions", "log-all-js-exceptions");
|
||||||
|
@ -142,7 +140,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
Ladybird::WebContentOptions web_content_options {
|
Ladybird::WebContentOptions web_content_options {
|
||||||
.command_line = MUST(command_line_builder.to_string()),
|
.command_line = MUST(command_line_builder.to_string()),
|
||||||
.executable_path = MUST(String::from_byte_string(MUST(Core::System::current_executable_path()))),
|
.executable_path = MUST(String::from_byte_string(MUST(Core::System::current_executable_path()))),
|
||||||
.enable_skia_painting = use_skia_painting ? Ladybird::EnableSkiaPainting::Yes : Ladybird::EnableSkiaPainting::No,
|
|
||||||
.wait_for_debugger = debug_web_content ? Ladybird::WaitForDebugger::Yes : Ladybird::WaitForDebugger::No,
|
.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,
|
.log_all_js_exceptions = log_all_js_exceptions ? Ladybird::LogAllJSExceptions::Yes : Ladybird::LogAllJSExceptions::No,
|
||||||
.enable_http_cache = enable_http_cache ? Ladybird::EnableHTTPCache::Yes : Ladybird::EnableHTTPCache::No,
|
.enable_http_cache = enable_http_cache ? Ladybird::EnableHTTPCache::Yes : Ladybird::EnableHTTPCache::No,
|
||||||
|
|
|
@ -88,8 +88,6 @@ ErrorOr<NonnullRefPtr<WebView::WebContentClient>> launch_web_content_process(
|
||||||
arguments.append("--layout-test-mode"sv);
|
arguments.append("--layout-test-mode"sv);
|
||||||
if (web_content_options.use_lagom_networking == Ladybird::UseLagomNetworking::Yes)
|
if (web_content_options.use_lagom_networking == Ladybird::UseLagomNetworking::Yes)
|
||||||
arguments.append("--use-lagom-networking"sv);
|
arguments.append("--use-lagom-networking"sv);
|
||||||
if (web_content_options.enable_skia_painting == Ladybird::EnableSkiaPainting::Yes)
|
|
||||||
arguments.append("--use-skia-painting"sv);
|
|
||||||
if (web_content_options.wait_for_debugger == Ladybird::WaitForDebugger::Yes)
|
if (web_content_options.wait_for_debugger == Ladybird::WaitForDebugger::Yes)
|
||||||
arguments.append("--wait-for-debugger"sv);
|
arguments.append("--wait-for-debugger"sv);
|
||||||
if (web_content_options.log_all_js_exceptions == Ladybird::LogAllJSExceptions::Yes)
|
if (web_content_options.log_all_js_exceptions == Ladybird::LogAllJSExceptions::Yes)
|
||||||
|
|
|
@ -93,7 +93,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
bool disable_sql_database = false;
|
bool disable_sql_database = false;
|
||||||
bool enable_qt_networking = false;
|
bool enable_qt_networking = false;
|
||||||
bool expose_internals_object = false;
|
bool expose_internals_object = false;
|
||||||
bool use_skia_painting = false;
|
|
||||||
bool debug_web_content = false;
|
bool debug_web_content = false;
|
||||||
bool log_all_js_exceptions = false;
|
bool log_all_js_exceptions = false;
|
||||||
bool enable_idl_tracing = false;
|
bool enable_idl_tracing = false;
|
||||||
|
@ -109,7 +108,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
args_parser.add_option(enable_callgrind_profiling, "Enable Callgrind profiling", "enable-callgrind-profiling", 'P');
|
args_parser.add_option(enable_callgrind_profiling, "Enable Callgrind profiling", "enable-callgrind-profiling", 'P');
|
||||||
args_parser.add_option(disable_sql_database, "Disable SQL database", "disable-sql-database");
|
args_parser.add_option(disable_sql_database, "Disable SQL database", "disable-sql-database");
|
||||||
args_parser.add_option(enable_qt_networking, "Enable Qt as the backend networking service", "enable-qt-networking");
|
args_parser.add_option(enable_qt_networking, "Enable Qt as the backend networking service", "enable-qt-networking");
|
||||||
args_parser.add_option(use_skia_painting, "Enable Skia painting", "enable-skia-painting");
|
|
||||||
args_parser.add_option(debug_web_content, "Wait for debugger to attach to WebContent", "debug-web-content");
|
args_parser.add_option(debug_web_content, "Wait for debugger to attach to WebContent", "debug-web-content");
|
||||||
args_parser.add_option(certificates, "Path to a certificate file", "certificate", 'C', "certificate");
|
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(log_all_js_exceptions, "Log all JavaScript exceptions", "log-all-js-exceptions");
|
||||||
|
@ -179,7 +177,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
.executable_path = MUST(String::from_byte_string(MUST(Core::System::current_executable_path()))),
|
.executable_path = MUST(String::from_byte_string(MUST(Core::System::current_executable_path()))),
|
||||||
.config_path = Ladybird::Settings::the()->directory(),
|
.config_path = Ladybird::Settings::the()->directory(),
|
||||||
.enable_callgrind_profiling = enable_callgrind_profiling ? Ladybird::EnableCallgrindProfiling::Yes : Ladybird::EnableCallgrindProfiling::No,
|
.enable_callgrind_profiling = enable_callgrind_profiling ? Ladybird::EnableCallgrindProfiling::Yes : Ladybird::EnableCallgrindProfiling::No,
|
||||||
.enable_skia_painting = use_skia_painting ? Ladybird::EnableSkiaPainting::Yes : Ladybird::EnableSkiaPainting::No,
|
|
||||||
.use_lagom_networking = enable_qt_networking ? Ladybird::UseLagomNetworking::No : Ladybird::UseLagomNetworking::Yes,
|
.use_lagom_networking = enable_qt_networking ? Ladybird::UseLagomNetworking::No : Ladybird::UseLagomNetworking::Yes,
|
||||||
.wait_for_debugger = debug_web_content ? Ladybird::WaitForDebugger::Yes : Ladybird::WaitForDebugger::No,
|
.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,
|
.log_all_js_exceptions = log_all_js_exceptions ? Ladybird::LogAllJSExceptions::Yes : Ladybird::LogAllJSExceptions::No,
|
||||||
|
|
|
@ -15,11 +15,6 @@ enum class EnableCallgrindProfiling {
|
||||||
Yes
|
Yes
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class EnableSkiaPainting {
|
|
||||||
No,
|
|
||||||
Yes
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class IsLayoutTestMode {
|
enum class IsLayoutTestMode {
|
||||||
No,
|
No,
|
||||||
Yes
|
Yes
|
||||||
|
@ -60,7 +55,6 @@ struct WebContentOptions {
|
||||||
String executable_path;
|
String executable_path;
|
||||||
Optional<ByteString> config_path {};
|
Optional<ByteString> config_path {};
|
||||||
EnableCallgrindProfiling enable_callgrind_profiling { EnableCallgrindProfiling::No };
|
EnableCallgrindProfiling enable_callgrind_profiling { EnableCallgrindProfiling::No };
|
||||||
EnableSkiaPainting enable_skia_painting { EnableSkiaPainting::No };
|
|
||||||
IsLayoutTestMode is_layout_test_mode { IsLayoutTestMode::No };
|
IsLayoutTestMode is_layout_test_mode { IsLayoutTestMode::No };
|
||||||
UseLagomNetworking use_lagom_networking { UseLagomNetworking::Yes };
|
UseLagomNetworking use_lagom_networking { UseLagomNetworking::Yes };
|
||||||
WaitForDebugger wait_for_debugger { WaitForDebugger::No };
|
WaitForDebugger wait_for_debugger { WaitForDebugger::No };
|
||||||
|
|
|
@ -136,10 +136,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
Web::set_chrome_process_command_line(command_line);
|
Web::set_chrome_process_command_line(command_line);
|
||||||
Web::set_chrome_process_executable_path(executable_path);
|
Web::set_chrome_process_executable_path(executable_path);
|
||||||
|
|
||||||
if (use_skia_painter) {
|
// Always use the CPU backend for layout tests, as the GPU backend is not deterministic
|
||||||
// Always use the CPU backend for layout tests, as the GPU backend is not deterministic
|
WebContent::PageClient::set_use_skia_painter(is_layout_test_mode ? WebContent::PageClient::UseSkiaPainter::CPUBackend : WebContent::PageClient::UseSkiaPainter::GPUBackendIfAvailable);
|
||||||
WebContent::PageClient::set_use_skia_painter(is_layout_test_mode ? WebContent::PageClient::UseSkiaPainter::CPUBackend : WebContent::PageClient::UseSkiaPainter::GPUBackendIfAvailable);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enable_http_cache) {
|
if (enable_http_cache) {
|
||||||
Web::Fetch::Fetching::g_http_cache_enabled = true;
|
Web::Fetch::Fetching::g_http_cache_enabled = true;
|
||||||
|
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 401 KiB After Width: | Height: | Size: 364 KiB |
Before Width: | Height: | Size: 999 B After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 171 B After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 272 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 541 KiB After Width: | Height: | Size: 430 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 548 KiB After Width: | Height: | Size: 656 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 196 B After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 407 B After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 1,004 B After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 857 KiB After Width: | Height: | Size: 822 KiB |
Before Width: | Height: | Size: 831 B After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 73 KiB |
|
@ -8,6 +8,7 @@
|
||||||
#include <LibWeb/Layout/SVGClipBox.h>
|
#include <LibWeb/Layout/SVGClipBox.h>
|
||||||
#include <LibWeb/Layout/SVGMaskBox.h>
|
#include <LibWeb/Layout/SVGMaskBox.h>
|
||||||
#include <LibWeb/Painting/DisplayListPlayerCPU.h>
|
#include <LibWeb/Painting/DisplayListPlayerCPU.h>
|
||||||
|
#include <LibWeb/Painting/DisplayListPlayerSkia.h>
|
||||||
#include <LibWeb/Painting/SVGClipPaintable.h>
|
#include <LibWeb/Painting/SVGClipPaintable.h>
|
||||||
#include <LibWeb/Painting/SVGGraphicsPaintable.h>
|
#include <LibWeb/Painting/SVGGraphicsPaintable.h>
|
||||||
#include <LibWeb/Painting/StackingContext.h>
|
#include <LibWeb/Painting/StackingContext.h>
|
||||||
|
@ -88,7 +89,7 @@ RefPtr<Gfx::Bitmap> SVGMaskable::calculate_mask_of_svg(PaintContext& context, CS
|
||||||
paint_context.set_svg_transform(graphics_element.get_transform());
|
paint_context.set_svg_transform(graphics_element.get_transform());
|
||||||
paint_context.set_draw_svg_geometry_for_clip_path(is<SVGClipPaintable>(paintable));
|
paint_context.set_draw_svg_geometry_for_clip_path(is<SVGClipPaintable>(paintable));
|
||||||
StackingContext::paint_node_as_stacking_context(paintable, paint_context);
|
StackingContext::paint_node_as_stacking_context(paintable, paint_context);
|
||||||
DisplayListPlayerCPU executor { *mask_bitmap };
|
DisplayListPlayerSkia executor { *mask_bitmap };
|
||||||
display_list.execute(executor);
|
display_list.execute(executor);
|
||||||
return mask_bitmap;
|
return mask_bitmap;
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
namespace WebContent {
|
namespace WebContent {
|
||||||
|
|
||||||
static PageClient::UseSkiaPainter s_use_skia_painter = PageClient::UseSkiaPainter::No;
|
static PageClient::UseSkiaPainter s_use_skia_painter = PageClient::UseSkiaPainter::GPUBackendIfAvailable;
|
||||||
|
|
||||||
JS_DEFINE_ALLOCATOR(PageClient);
|
JS_DEFINE_ALLOCATOR(PageClient);
|
||||||
|
|
||||||
|
@ -733,8 +733,6 @@ void PageClient::did_get_js_console_messages(i32 start_index, Vector<ByteString>
|
||||||
Web::DisplayListPlayerType PageClient::display_list_player_type() const
|
Web::DisplayListPlayerType PageClient::display_list_player_type() const
|
||||||
{
|
{
|
||||||
switch (s_use_skia_painter) {
|
switch (s_use_skia_painter) {
|
||||||
case UseSkiaPainter::No:
|
|
||||||
return Web::DisplayListPlayerType::CPU;
|
|
||||||
case UseSkiaPainter::GPUBackendIfAvailable:
|
case UseSkiaPainter::GPUBackendIfAvailable:
|
||||||
return Web::DisplayListPlayerType::SkiaGPUIfAvailable;
|
return Web::DisplayListPlayerType::SkiaGPUIfAvailable;
|
||||||
case UseSkiaPainter::CPUBackend:
|
case UseSkiaPainter::CPUBackend:
|
||||||
|
|
|
@ -28,7 +28,6 @@ public:
|
||||||
virtual ~PageClient() override;
|
virtual ~PageClient() override;
|
||||||
|
|
||||||
enum class UseSkiaPainter {
|
enum class UseSkiaPainter {
|
||||||
No,
|
|
||||||
CPUBackend,
|
CPUBackend,
|
||||||
GPUBackendIfAvailable,
|
GPUBackendIfAvailable,
|
||||||
};
|
};
|
||||||
|
|
|
@ -64,7 +64,7 @@ static StringView s_current_test_path;
|
||||||
|
|
||||||
class HeadlessWebContentView final : public WebView::ViewImplementation {
|
class HeadlessWebContentView final : public WebView::ViewImplementation {
|
||||||
public:
|
public:
|
||||||
static ErrorOr<NonnullOwnPtr<HeadlessWebContentView>> create(Core::AnonymousBuffer theme, Gfx::IntSize const& window_size, String const& command_line, StringView web_driver_ipc_path, Ladybird::IsLayoutTestMode is_layout_test_mode = Ladybird::IsLayoutTestMode::No, Vector<ByteString> const& certificates = {}, StringView resources_folder = {}, Ladybird::EnableSkiaPainting enable_skia_painting = Ladybird::EnableSkiaPainting::No)
|
static ErrorOr<NonnullOwnPtr<HeadlessWebContentView>> create(Core::AnonymousBuffer theme, Gfx::IntSize const& window_size, String const& command_line, StringView web_driver_ipc_path, Ladybird::IsLayoutTestMode is_layout_test_mode = Ladybird::IsLayoutTestMode::No, Vector<ByteString> const& certificates = {}, StringView resources_folder = {})
|
||||||
{
|
{
|
||||||
RefPtr<Protocol::RequestClient> request_client;
|
RefPtr<Protocol::RequestClient> request_client;
|
||||||
RefPtr<ImageDecoderClient::Client> image_decoder_client;
|
RefPtr<ImageDecoderClient::Client> image_decoder_client;
|
||||||
|
@ -83,7 +83,6 @@ public:
|
||||||
Ladybird::WebContentOptions web_content_options {
|
Ladybird::WebContentOptions web_content_options {
|
||||||
.command_line = command_line,
|
.command_line = command_line,
|
||||||
.executable_path = MUST(String::from_byte_string(MUST(Core::System::current_executable_path()))),
|
.executable_path = MUST(String::from_byte_string(MUST(Core::System::current_executable_path()))),
|
||||||
.enable_skia_painting = enable_skia_painting,
|
|
||||||
.is_layout_test_mode = is_layout_test_mode,
|
.is_layout_test_mode = is_layout_test_mode,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -647,7 +646,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
bool dump_text = false;
|
bool dump_text = false;
|
||||||
bool dump_gc_graph = false;
|
bool dump_gc_graph = false;
|
||||||
bool is_layout_test_mode = false;
|
bool is_layout_test_mode = false;
|
||||||
bool enable_skia_painting = false;
|
|
||||||
StringView test_root_path;
|
StringView test_root_path;
|
||||||
ByteString test_glob;
|
ByteString test_glob;
|
||||||
Vector<ByteString> certificates;
|
Vector<ByteString> certificates;
|
||||||
|
@ -668,7 +666,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
args_parser.add_option(web_driver_ipc_path, "Path to the WebDriver IPC socket", "webdriver-ipc-path", 0, "path");
|
args_parser.add_option(web_driver_ipc_path, "Path to the WebDriver IPC socket", "webdriver-ipc-path", 0, "path");
|
||||||
args_parser.add_option(is_layout_test_mode, "Enable layout test mode", "layout-test-mode");
|
args_parser.add_option(is_layout_test_mode, "Enable layout test mode", "layout-test-mode");
|
||||||
args_parser.add_option(certificates, "Path to a certificate file", "certificate", 'C', "certificate");
|
args_parser.add_option(certificates, "Path to a certificate file", "certificate", 'C', "certificate");
|
||||||
args_parser.add_option(enable_skia_painting, "Enable Skia painting", "enable-skia-painting");
|
|
||||||
args_parser.add_positional_argument(raw_url, "URL to open", "url", Core::ArgsParser::Required::No);
|
args_parser.add_positional_argument(raw_url, "URL to open", "url", Core::ArgsParser::Required::No);
|
||||||
args_parser.parse(arguments);
|
args_parser.parse(arguments);
|
||||||
|
|
||||||
|
@ -687,7 +684,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
|
|
||||||
StringBuilder command_line_builder;
|
StringBuilder command_line_builder;
|
||||||
command_line_builder.join(' ', arguments.strings);
|
command_line_builder.join(' ', arguments.strings);
|
||||||
auto view = TRY(HeadlessWebContentView::create(move(theme), window_size, MUST(command_line_builder.to_string()), web_driver_ipc_path, is_layout_test_mode ? Ladybird::IsLayoutTestMode::Yes : Ladybird::IsLayoutTestMode::No, certificates, resources_folder, enable_skia_painting ? Ladybird::EnableSkiaPainting::Yes : Ladybird::EnableSkiaPainting::No));
|
auto view = TRY(HeadlessWebContentView::create(move(theme), window_size, MUST(command_line_builder.to_string()), web_driver_ipc_path, is_layout_test_mode ? Ladybird::IsLayoutTestMode::Yes : Ladybird::IsLayoutTestMode::No, certificates, resources_folder));
|
||||||
|
|
||||||
if (!test_root_path.is_empty()) {
|
if (!test_root_path.is_empty()) {
|
||||||
test_glob = ByteString::formatted("*{}*", test_glob);
|
test_glob = ByteString::formatted("*{}*", test_glob);
|
||||||
|
|