[webkit-changes] [WebKit/WebKit] b06dd1: [MQ4] Use the new parser and evaluator for stylesh...

Antti Koivisto noreply at github.com
Tue Nov 29 23:34:28 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b06dd10a198e651aac7c9f0256f612a31d4101f0
      https://github.com/WebKit/WebKit/commit/b06dd10a198e651aac7c9f0256f612a31d4101f0
  Author: Antti Koivisto <antti at apple.com>
  Date:   2022-11-29 (Tue, 29 Nov 2022)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/fast/media/mq-any-hover-cssom-expected.txt
    M LayoutTests/fast/media/mq-any-hover-cssom.html
    M LayoutTests/fast/media/mq-color-index-02.html
    M LayoutTests/fast/media/mq-hover-cssom-expected.txt
    M LayoutTests/fast/media/mq-hover-cssom.html
    M LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-invalid-media-type-005-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-unknown-feature-custom-property-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt
    M Source/WebCore/css/CSSGroupingRule.h
    M Source/WebCore/css/CSSImportRule.cpp
    M Source/WebCore/css/CSSImportRule.h
    M Source/WebCore/css/CSSMediaRule.cpp
    M Source/WebCore/css/CSSMediaRule.h
    M Source/WebCore/css/CSSStyleSheet.cpp
    M Source/WebCore/css/CSSStyleSheet.h
    M Source/WebCore/css/MediaList.cpp
    M Source/WebCore/css/MediaList.h
    M Source/WebCore/css/StyleRule.cpp
    M Source/WebCore/css/StyleRule.h
    M Source/WebCore/css/StyleRuleImport.cpp
    M Source/WebCore/css/StyleRuleImport.h
    M Source/WebCore/css/parser/CSSParserImpl.cpp
    M Source/WebCore/dom/DOMImplementation.cpp
    M Source/WebCore/dom/InlineStyleSheetOwner.cpp
    M Source/WebCore/dom/ProcessingInstruction.cpp
    M Source/WebCore/html/HTMLLinkElement.cpp
    M Source/WebCore/html/HTMLStyleElement.cpp
    M Source/WebCore/style/ElementRuleCollector.h
    M Source/WebCore/style/RuleSet.cpp
    M Source/WebCore/style/RuleSet.h
    M Source/WebCore/style/RuleSetBuilder.cpp
    M Source/WebCore/style/RuleSetBuilder.h
    M Source/WebCore/style/StyleInvalidator.cpp
    M Source/WebCore/style/StyleInvalidator.h
    M Source/WebCore/style/StyleResolver.cpp
    M Source/WebCore/style/StyleResolver.h
    M Source/WebCore/style/StyleScopeRuleSets.cpp
    M Source/WebCore/style/StyleScopeRuleSets.h
    M Source/WebCore/style/UserAgentStyle.cpp

  Log Message:
  -----------
  [MQ4] Use the new parser and evaluator for stylesheets and media rules
https://bugs.webkit.org/show_bug.cgi?id=248391
<rdar://problem/102713933>

Reviewed by Alan Baradlay.

This enabled Media Queries 4 syntax (ranges and nesting) for regular stylesheets.
https://www.w3.org/TR/mediaqueries-4/#mq-syntax

* LayoutTests/TestExpectations:

A bunch of reftests now pass.

* LayoutTests/fast/media/mq-any-hover-cssom-expected.txt:
* LayoutTests/fast/media/mq-any-hover-cssom.html:
* LayoutTests/fast/media/mq-color-index-02.html:
* LayoutTests/fast/media/mq-hover-cssom-expected.txt:
* LayoutTests/fast/media/mq-hover-cssom.html:

General Enclosed support changes the results here. This matches Chrome.

* LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-invalid-media-type-005-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-unknown-feature-custom-property-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt:

669 new WPT PASS results.

* Source/WebCore/css/CSSGroupingRule.h:
(WebCore::CSSGroupingRule::groupRule):
* Source/WebCore/css/CSSImportRule.cpp:
(WebCore::CSSImportRule::~CSSImportRule):
(WebCore::CSSImportRule::media const):
(WebCore::CSSImportRule::cssText const):
(WebCore::CSSImportRule::mediaQueries const):
(WebCore::CSSImportRule::setMediaQueries):
* Source/WebCore/css/CSSImportRule.h:
* Source/WebCore/css/CSSMediaRule.cpp:
(WebCore::CSSMediaRule::~CSSMediaRule):
(WebCore::CSSMediaRule::mediaQueries const):
(WebCore::CSSMediaRule::setMediaQueries):
(WebCore::CSSMediaRule::conditionText const):
(WebCore::CSSMediaRule::media const):
(WebCore::CSSMediaRule::reattach): Deleted.
* Source/WebCore/css/CSSMediaRule.h:
* Source/WebCore/css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::CSSStyleSheet):
(WebCore::CSSStyleSheet::~CSSStyleSheet):
(WebCore::CSSStyleSheet::setMediaQueries):
(WebCore::CSSStyleSheet::media const):
* Source/WebCore/css/CSSStyleSheet.h:
* Source/WebCore/css/MediaList.cpp:
(WebCore::MediaQuerySet::MediaQuerySet):
(WebCore::MediaList::MediaList):
(WebCore::MediaList::detachFromParent):
(WebCore::MediaList::length const):
(WebCore::MediaList::mediaQueries const):

