Changeset 202159 in webkit


Ignore:
Timestamp:
Jun 16, 2016 10:19:29 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

:in-range & :out-of-range CSS pseudo-classes shouldn't match disabled or readonly inputs
https://bugs.webkit.org/show_bug.cgi?id=156530

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-06-16
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-expected.txt:

Source/WebCore:

Elements should only match :in-range and :out-of-range
when they are candidate for constraint validation.

Tests: fast/css/pseudo-in-range-on-disabled-input-basics.html

fast/css/pseudo-in-range-on-readonly-input-basics.html
fast/css/pseudo-in-range-out-of-range-on-disabled-input-trivial.html
fast/css/pseudo-out-of-range-on-disabled-input-basics.html
fast/css/pseudo-out-of-range-on-readonly-input-basics.html
fast/selectors/in-range-out-of-range-style-update.html

  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::minOrMaxAttributeChanged):

  • html/NumberInputType.cpp:

(WebCore::NumberInputType::minOrMaxAttributeChanged):
I forgot to handle style update in r202143.
This is covered by the new style invalidation test.

  • html/BaseDateAndTimeInputType.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::isInRange):
(WebCore::HTMLInputElement::isOutOfRange):

LayoutTests:

  • fast/css/pseudo-in-range-on-disabled-input-basics-expected.html: Added.
  • fast/css/pseudo-in-range-on-disabled-input-basics.html: Added.
  • fast/css/pseudo-in-range-on-readonly-input-basics-expected.html: Added.
  • fast/css/pseudo-in-range-on-readonly-input-basics.html: Added.
  • fast/css/pseudo-in-range-out-of-range-on-disabled-input-trivial-expected.html: Added.
  • fast/css/pseudo-in-range-out-of-range-on-disabled-input-trivial.html: Added.
  • fast/css/pseudo-out-of-range-on-disabled-input-basics-expected.html: Added.
  • fast/css/pseudo-out-of-range-on-disabled-input-basics.html: Added.
  • fast/css/pseudo-out-of-range-on-readonly-input-basics-expected.html: Added.
  • fast/css/pseudo-out-of-range-on-readonly-input-basics.html: Added.
  • fast/selectors/in-range-out-of-range-style-update-expected.txt: Added.
  • fast/selectors/in-range-out-of-range-style-update.html: Added.
