Changeset 91048 in webkit
- Timestamp:
- Jul 14, 2011 9:36:29 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r91047 r91048 1 2011-07-14 Kenichi Ishibashi <bashi@chromium.org> 2 3 <input form="x"> should not associate the input with any forms when there is no form with id="x" 4 https://bugs.webkit.org/show_bug.cgi?id=64509 5 6 Adds a test for checking input elements don't associate any form elements when they have the form attribute which points nonexistence form. 7 Fixes existing tests that contain unintended form attributes. 8 9 Reviewed by Kent Tamura. 10 11 * fast/forms/form-attribute-nonexistence-form-id-expected.txt: Added. 12 * fast/forms/form-attribute-nonexistence-form-id.html: Added. 13 * fast/forms/script-tests/form-attribute.js: Fixed unintended form attributes. 14 * fast/forms/script-tests/form-collection-elements-order.js: Ditto. 15 1 16 2011-07-14 Kent Tamura <tkent@chromium.org> 2 17 -
trunk/LayoutTests/fast/forms/script-tests/form-attribute.js
r73430 r91048 62 62 container.innerHTML = '<form id=owner>' + 63 63 ' <form>' + 64 ' <input id=inputElement1 name=victim form=owner />' +64 ' <input id=inputElement1 name=victim form=owner />' + 65 65 ' <input id=inputElement2 name=victim />' + 66 ' <input id=inputElement3 name=victim form=owner />' +66 ' <input id=inputElement3 name=victim form=owner />' + 67 67 ' </form>' + 68 68 '</form>'; -
trunk/LayoutTests/fast/forms/script-tests/form-collection-elements-order.js
r73430 r91048 58 58 container.innerHTML = '<button name=victim form=owner></button>' + 59 59 '<fieldset name=victim form=owner>Test</fieldset>' + 60 '<input name=victim form=owner />' +60 '<input name=victim form=owner />' + 61 61 '<keygen name=victim form=owner></keygen>' + 62 62 '<form id=owner>' + -
trunk/Source/WebCore/ChangeLog
r91047 r91048 1 2011-07-14 Kenichi Ishibashi <bashi@chromium.org> 2 3 <input form="x"> should not associate the input with any forms when there is no form with id="x" 4 https://bugs.webkit.org/show_bug.cgi?id=64509 5 6 Don't set form owner when a form associated element has the form attribute but there is no such form element. 7 8 Reviewed by Kent Tamura. 9 10 Test: fast/forms/form-attribute-nonexistence-form-id.html 11 12 * dom/Document.cpp: 13 (WebCore::Document::resetFormElementsOwner): Removed the argument which is no longer needed. 14 * dom/Document.h: Ditto. 15 * html/FormAssociatedElement.cpp: 16 (WebCore::FormAssociatedElement::insertedIntoTree): Resets m_form whenever the element has the form attribute. 17 (WebCore::FormAssociatedElement::resetFormOwner): Don't set m_form when there is no form element which has the given id. 18 (WebCore::FormAssociatedElement::formAttributeChanged): Removed the argument of resetFormOwner(). 19 * html/FormAssociatedElement.h: Ditto. 20 * html/HTMLFormElement.cpp: Ditto. 21 (WebCore::HTMLFormElement::insertedIntoDocument): 22 (WebCore::HTMLFormElement::removedFromDocument): 23 1 24 2011-07-14 Kent Tamura <tkent@chromium.org> 2 25 -
trunk/Source/WebCore/dom/Document.cpp
r90654 r91048 4374 4374 } 4375 4375 4376 void Document::resetFormElementsOwner( HTMLFormElement* form)4376 void Document::resetFormElementsOwner() 4377 4377 { 4378 4378 typedef FormAssociatedElementListHashSet::iterator Iterator; 4379 4379 Iterator end = m_formElementsWithFormAttribute.end(); 4380 4380 for (Iterator it = m_formElementsWithFormAttribute.begin(); it != end; ++it) 4381 (*it)->resetFormOwner( form);4381 (*it)->resetFormOwner(); 4382 4382 } 4383 4383 -
trunk/Source/WebCore/dom/Document.h
r90809 r91048 521 521 void registerFormElementWithFormAttribute(FormAssociatedElement*); 522 522 void unregisterFormElementWithFormAttribute(FormAssociatedElement*); 523 void resetFormElementsOwner( HTMLFormElement*);523 void resetFormElementsOwner(); 524 524 525 525 FrameView* view() const; // can be NULL -
trunk/Source/WebCore/html/FormAssociatedElement.cpp
r85617 r91048 78 78 HTMLElement* element = toHTMLElement(this); 79 79 if (element->fastHasAttribute(formAttr)) { 80 // Resets the form owner at first to make sure the element don't 81 // associate any form elements when there is no element which has 82 // the given ID. 83 if (m_form) { 84 m_form->removeFormElement(this); 85 m_form = 0; 86 } 80 87 Element* formElement = element->treeScope()->getElementById(element->fastGetAttribute(formAttr)); 81 88 if (formElement && formElement->hasTagName(formTag)) { 82 if (m_form)83 m_form->removeFormElement(this);84 89 m_form = static_cast<HTMLFormElement*>(formElement); 85 90 m_form->registerFormElement(this); 86 91 } 92 return; 87 93 } 88 94 if (!m_form) { … … 123 129 } 124 130 125 void FormAssociatedElement::resetFormOwner( HTMLFormElement* form)131 void FormAssociatedElement::resetFormOwner() 126 132 { 127 133 HTMLElement* element = toHTMLElement(this); … … 141 147 if (firstElement && firstElement->hasTagName(formTag)) 142 148 m_form = static_cast<HTMLFormElement*>(firstElement); 143 else144 m_form = form;145 149 } else 146 150 m_form = element->findFormAncestor(); … … 161 165 element->document()->unregisterFormElementWithFormAttribute(this); 162 166 } else 163 resetFormOwner( 0);167 resetFormOwner(); 164 168 } 165 169 -
trunk/Source/WebCore/html/FormAssociatedElement.h
r82925 r91048 56 56 virtual void formDestroyed() { m_form = 0; } 57 57 58 void resetFormOwner( HTMLFormElement*);58 void resetFormOwner(); 59 59 60 60 protected: -
trunk/Source/WebCore/html/HTMLFormElement.cpp
r89991 r91048 139 139 140 140 if (hasID()) 141 document()->resetFormElementsOwner( this);141 document()->resetFormElementsOwner(); 142 142 } 143 143 … … 150 150 151 151 if (hasID()) 152 document()->resetFormElementsOwner( 0);152 document()->resetFormElementsOwner(); 153 153 } 154 154
Note: See TracChangeset
for help on using the changeset viewer.