From eca23183904851a7daedeab895448a8ba1590631 Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Sun, 20 Oct 2024 10:33:13 +0100 Subject: [PATCH] WebContent: Use window open steps to create a new window with WebDriver This matches the specification steps and fixes a WPT regression caused by us not loading `about:blank` when opening a new window. --- Userland/Services/WebContent/WebDriverConnection.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Userland/Services/WebContent/WebDriverConnection.cpp b/Userland/Services/WebContent/WebDriverConnection.cpp index d46f5efec5e..ec3deb79619 100644 --- a/Userland/Services/WebContent/WebDriverConnection.cpp +++ b/Userland/Services/WebContent/WebDriverConnection.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -484,10 +485,15 @@ Messages::WebDriverClient::NewWindowResponse WebDriverConnection::new_window(Jso // is "window", and the implementation supports multiple browsing contexts in separate OS windows, the // created browsing context should be in a new OS window. In all other cases the details of how the browsing // context is presented to the user are implementation defined. - auto [navigable, window_type] = current_browsing_context().top_level_traversable()->choose_a_navigable("_blank"sv, Web::HTML::TokenizedFeature::NoOpener::Yes, Web::HTML::ActivateTab::No); + auto* active_window = current_browsing_context().active_window(); + VERIFY(active_window); + { + Web::HTML::TemporaryExecutionContext execution_context { active_window->document()->relevant_settings_object() }; + MUST(active_window->window_open_steps("about:blank"sv, ""sv, "noopener"sv)); + } // 6. Let handle be the associated window handle of the newly created window. - auto handle = navigable->traversable_navigable()->window_handle(); + auto handle = current_browsing_context().top_level_traversable()->window_handle(); // 7. Let type be "tab" if the newly created window shares an OS-level window with the current browsing context, or "window" otherwise. auto type = "tab"sv;