Title: [286972] trunk
- Revision
- 286972
- Author
- an...@apple.com
- Date
- 2021-12-13 12:38:56 -0800 (Mon, 13 Dec 2021)
Log Message
[CSS Cascade Layers] Layers specified in import rules can not be reordered on media query evaluation
https://bugs.webkit.org/show_bug.cgi?id=234158
Reviewed by Simon Fraser.
LayoutTests/imported/w3c:
* web-platform-tests/css/css-cascade/layer-media-query-expected.txt:
Source/WebCore:
* style/RuleSetBuilder.cpp:
(WebCore::Style::RuleSetBuilder::addChildRules):
(WebCore::Style::RuleSetBuilder::addRulesFromSheetContents):
@import rules can introduce new layers so need to alse be considered for reordering by media queries
(which requires static evaluation).
(WebCore::Style::RuleSetBuilder::disallowDynamicMediaQueryEvaluationIfNeeded):
Factor into a function.
* style/RuleSetBuilder.h:
Modified Paths
Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (286971 => 286972)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-12-13 20:29:59 UTC (rev 286971)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-12-13 20:38:56 UTC (rev 286972)
@@ -1,3 +1,12 @@
+2021-12-13 Antti Koivisto <an...@apple.com>
+
+ [CSS Cascade Layers] Layers specified in import rules can not be reordered on media query evaluation
+ https://bugs.webkit.org/show_bug.cgi?id=234158
+
+ Reviewed by Simon Fraser.
+
+ * web-platform-tests/css/css-cascade/layer-media-query-expected.txt:
+
2021-12-13 Sergio Villar Senin <svil...@igalia.com>
[css-writing-modes] Use the correct margins in computeInlinePreferredLogicalWidths in orthogonal flows
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query-expected.txt (286971 => 286972)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query-expected.txt 2021-12-13 20:29:59 UTC (rev 286971)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query-expected.txt 2021-12-13 20:38:56 UTC (rev 286972)
@@ -7,5 +7,5 @@
PASS C1 Reordering
PASS C2 Reordering
PASS C3 Reordering
-FAIL C4 Reordering assert_equals: C4 Reordering expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
+PASS C4 Reordering
Modified: trunk/Source/WebCore/ChangeLog (286971 => 286972)
--- trunk/Source/WebCore/ChangeLog 2021-12-13 20:29:59 UTC (rev 286971)
+++ trunk/Source/WebCore/ChangeLog 2021-12-13 20:38:56 UTC (rev 286972)
@@ -1,3 +1,23 @@
+2021-12-13 Antti Koivisto <an...@apple.com>
+
+ [CSS Cascade Layers] Layers specified in import rules can not be reordered on media query evaluation
+ https://bugs.webkit.org/show_bug.cgi?id=234158
+
+ Reviewed by Simon Fraser.
+
+ * style/RuleSetBuilder.cpp:
+ (WebCore::Style::RuleSetBuilder::addChildRules):
+ (WebCore::Style::RuleSetBuilder::addRulesFromSheetContents):
+
+ @import rules can introduce new layers so need to alse be considered for reordering by media queries
+ (which requires static evaluation).
+
+ (WebCore::Style::RuleSetBuilder::disallowDynamicMediaQueryEvaluationIfNeeded):
+
+ Factor into a function.
+
+ * style/RuleSetBuilder.h:
+
2021-12-13 Chris Dumez <cdu...@apple.com>
Regression(r283565) Unable to report private messages as Spam in Twitter app
Modified: trunk/Source/WebCore/style/RuleSetBuilder.cpp (286971 => 286972)
--- trunk/Source/WebCore/style/RuleSetBuilder.cpp 2021-12-13 20:29:59 UTC (rev 286971)
+++ trunk/Source/WebCore/style/RuleSetBuilder.cpp 2021-12-13 20:38:56 UTC (rev 286972)
@@ -110,8 +110,7 @@
continue;
}
if (is<StyleRuleLayer>(*rule)) {
- if (!m_ruleSet && !m_mediaQueryCollector.dynamicContextStack.isEmpty())
- requiresStaticMediaQueryEvaluation = true;
+ disallowDynamicMediaQueryEvaluationIfNeeded();
auto& layerRule = downcast<StyleRuleLayer>(*rule);
if (layerRule.isStatement()) {
@@ -126,8 +125,7 @@
continue;
}
if (is<StyleRuleFontFace>(*rule) || is<StyleRuleFontPaletteValues>(*rule) || is<StyleRuleKeyframes>(*rule)) {
- if (!m_ruleSet && !m_mediaQueryCollector.dynamicContextStack.isEmpty())
- requiresStaticMediaQueryEvaluation = true;
+ disallowDynamicMediaQueryEvaluationIfNeeded();
if (m_resolver)
m_collectedResolverMutatingRules.append({ *rule, m_currentCascadeLayerIdentifier });
@@ -151,8 +149,10 @@
if (m_mediaQueryCollector.pushAndEvaluate(rule->mediaQueries())) {
auto& cascadeLayerName = rule->cascadeLayerName();
- if (cascadeLayerName)
+ if (cascadeLayerName) {
+ disallowDynamicMediaQueryEvaluationIfNeeded();
pushCascadeLayer(*cascadeLayerName);
+ }
addRulesFromSheetContents(*rule->styleSheet());
@@ -181,6 +181,13 @@
}
}
+void RuleSetBuilder::disallowDynamicMediaQueryEvaluationIfNeeded()
+{
+ bool isScanningForDynamicEvaluation = !m_ruleSet;
+ if (isScanningForDynamicEvaluation && !m_mediaQueryCollector.dynamicContextStack.isEmpty())
+ requiresStaticMediaQueryEvaluation = true;
+}
+
void RuleSetBuilder::registerLayers(const Vector<CascadeLayerName>& names)
{
for (auto& name : names) {
Modified: trunk/Source/WebCore/style/RuleSetBuilder.h (286971 => 286972)
--- trunk/Source/WebCore/style/RuleSetBuilder.h 2021-12-13 20:29:59 UTC (rev 286971)
+++ trunk/Source/WebCore/style/RuleSetBuilder.h 2021-12-13 20:38:56 UTC (rev 286972)
@@ -40,6 +40,7 @@
void addRulesFromSheetContents(const StyleSheetContents&);
void addChildRules(const Vector<RefPtr<StyleRuleBase>>&);
void addStyleRule(const StyleRule&);
+ void disallowDynamicMediaQueryEvaluationIfNeeded();
void registerLayers(const Vector<CascadeLayerName>&);
void pushCascadeLayer(const CascadeLayerName&);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes