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; |