[webkit-changes] [WebKit/WebKit] 7abec1: Support `input[type="range"]` in vertical writing ...

Tim Nguyen noreply at github.com
Thu Nov 24 09:57:56 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7abec143ddb94dfa96545e67979834d16b52a16b
      https://github.com/WebKit/WebKit/commit/7abec143ddb94dfa96545e67979834d16b52a16b
  Author: Tim Nguyen <ntim at apple.com>
  Date:   2022-11-24 (Thu, 24 Nov 2022)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/fast/multicol/client-rects-spanners-complex.html
    M LayoutTests/fast/multicol/client-rects-spanners.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/flex-item-compressible-002-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-horizontal-rtl.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-horizontal-rtl.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-horizontal.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-horizontal.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-vertical-rtl.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-vertical-rtl.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-vertical.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-vertical.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-horizontal-rtl.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-horizontal-rtl.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-horizontal.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-horizontal.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-vertical-rtl.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-vertical-rtl.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-vertical.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-vertical.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-horizontal.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-horizontal.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-vlr.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-vlr.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-vrl.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-vrl.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-horizontal.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-horizontal.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-vlr.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-vlr.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-vrl.optional-expected-mismatch.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-vrl.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-scrolling.optional-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-scrolling.optional.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-size-scrolling-and-sizing.optional-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-size-scrolling-and-sizing.optional.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/w3c-import.log
    M LayoutTests/platform/gtk/TestExpectations
    M LayoutTests/platform/ios/TestExpectations
    M Source/WebCore/css/horizontalFormControls.css
    M Source/WebCore/css/html.css
    M Source/WebCore/html/shadow/SliderThumbElement.cpp
    M Source/WebCore/rendering/RenderTheme.cpp
    M Source/WebCore/rendering/RenderTheme.h
    M Source/WebCore/rendering/RenderThemeIOS.mm

  Log Message:
  -----------
  Support `input[type="range"]` in vertical writing mode
https://bugs.webkit.org/show_bug.cgi?id=248208
rdar://102598641

Reviewed by Darin Adler.

Re-use `appearance: slider-vertical` for painting natively and adjust the thumb positioning code to take in account various inline direction configurations.

- horizontal writing mode + any appearance that is not slider-vertical: follows inline direction (left to right or right to left)
- horizontal writing mode + `appearance: slider-vertical`: always bottom to top regardless of direction (preserves old behavior)
- vertical writing mode + any appearance: follows inline direction (top to bottom in LTR, bottom to top in RTL)

WPT imported from https://github.com/web-platform-tests/wpt/commit/3f94991edbdf818c74d93c354117e82a3b2a2758

* LayoutTests/TestExpectations:
* LayoutTests/fast/multicol/client-rects-spanners-complex.html:
* LayoutTests/fast/multicol/client-rects-spanners.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/flex-item-compressible-002-expected.txt:
* LayoutTests/platform/gtk/TestExpectations:
* LayoutTests/platform/ios/TestExpectations:
* Source/WebCore/css/horizontalFormControls.css:
(@namespace "http://www.w3.org/1999/xhtml";):
* Source/WebCore/css/html.css:
(input:not([type="color"],[type="range"]), select, button, meter, progress):
(input:not([type="color"]), select, button, meter, progress): Deleted.
Enable input[type=range] when VerticalFormControlsEnabled setting is enabled.

* Source/WebCore/html/shadow/SliderThumbElement.cpp:
(WebCore::hasVerticalAppearance): Now also returns true for vertical writing modes regardless of the appearance value
(WebCore::RenderSliderContainer::computeLogicalHeight const): Logical height is writing-mode aware, adjust check to reflect this is specifically for appearance: slider-vertical in horizontal mode.
(WebCore::RenderSliderContainer::layout): Adjust initial positioning code for vertical writing mode support
(WebCore::SliderThumbElement::setPositionFromPoint): Adjust dragging code for vertical writing mode support
* Source/WebCore/rendering/RenderTheme.cpp:
(WebCore::RenderTheme::adjustStyle): we now pass in the style in autoAppearanceForElement so we can query the writing mode reliably
(WebCore::RenderTheme::autoAppearanceForElement const): paint slider using slider-vertical appearance in vertical writing mode
(WebCore::RenderTheme::paintSliderTicks): Adjust tick positioning code to correctly query reversed inline direction
* Source/WebCore/rendering/RenderTheme.h:
* Source/WebCore/rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::paintSliderTicks): ditto.

* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/w3c-import.log:
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-horizontal-rtl.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-horizontal-rtl.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-horizontal.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-horizontal.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-vertical-rtl.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-vertical-rtl.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-vertical.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-native-vertical.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-horizontal-rtl.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-horizontal-rtl.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-horizontal.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-horizontal.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-vertical-rtl.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-vertical-rtl.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-vertical.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/range-input-appearance-none-vertical.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-horizontal.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-horizontal.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-vlr.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-vlr.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-vrl.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-native-vrl.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-horizontal.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-horizontal.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-vlr.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-vlr.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-vrl.optional-expected-mismatch.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-appearance-none-vrl.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-scrolling.optional-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-multiple-scrolling.optional.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-size-scrolling-and-sizing.optional-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-writing-modes/forms/select-size-scrolling-and-sizing.optional.html: Added.

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




More information about the webkit-changes mailing list