Просмотр исходного кода

LibWeb: Call the_end() on Documents from window.open("about:blank")

Andrew Kaster 1 год назад
Родитель
Сommit
889b903e40
1 измененных файлов с 6 добавлено и 3 удалено
  1. 6 3
      Userland/Libraries/LibWeb/HTML/Window.cpp

+ 6 - 3
Userland/Libraries/LibWeb/HTML/Window.cpp

@@ -48,6 +48,7 @@
 #include <LibWeb/HTML/Navigator.h>
 #include <LibWeb/HTML/Origin.h>
 #include <LibWeb/HTML/PageTransitionEvent.h>
+#include <LibWeb/HTML/Parser/HTMLParser.h>
 #include <LibWeb/HTML/Scripting/Environments.h>
 #include <LibWeb/HTML/Scripting/ExceptionReporter.h>
 #include <LibWeb/HTML/Scripting/TemporaryExecutionContext.h>
@@ -395,9 +396,11 @@ WebIDL::ExceptionOr<JS::GCPtr<WindowProxy>> Window::open_impl(StringView url, St
         }
 
         // 6. If urlRecord matches about:blank, then perform the URL and history update steps given targetNavigable's active document and urlRecord.
-        // FIXME: If we only perform the URL and history update steps here, we never fire the load event for the new window/tab.
-        //        This breaks WPT. See #23067
-        if (false && url_matches_about_blank(url_record)) {
+        if (url_matches_about_blank(url_record)) {
+            // AD-HOC: Mark the initial about:blank for the new window as load complete
+            // FIXME: We do this other places too when creating a new about:blank document. Perhaps it's worth a spec issue?
+            HTML::HTMLParser::the_end(*target_navigable->active_document());
+
             perform_url_and_history_update_steps(*target_navigable->active_document(), url_record);
         }