Chromium Code Reviews| Index: Source/core/html/HTMLFormControlElement.cpp |
| diff --git a/Source/core/html/HTMLFormControlElement.cpp b/Source/core/html/HTMLFormControlElement.cpp |
| index 75f2402d2c782128eb57e2c5c92b7f9adfe90112..6605a6d7de08c0626db248818e31c90a55d09c40 100644 |
| --- a/Source/core/html/HTMLFormControlElement.cpp |
| +++ b/Source/core/html/HTMLFormControlElement.cpp |
| @@ -185,9 +185,8 @@ void HTMLFormControlElement::disabledAttributeChanged() |
| void HTMLFormControlElement::requiredAttributeChanged() |
| { |
| setNeedsValidityCheck(); |
| - // Style recalculation is needed because style selectors may include |
| - // :required and :optional pseudo-classes. |
| - setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::fromAttribute(requiredAttr)); |
| + pseudoStateChanged(CSSSelector::PseudoRequired); |
| + pseudoStateChanged(CSSSelector::PseudoOptional); |
|
tkent
2014/10/27 01:47:19
Are they enough? Updating |required| attribute ca
tkent
2014/10/27 01:53:05
Ignore the comment. We calls setNeedsValidityChec
|
| } |
| bool HTMLFormControlElement::supportsAutofocus() const |
| @@ -291,14 +290,8 @@ void HTMLFormControlElement::fieldSetAncestorsSetNeedsValidityCheck(Node* node) |
| { |
| if (!node) |
| return; |
| - HTMLFieldSetElement* fieldSet = Traversal<HTMLFieldSetElement>::firstAncestorOrSelf(*node); |
| - HTMLFieldSetElement* lastFieldSet = 0; |
| - while (fieldSet) { |
| - lastFieldSet = fieldSet; |
| - fieldSet = Traversal<HTMLFieldSetElement>::firstAncestor(*fieldSet); |
| - } |
| - if (lastFieldSet) |
| - lastFieldSet->setNeedsValidityCheck(); |
| + for (HTMLFieldSetElement* fieldSet = Traversal<HTMLFieldSetElement>::firstAncestorOrSelf(*node); fieldSet; fieldSet = Traversal<HTMLFieldSetElement>::firstAncestor(*fieldSet)) |
| + fieldSet->setNeedsValidityCheck(); |
| } |
| void HTMLFormControlElement::setChangedSinceLastFormControlChangeEvent(bool changed) |
| @@ -568,7 +561,8 @@ void HTMLFormControlElement::setNeedsValidityCheck() |
| formOwnerSetNeedsValidityCheck(); |
| fieldSetAncestorsSetNeedsValidityCheck(parentNode()); |
| // Update style for pseudo classes such as :valid :invalid. |
| - setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::createWithExtraData(StyleChangeReason::PseudoClass, StyleChangeExtraData::Invalid)); |
| + pseudoStateChanged(CSSSelector::PseudoValid); |
| + pseudoStateChanged(CSSSelector::PseudoInvalid); |
| } |
| m_isValid = newIsValid; |