From 905e7495752b3ec41405f8a8761621b64ece7cf0 Mon Sep 17 00:00:00 2001 From: Psychpsyo Date: Tue, 9 Sep 2025 13:33:07 +0200 Subject: [PATCH] LibWeb: Use correct style rule index in view transitions This used to crash a lot of attempted view transitions, now it doesn't anymore. --- .../LibWeb/ViewTransition/ViewTransition.cpp | 2 +- .../first-line-reparent-crash.html | 13 +++++++++ ...ist-style-position-style-change-crash.html | 20 +++++++++++++ .../root-element-cv-hidden-crash.html | 11 +++++++ .../root-element-display-none-crash.html | 29 +++++++++++++++++++ ...-display-none-during-transition-crash.html | 27 +++++++++++++++++ 6 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/first-line-reparent-crash.html create mode 100644 Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/list-style-position-style-change-crash.html create mode 100644 Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-cv-hidden-crash.html create mode 100644 Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-display-none-crash.html create mode 100644 Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-display-none-during-transition-crash.html diff --git a/Libraries/LibWeb/ViewTransition/ViewTransition.cpp b/Libraries/LibWeb/ViewTransition/ViewTransition.cpp index 50823fc0b75..75cd3443c6a 100644 --- a/Libraries/LibWeb/ViewTransition/ViewTransition.cpp +++ b/Libraries/LibWeb/ViewTransition/ViewTransition.cpp @@ -526,7 +526,7 @@ void ViewTransition::setup_transition_pseudo_elements() transition_name, "transform", width, height, "backdrop_filter")), stylesheet->rules().length())); // FIXME: all the strings above should be the identically named variables, serialized somehow. - captured_element->group_keyframes = as(stylesheet->css_rules()->item(0)); + captured_element->group_keyframes = as(stylesheet->css_rules()->item(index)); // 6. Set capturedElement’s group animation name rule to a new CSSStyleRule representing the // following CSS, and append it to document’s dynamic view transition style sheet: diff --git a/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/first-line-reparent-crash.html b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/first-line-reparent-crash.html new file mode 100644 index 00000000000..7149d770f07 --- /dev/null +++ b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/first-line-reparent-crash.html @@ -0,0 +1,13 @@ + + + diff --git a/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/list-style-position-style-change-crash.html b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/list-style-position-style-change-crash.html new file mode 100644 index 00000000000..2a033ddc7ef --- /dev/null +++ b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/list-style-position-style-change-crash.html @@ -0,0 +1,20 @@ + + +View transitions: list-style-position crash + + + + + diff --git a/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-cv-hidden-crash.html b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-cv-hidden-crash.html new file mode 100644 index 00000000000..890194b7c17 --- /dev/null +++ b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-cv-hidden-crash.html @@ -0,0 +1,11 @@ + +View transitions: content-visibility:hidden on root element crash + + + diff --git a/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-display-none-crash.html b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-display-none-crash.html new file mode 100644 index 00000000000..dfcac9eb7ba --- /dev/null +++ b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-display-none-crash.html @@ -0,0 +1,29 @@ + + +View transitions: html display none + + + + + + + diff --git a/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-display-none-during-transition-crash.html b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-display-none-during-transition-crash.html new file mode 100644 index 00000000000..d67bb256fdb --- /dev/null +++ b/Tests/LibWeb/Crash/wpt-import/css/css-view-transitions/root-element-display-none-during-transition-crash.html @@ -0,0 +1,27 @@ + + +View transitions: entry animation from root display none + + + + + +