@media rules ignored in user agent style sheet html.css
[WebKit-https.git] / Source / WebCore / ChangeLog
index c8f5f23..cb53c1c 100644 (file)
@@ -1,3 +1,60 @@
+2017-11-06  Antti Koivisto  <antti@apple.com>
+
+        @media rules ignored in user agent style sheet html.css
+        https://bugs.webkit.org/show_bug.cgi?id=169245
+        <rdar://problem/30885951>
+
+        Reviewed by Darin Adler.
+
+        To support accessibility features, allow non-trivial @media rules in user agent stylesheet.
+
+        This patch creates a special stylesheet consisting of rules with media queries seen on user agent stylesheets.
+        The queries on this sheet are evaluated with the document's media query evaluator.
+
+        No tests as I don't want to add things to UA style just for testing purposes. This will
+        gain coverage when the feature is used.
+
+         * css/CSSDefaultStyleSheets.cpp:
+        (WebCore::CSSDefaultStyleSheets::addToDefaultStyle):
+
+            Add a helper.
+            Build a new stylesheet that consists of complex media rules seen in user agent sheets.
+
+        (WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
+        (WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):
+        * css/CSSDefaultStyleSheets.h:
+        * css/DocumentRuleSets.cpp:
+        (WebCore::DocumentRuleSets::userAgentMediaQueryStyle const):
+
+            Rule set constructed from media queries seen on UA sheet.
+
+        (WebCore::DocumentRuleSets::updateUserAgentMediaQueryStyleIfNeeded const):
+
+            Evalute the media queries if needed.
+            Re-evaluate if the rule count of the media query stylesheet increases
+            (this could happen when additional UA style is added).
+
+        (WebCore::DocumentRuleSets::resetUserAgentMediaQueryStyle):
+        (WebCore::DocumentRuleSets::collectFeatures const):
+
+            Collect the features from userAgentMediaQueryStyle.
+
+        * css/DocumentRuleSets.h:
+        (WebCore::DocumentRuleSets::setIsForShadowScope):
+        * css/ElementRuleCollector.cpp:
+        (WebCore::ElementRuleCollector::ElementRuleCollector):
+        (WebCore::ElementRuleCollector::matchUARules):
+
+            Also match rules in userAgentMediaQueryStyle.
+
+        * css/ElementRuleCollector.h:
+        * css/InspectorCSSOMWrappers.cpp:
+        (WebCore::InspectorCSSOMWrappers::collectDocumentWrappers):
+        * css/StyleResolver.cpp:
+        (WebCore::StyleResolver::StyleResolver):
+        * style/StyleScope.cpp:
+        (WebCore::Style::Scope::resolver):
+
 2017-11-06  Zalan Bujtas  <zalan@apple.com>
 
         [LayoutState cleanup] Move m_layoutState from RenderView to LayoutContext