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);