MediaQueryEvaluator shouldn't know about style resolver
https://bugs.webkit.org/show_bug.cgi?id=204449

Reviewed by Zalan Bujtas.

Gather dynamic dependencies from MediaQueryEvaluator into a struct rather than writing them directly to a resolver.

* css/MediaQueryEvaluator.cpp:
(WebCore::MediaQueryEvaluator::evaluate const):

Delete a duplicate version of evaluate() that returned partial dependencies.

* css/MediaQueryEvaluator.h:
(WebCore::MediaQueryDynamicResults::append):
* css/parser/SizesAttributeParser.cpp:
(WebCore::SizesAttributeParser::mediaConditionMatches):

This doesn't need resolver, the picture element implementation takes care of the media query dependencies.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::viewportChangeAffectedPicture const):
(WebCore::HTMLPictureElement::appearanceChangeAffectedPicture const):

Store MediaQueryDynamicResults struct instead of individual vectors.

* style/RuleSet.cpp:
(WebCore::Style::RuleSet::addChildRules):
(WebCore::Style::RuleSet::addRulesFromSheet):
* style/RuleSet.h:
* style/StyleResolver.cpp:
(WebCore::Style::Resolver::appendAuthorStyleSheets):
(WebCore::Style::Resolver::addMediaQueryDynamicResults):
(WebCore::Style::Resolver::hasMediaQueriesAffectedByViewportChange const):
(WebCore::Style::Resolver::hasMediaQueriesAffectedByAccessibilitySettingsChange const):
(WebCore::Style::Resolver::hasMediaQueriesAffectedByAppearanceChange const):
(WebCore::Style::Resolver::addViewportDependentMediaQueryResult): Deleted.
(WebCore::Style::Resolver::addAccessibilitySettingsDependentMediaQueryResult): Deleted.
(WebCore::Style::Resolver::addAppearanceDependentMediaQueryResult): Deleted.

Store MediaQueryDynamicResults struct instead of individual vectors.

* style/StyleResolver.h:
(WebCore::Style::Resolver::hasViewportDependentMediaQueries const):
(WebCore::Style::Resolver::hasAccessibilitySettingsDependentMediaQueries const):
(WebCore::Style::Resolver::hasAppearanceDependentMediaQueries const):
* style/StyleScopeRuleSets.cpp:
(WebCore::Style::ScopeRuleSets::updateUserAgentMediaQueryStyleIfNeeded const):
(WebCore::Style::ScopeRuleSets::initializeUserStyle):
(WebCore::Style::ScopeRuleSets::collectRulesFromUserStyleSheets):
(WebCore::Style::ScopeRuleSets::appendAuthorStyleSheets):
* style/StyleScopeRuleSets.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@252736 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/css/MediaQueryEvaluator.h b/Source/WebCore/css/MediaQueryEvaluator.h
index 5a2ecdb..b9084c6 100644
--- a/Source/WebCore/css/MediaQueryEvaluator.h
+++ b/Source/WebCore/css/MediaQueryEvaluator.h
@@ -46,6 +46,19 @@
     bool result;
 };
 
+struct MediaQueryDynamicResults {
+    Vector<MediaQueryResult> viewport;
+    Vector<MediaQueryResult> appearance;
+    Vector<MediaQueryResult> accessibilitySettings;
+
+    void append(const MediaQueryDynamicResults& other)
+    {
+        viewport.appendVector(other.viewport);
+        appearance.appendVector(other.appearance);
+        accessibilitySettings.appendVector(other.accessibilitySettings);
+    }
+};
+
 // Some of the constructors are used for cases where the device characteristics are not known.
 // These  can be used to prune the loading of stylesheets to only those which are not already known to not match.
 
@@ -65,14 +78,10 @@
     bool mediaTypeMatch(const String& mediaTypeToMatch) const;
     bool mediaTypeMatchSpecific(const char* mediaTypeToMatch) const;
 
-    // Evaluates a list of media queries.
-    WEBCORE_EXPORT bool evaluate(const MediaQuerySet&, Style::Resolver* = nullptr) const;
-
     // Evaluates media query subexpression, ie "and (media-feature: value)" part.
     bool evaluate(const MediaQueryExpression&) const;
 
-    // Evaluates a list of media queries and fills in vectors with any viewport or dark mode dependent results found.
-    bool evaluate(const MediaQuerySet&, Vector<MediaQueryResult>& viewportDependentResults, Vector<MediaQueryResult>& appearanceDependentResults) const;
+    WEBCORE_EXPORT bool evaluate(const MediaQuerySet&, MediaQueryDynamicResults* = nullptr) const;
 
     static bool mediaAttributeMatches(Document&, const String& attributeValue);