Location:
trunk
Files:
12 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r202158 r202159  
     12016-06-16  Benjamin Poulain  <bpoulain@apple.com>
     2
     3        :in-range & :out-of-range CSS pseudo-classes shouldn't match disabled or readonly inputs
     4        https://bugs.webkit.org/show_bug.cgi?id=156530
     5
     6        Reviewed by Simon Fraser.
     7
     8        * fast/css/pseudo-in-range-on-disabled-input-basics-expected.html: Added.
     9        * fast/css/pseudo-in-range-on-disabled-input-basics.html: Added.
     10        * fast/css/pseudo-in-range-on-readonly-input-basics-expected.html: Added.
     11        * fast/css/pseudo-in-range-on-readonly-input-basics.html: Added.
     12        * fast/css/pseudo-in-range-out-of-range-on-disabled-input-trivial-expected.html: Added.
     13        * fast/css/pseudo-in-range-out-of-range-on-disabled-input-trivial.html: Added.
     14        * fast/css/pseudo-out-of-range-on-disabled-input-basics-expected.html: Added.
     15        * fast/css/pseudo-out-of-range-on-disabled-input-basics.html: Added.
     16        * fast/css/pseudo-out-of-range-on-readonly-input-basics-expected.html: Added.
     17        * fast/css/pseudo-out-of-range-on-readonly-input-basics.html: Added.
     18        * fast/selectors/in-range-out-of-range-style-update-expected.txt: Added.
     19        * fast/selectors/in-range-out-of-range-style-update.html: Added.
     20
    1212016-06-16  Gyuyoung Kim  <gyuyoung.kim@webkit.org>
    222
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r202143 r202159  
     12016-06-16  Benjamin Poulain  <bpoulain@apple.com>
     2
     3        :in-range & :out-of-range CSS pseudo-classes shouldn't match disabled or readonly inputs
     4        https://bugs.webkit.org/show_bug.cgi?id=156530
     5
     6        Reviewed by Simon Fraser.
     7
     8        * web-platform-tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-expected.txt:
     9
    1102016-06-16  Benjamin Poulain  <bpoulain@apple.com>
    211
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-expected.txt

    r202143 r202159  
    11                                                   
    22
    3 FAIL ':in-range' matches all elements that are candidates for constraint validation, have range limitations, and that are neither suffering from an underflow nor suffering from an overflow assert_array_equals: lengths differ, expected 10 got 7
     3FAIL ':in-range' matches all elements that are candidates for constraint validation, have range limitations, and that are neither suffering from an underflow nor suffering from an overflow assert_array_equals: lengths differ, expected 10 got 5
    44FAIL ':out-of-range' matches all elements that are candidates for constraint validation, have range limitations, and that are either suffering from an underflow or suffering from an overflow assert_array_equals: lengths differ, expected 12 got 2
    5 FAIL ':in-range' update number1's value < min assert_array_equals: lengths differ, expected 9 got 6
     5FAIL ':in-range' update number1's value < min assert_array_equals: lengths differ, expected 9 got 4
    66FAIL ':out-of-range' update number1's value < min assert_array_equals: lengths differ, expected 13 got 3
    7 FAIL ':in-range' update number3's min < value assert_array_equals: lengths differ, expected 10 got 7
     7FAIL ':in-range' update number3's min < value assert_array_equals: lengths differ, expected 10 got 5
    88FAIL ':out-of-range' update number3's min < value assert_array_equals: lengths differ, expected 12 got 2
    99
  • trunk/Source/WebCore/ChangeLog

    r202156 r202159  
     12016-06-16  Benjamin Poulain  <bpoulain@apple.com>
     2
     3        :in-range & :out-of-range CSS pseudo-classes shouldn't match disabled or readonly inputs
     4        https://bugs.webkit.org/show_bug.cgi?id=156530
     5
     6        Reviewed by Simon Fraser.
     7
     8        Elements should only match :in-range and :out-of-range
     9        when they are candidate for constraint validation.
     10
     11        Tests: fast/css/pseudo-in-range-on-disabled-input-basics.html
     12               fast/css/pseudo-in-range-on-readonly-input-basics.html
     13               fast/css/pseudo-in-range-out-of-range-on-disabled-input-trivial.html
     14               fast/css/pseudo-out-of-range-on-disabled-input-basics.html
     15               fast/css/pseudo-out-of-range-on-readonly-input-basics.html
     16               fast/selectors/in-range-out-of-range-style-update.html
     17
     18        * html/BaseDateAndTimeInputType.cpp:
     19        (WebCore::BaseDateAndTimeInputType::minOrMaxAttributeChanged):
     20        * html/NumberInputType.cpp:
     21        (WebCore::NumberInputType::minOrMaxAttributeChanged):
     22        I forgot to handle style update in r202143.
     23        This is covered by the new style invalidation test.
     24
     25        * html/BaseDateAndTimeInputType.h:
     26        * html/HTMLInputElement.cpp:
     27        (WebCore::HTMLInputElement::isInRange):
     28        (WebCore::HTMLInputElement::isOutOfRange):
     29
    1302016-06-16  Frederic Wang  <fwang@igalia.com>
    231
  • trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp

    r165897 r202159  
    11/*
    22 * Copyright (C) 2010 Google Inc. All rights reserved.
     3 * Copyright (C) 2016 Apple Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    9192{
    9293    return true;
     94}
     95
     96void BaseDateAndTimeInputType::minOrMaxAttributeChanged()
     97{
     98    element().setNeedsStyleRecalc();
    9399}
    94100
  • trunk/Source/WebCore/html/BaseDateAndTimeInputType.h

    r197563 r202159  
    11/*
    22 * Copyright (C) 2010 Google Inc. All rights reserved.
     3 * Copyright (C) 2016 Apple Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    6768    bool valueMissing(const String&) const override;
    6869    Decimal defaultValueForStepUp() const override;
     70    void minOrMaxAttributeChanged() override;
    6971    bool isSteppable() const override;
    7072    virtual String serializeWithMilliseconds(double) const;
  • trunk/Source/WebCore/html/HTMLInputElement.cpp

    r201942 r202159  
    33 *           (C) 1999 Antti Koivisto (koivisto@kde.org)
    44 *           (C) 2001 Dirk Mueller (mueller@kde.org)
    5  * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013, 2014 Apple Inc. All rights reserved.
     5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2016 Apple Inc. All rights reserved.
    66 *           (C) 2006 Alexey Proskuryakov (ap@nypop.com)
    77 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org)
     
    13711371bool HTMLInputElement::isInRange() const
    13721372{
    1373     return m_inputType->isInRange(value());
     1373    return willValidate() && m_inputType->isInRange(value());
    13741374}
    13751375
    13761376bool HTMLInputElement::isOutOfRange() const
    13771377{
    1378     return m_inputType->isOutOfRange(value());
     1378    return willValidate() && m_inputType->isOutOfRange(value());
    13791379}
    13801380
  • trunk/Source/WebCore/html/NumberInputType.cpp

    r202143 r202159  
    11/*
    22 * Copyright (C) 2010 Google Inc. All rights reserved.
    3  * Copyright (C) 2011 Apple Inc. All rights reserved.
     3 * Copyright (C) 2011, 2016 Apple Inc. All rights reserved.
    44 *
    55 * Redistribution and use in source and binary forms, with or without
     
    300300{
    301301    InputType::minOrMaxAttributeChanged();
     302    HTMLInputElement& element = this->element();
     303    element.setNeedsStyleRecalc();
     304    if (RenderObject* renderer = element.renderer())
     305        renderer->setNeedsLayoutAndPrefWidthsRecalc();
     306}
     307
     308void NumberInputType::stepAttributeChanged()
     309{
     310    InputType::stepAttributeChanged();
    302311
    303312    if (element().renderer())
     
    305314}
    306315
    307 void NumberInputType::stepAttributeChanged()
    308 {
    309     InputType::stepAttributeChanged();
    310 
    311     if (element().renderer())
    312         element().renderer()->setNeedsLayoutAndPrefWidthsRecalc();
    313 }
    314 
    315316} // namespace WebCore
Note: See TracChangeset for help on using the changeset viewer.