LibWeb: Add debug logging of reasons for layout tree update
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run

This commit is contained in:
Andreas Kling 2025-04-19 10:49:33 +02:00 committed by Andreas Kling
commit 545ed08519
Notes: github-actions[bot] 2025-04-20 22:32:03 +00:00
9 changed files with 68 additions and 19 deletions

View file

@ -1446,12 +1446,11 @@ void Document::update_layout(UpdateLayoutReason reason)
// We mark layout tree for rebuild starting from parent element to correctly invalidate
// "display" property change to/from "contents" value.
if (auto parent_element = node.parent_element()) {
parent_element->set_needs_layout_tree_update(true);
parent_element->set_needs_layout_tree_update(true, SetNeedsLayoutTreeUpdateReason::StyleChange);
} else {
node.set_needs_layout_tree_update(true);
node.set_needs_layout_tree_update(true, SetNeedsLayoutTreeUpdateReason::StyleChange);
}
}
invalidation |= node_invalidation;
node.set_needs_style_update(false);
invalidation |= node_invalidation;
@ -6562,6 +6561,18 @@ StringView to_string(SetNeedsLayoutReason reason)
VERIFY_NOT_REACHED();
}
StringView to_string(SetNeedsLayoutTreeUpdateReason reason)
{
switch (reason) {
#define ENUMERATE_SET_NEEDS_LAYOUT_TREE_UPDATE_REASON(e) \
case SetNeedsLayoutTreeUpdateReason::e: \
return #e##sv;
ENUMERATE_SET_NEEDS_LAYOUT_TREE_UPDATE_REASONS(ENUMERATE_SET_NEEDS_LAYOUT_TREE_UPDATE_REASON)
#undef ENUMERATE_SET_NEEDS_LAYOUT_TREE_UPDATE_REASON
}
VERIFY_NOT_REACHED();
}
StringView to_string(InvalidateLayoutTreeReason reason)
{
switch (reason) {