MediaList now pulls the queries from the underlying CSSOM object.
On detach the queries are copied.

(WebCore::MediaList::setMediaQueries):

Update via a setter.

(WebCore::MediaList::mediaText const):
(WebCore::MediaList::setMediaText):
(WebCore::MediaList::item const):
(WebCore::MediaList::deleteMedium):
(WebCore::MediaList::appendMedium):
(WebCore::MediaList::reattach): Deleted.

No need to reattach, the list is live.

* Source/WebCore/css/MediaList.h:
* Source/WebCore/css/StyleRule.cpp:
(WebCore::StyleRuleMedia::StyleRuleMedia):
(WebCore::StyleRuleMedia::create):
* Source/WebCore/css/StyleRule.h:
* Source/WebCore/css/StyleRuleImport.cpp:
(WebCore::StyleRuleImport::create):
(WebCore::StyleRuleImport::StyleRuleImport):
* Source/WebCore/css/StyleRuleImport.h:
* Source/WebCore/css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::consumeImportRule):
(WebCore::CSSParserImpl::consumeMediaRule):

Use the new parser.

* Source/WebCore/dom/DOMImplementation.cpp:
(WebCore::DOMImplementation::createCSSStyleSheet):
* Source/WebCore/dom/InlineStyleSheetOwner.cpp:
(WebCore::InlineStyleSheetOwner::createSheet):
* Source/WebCore/dom/ProcessingInstruction.cpp:
(WebCore::ProcessingInstruction::setCSSStyleSheet):
* Source/WebCore/html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::initializeStyleSheet):
* Source/WebCore/html/HTMLStyleElement.cpp:
(WebCore::HTMLStyleElement::parseAttribute):
* Source/WebCore/style/ElementRuleCollector.h:
(WebCore::Style::ElementRuleCollector::setMedium):
* Source/WebCore/style/RuleSet.cpp:
(WebCore::Style::RuleSet::evaluateDynamicMediaQueryRules):

Switch to the new evaluator.

* Source/WebCore/style/RuleSet.h:
(WebCore::Style::RuleSet::DynamicMediaQueryRules::shrinkToFit):
* Source/WebCore/style/RuleSetBuilder.cpp:
(WebCore::Style::RuleSetBuilder::RuleSetBuilder):
(WebCore::Style::RuleSetBuilder::addRulesFromSheet):
(WebCore::Style::RuleSetBuilder::addChildRules):
(WebCore::Style::RuleSetBuilder::MediaQueryCollector::pushAndEvaluate):
(WebCore::Style::RuleSetBuilder::MediaQueryCollector::pop):
* Source/WebCore/style/RuleSetBuilder.h:
(WebCore::Style::RuleSetBuilder::addRulesFromSheet):
* Source/WebCore/style/StyleInvalidator.cpp:
(WebCore::Style::Invalidator::Invalidator):
* Source/WebCore/style/StyleInvalidator.h:
* Source/WebCore/style/StyleResolver.cpp:
(WebCore::Style::Resolver::Resolver):
(WebCore::Style::Resolver::styleForElement):
(WebCore::Style::Resolver::styleForKeyframe):
(WebCore::Style::Resolver::pseudoStyleForElement):
(WebCore::Style::Resolver::pseudoStyleRulesForElement):
* Source/WebCore/style/StyleResolver.h:
(WebCore::Style::Resolver::mediaQueryEvaluator const):
* Source/WebCore/style/StyleScopeRuleSets.cpp:
(WebCore::Style::ScopeRuleSets::collectRulesFromUserStyleSheets):
(WebCore::Style::ScopeRuleSets::evaluateDynamicMediaQueryRules):
(WebCore::Style::ScopeRuleSets::appendAuthorStyleSheets):
* Source/WebCore/style/StyleScopeRuleSets.h:
* Source/WebCore/style/UserAgentStyle.cpp:
(WebCore::Style::screenEval):
(WebCore::Style::printEval):

Canonical link: https://commits.webkit.org/257171@main




More information about the webkit-changes mailing list