From 08c02ad888cc27c369b3ab210b25b7ebcdd569dd Mon Sep 17 00:00:00 2001 From: Tommy van der Vorst Date: Sun, 11 Feb 2024 16:33:41 +0100 Subject: [PATCH] LibWeb: Only dump layout and text tree for the desired URL Before this change, the rebaseline script would generate reference based on 'about:blank' (at least running it on my macOS system). This commit allows 'about:blank' through the assertion and only dumps the layout tree when theloaded URL matches the one we are interested in. --- Userland/Utilities/headless-browser.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/Userland/Utilities/headless-browser.cpp b/Userland/Utilities/headless-browser.cpp index 9a2a449f32..512ad59439 100644 --- a/Userland/Utilities/headless-browser.cpp +++ b/Userland/Utilities/headless-browser.cpp @@ -282,18 +282,22 @@ static ErrorOr run_dump_test(HeadlessWebContentView& view, StringVie if (mode == TestMode::Layout) { view.on_load_finish = [&](auto const& loaded_url) { - VERIFY(url.equals(loaded_url, URL::ExcludeFragment::Yes)); + // This callback will be called for 'about:blank' first, then for the URL we actually want to dump + VERIFY(url.equals(loaded_url, URL::ExcludeFragment::Yes) || url.equals(URL("about:blank"))); - // NOTE: We take a screenshot here to force the lazy layout of SVG-as-image documents to happen. - // It also causes a lot more code to run, which is good for finding bugs. :^) - (void)view.take_screenshot(); + if (url.equals(loaded_url, URL::ExcludeFragment::Yes)) { + // NOTE: We take a screenshot here to force the lazy layout of SVG-as-image documents to happen. + // It also causes a lot more code to run, which is good for finding bugs. :^) + (void)view.take_screenshot(); - StringBuilder builder; - builder.append(view.dump_layout_tree().release_value_but_fixme_should_propagate_errors()); - builder.append("\n"sv); - builder.append(view.dump_paint_tree().release_value_but_fixme_should_propagate_errors()); - result = builder.to_string().release_value_but_fixme_should_propagate_errors(); - loop.quit(0); + StringBuilder builder; + builder.append(view.dump_layout_tree().release_value_but_fixme_should_propagate_errors()); + builder.append("\n"sv); + builder.append(view.dump_paint_tree().release_value_but_fixme_should_propagate_errors()); + result = builder.to_string().release_value_but_fixme_should_propagate_errors(); + + loop.quit(0); + } }; view.on_text_test_finish = {}; } else if (mode == TestMode::Text) {