static void updateFromControlElementsAncestorDisabledStateUnder(HTMLElement& startNode, bool isDisabled) { HTMLFormControlElement* control; if (is<HTMLFormControlElement>(startNode)) control = &downcast<HTMLFormControlElement>(startNode); else control = Traversal<HTMLFormControlElement>::firstWithin(startNode); while (control) { control->setAncestorDisabled(isDisabled); // Don't call setAncestorDisabled(false) on form contorls inside disabled fieldsets. if (is<HTMLFieldSetElement>(*control) && control->fastHasAttribute(disabledAttr)) control = Traversal<HTMLFormControlElement>::nextSkippingChildren(*control, &startNode); else control = Traversal<HTMLFormControlElement>::next(*control, &startNode); } }