[webkit-changes] [WebKit/WebKit] ba11d6: [MQ4] Use new parser and evaluator for responsive ...

Antti Koivisto noreply at github.com
Thu Nov 24 09:08:11 PST 2022


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

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-1-expected.txt
    M LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-2-expected.txt
    M LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-3-expected.txt
    M LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-4-expected.txt
    M LayoutTests/platform/ios/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-1-expected.txt
    M LayoutTests/platform/ios/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-2-expected.txt
    M LayoutTests/platform/ios/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-3-expected.txt
    M LayoutTests/platform/ios/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-4-expected.txt
    M Source/WebCore/css/parser/SizesAttributeParser.cpp
    M Source/WebCore/css/parser/SizesAttributeParser.h
    M Source/WebCore/css/query/GenericMediaQueryEvaluator.h
    M Source/WebCore/css/query/GenericMediaQueryParser.cpp
    M Source/WebCore/css/query/GenericMediaQueryTypes.h
    M Source/WebCore/css/query/MediaQuery.h
    M Source/WebCore/css/query/MediaQueryEvaluator.cpp
    M Source/WebCore/css/query/MediaQueryEvaluator.h
    M Source/WebCore/css/query/MediaQueryFeatures.cpp
    M Source/WebCore/css/query/MediaQueryFeatures.h
    M Source/WebCore/css/query/MediaQueryParser.cpp
    M Source/WebCore/css/query/MediaQueryParser.h
    M Source/WebCore/html/HTMLImageElement.cpp
    M Source/WebCore/html/HTMLImageElement.h
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/html/HTMLSourceElement.cpp
    M Source/WebCore/html/HTMLSourceElement.h

  Log Message:
  -----------
  [MQ4] Use new parser and evaluator for responsive images
https://bugs.webkit.org/show_bug.cgi?id=248236
<rdar://problem/102647341>

Reviewed by Alan Baradlay.

Handle <source media> and <img sizes> with the new code.

* LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-1-expected.txt:
* LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-2-expected.txt:
* LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-3-expected.txt:
* LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-w3c-4-expected.txt:

Some progressions in these tests.
The new FAILs match the current spec text and the behavior of either Chrome or Firefox (general enclosed handling).

* Source/WebCore/css/parser/SizesAttributeParser.cpp:
(WebCore::SizesAttributeParser::mediaConditionMatches):
(WebCore::SizesAttributeParser::parse):
* Source/WebCore/css/parser/SizesAttributeParser.h:
(WebCore::SizesAttributeParser::dynamicMediaQueryResults const):
(WebCore::SizesAttributeParser::dynamicMediaConditionResults const): Deleted.
* Source/WebCore/css/query/GenericMediaQueryEvaluator.h:
(WebCore::MQ::GenericMediaQueryEvaluator<ConcreteEvaluator>::evaluateCondition const):
* Source/WebCore/css/query/GenericMediaQueryTypes.h:
(WebCore::MQ::traverseFeatures):
* Source/WebCore/css/query/MediaQuery.h:
(WebCore::MQ::traverseFeatures):

Add helper for traversing features.

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

Fix Unknown logic.

(WebCore::MQ::MediaQueryEvaluator::evaluateMediaType const):

Factor into a function.

(WebCore::MQ::MediaQueryEvaluator::collectDynamicDependencies const):

Find out the dynamic dependencies.

* Source/WebCore/css/query/MediaQueryEvaluator.h:
* Source/WebCore/css/query/MediaQueryFeatures.cpp:
(WebCore::MQ::Features::prefersReducedMotion):

Fix a copy-pasta error.

(WebCore::MQ::Features::dynamicDependency):

Get dynamic dependencies of a feature schema.

* Source/WebCore/css/query/MediaQueryFeatures.h:
* Source/WebCore/css/query/MediaQueryParser.cpp:
(WebCore::MQ::MediaQueryParser::parseCondition):

Add a helper for parsing a single condition (as used in the 'sizes' attribute).

* Source/WebCore/css/query/MediaQueryParser.h:
* Source/WebCore/html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::bestFitSourceFromPictureElement):
(WebCore::HTMLImageElement::evaluateDynamicMediaQueryDependencies):
(WebCore::HTMLImageElement::selectImageSource):
* Source/WebCore/html/HTMLImageElement.h:
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::selectNextSourceChild):
* Source/WebCore/html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::parsedMediaAttribute const):
* Source/WebCore/html/HTMLSourceElement.h:

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




More information about the webkit-changes mailing list