Changeset 34626 in webkit
- Timestamp:
- Jun 17, 2008 11:45:06 AM (16 years ago)
- Location:
- trunk
- Files:
-
- 18 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r34614 r34626 1 2008-06-17 Michelangelo De Simone <m.des@mac.com> 2 3 Reviewed by Adele. 4 5 Tests for https://bugs.webkit.org/show_bug.cgi?id=18887 6 Added support for autofocus controls. 7 8 Test cases "autofocus-opera*" have been imported from the Opera test suite 9 originally located at: 10 http://tc.labs.opera.com/html/forms/input/common-attributes/autofocus/ 11 12 * fast/dom/domListEnumeration-expected.txt: 13 * fast/dom/resources/domListEnumeration.js: 14 * fast/forms/autofocus-attribute-expected.txt: Added. 15 * fast/forms/autofocus-attribute.html: Added. 16 * fast/forms/autofocus-opera-001-expected.txt: Added. 17 * fast/forms/autofocus-opera-001.html: Added. 18 * fast/forms/autofocus-opera-002-expected.txt: Added. 19 * fast/forms/autofocus-opera-002.html: Added. 20 * fast/forms/autofocus-opera-003-expected.txt: Added. 21 * fast/forms/autofocus-opera-003.html: Added. 22 * fast/forms/autofocus-opera-004-expected.txt: Added. 23 * fast/forms/autofocus-opera-004.html: Added. 24 * fast/forms/autofocus-opera-005-expected.txt: Added. 25 * fast/forms/autofocus-opera-005.html: Added. 26 * fast/forms/autofocus-opera-006-expected.txt: Added. 27 * fast/forms/autofocus-opera-006.html: Added. 28 * fast/forms/autofocus-opera-007-expected.txt: Added. 29 * fast/forms/autofocus-opera-007.html: Added. 30 * fast/forms/autofocus-opera-008-expected.txt: Added. 31 * fast/forms/autofocus-opera-008.html: Added. 32 1 33 2008-06-16 Dan Bernstein <mitz@apple.com> 2 34 -
trunk/LayoutTests/fast/dom/domListEnumeration-expected.txt
r34543 r34626 42 42 43 43 [object HTMLSelectElement] 44 PASS resultArray.length is 12 444 PASS resultArray.length is 125 45 45 PASS resultArray[0].i is '0' 46 46 PASS resultArray[0].item is document.getElementsByTagName('option')[0] -
trunk/LayoutTests/fast/dom/resources/domListEnumeration.js
r34543 r34626 142 142 var htmlSelectElement = document.getElementsByTagName('select')[0]; 143 143 resultArray = iterateList(htmlSelectElement); 144 shouldBe("resultArray.length", "12 4");144 shouldBe("resultArray.length", "125"); 145 145 shouldBe("resultArray[0].i", "'0'"); 146 146 shouldBe("resultArray[0].item", "document.getElementsByTagName('option')[0]"); -
trunk/WebCore/ChangeLog
r34625 r34626 1 2008-06-17 Michelangelo De Simone <m.des@mac.com> 2 3 Reviewed by Adele. 4 5 Fix for https://bugs.webkit.org/show_bug.cgi?id=18887 6 Added support for autofocus controls. 7 8 When authors specify the "autofocus" attribute on form controls these 9 acquire focus automatically as the document is rendered. 10 11 Tests: fast/forms/autofocus-attribute.html 12 fast/forms/autofocus-opera-001.html 13 fast/forms/autofocus-opera-002.html 14 fast/forms/autofocus-opera-003.html 15 fast/forms/autofocus-opera-004.html 16 fast/forms/autofocus-opera-005.html 17 fast/forms/autofocus-opera-006.html 18 fast/forms/autofocus-opera-007.html 19 fast/forms/autofocus-opera-008.html 20 21 * dom/Document.cpp: (WebCore::Document::Document): Initialize the flag to ignore autofocus. 22 * dom/Document.h: 23 * html/HTMLAttributeNames.in: 24 * html/HTMLButtonElement.idl: 25 * html/HTMLFormControlElement.cpp: 26 (WebCore::HTMLFormControlElement::attach): Sets focus onto the appropriate "autofocus" control 27 (WebCore::HTMLFormControlElement::autofocus): Autofocus attribute getter 28 (WebCore::HTMLFormControlElement::setAutofocus): Autofocus attribute setter 29 * html/HTMLFormControlElement.h: 30 * html/HTMLInputElement.idl: 31 * html/HTMLSelectElement.idl: 32 * html/HTMLTextAreaElement.idl: 33 * rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::setUserEdited): 34 Sets the "ignore autofocus" flag on document if the user edited the control. 35 * rendering/RenderTextControl.h: 36 1 37 2008-06-17 Alp Toker <alp@nuanti.com> 2 38 -
trunk/WebCore/dom/Document.cpp
r34589 r34626 303 303 304 304 m_printing = false; 305 306 m_ignoreAutofocus = false; 305 307 306 308 m_frame = frame; -
trunk/WebCore/dom/Document.h
r34584 r34626 483 483 Node* focusedNode() const { return m_focusedNode.get(); } 484 484 485 // The m_ignoreAutofocus flag specifies whether or not the document has been changed by the user enough 486 // for WebCore to ignore the autofocus attribute on any form controls 487 bool ignoreAutofocus() const { return m_ignoreAutofocus; }; 488 void setIgnoreAutofocus(bool shouldIgnore = true) { m_ignoreAutofocus = shouldIgnore; }; 489 485 490 void setHoverNode(PassRefPtr<Node>); 486 491 Node* hoverNode() const { return m_hoverNode.get(); } … … 806 811 807 812 bool m_printing; 813 814 bool m_ignoreAutofocus; 808 815 809 816 ParseMode m_parseMode; -
trunk/WebCore/html/HTMLAttributeNames.in
r34484 r34626 20 20 <aria-valuenow/> 21 21 <autocomplete/> 22 <autofocus/> 22 23 <autoplay/> 23 24 <autosave/> -
trunk/WebCore/html/HTMLButtonElement.idl
r32664 r34626 29 29 attribute [ConvertNullToNullString] DOMString accessKey; 30 30 attribute boolean disabled; 31 attribute boolean autofocus; 31 32 attribute [ConvertNullToNullString] DOMString name; 32 33 readonly attribute DOMString type; -
trunk/WebCore/html/HTMLFormControlElement.cpp
r34559 r34626 97 97 if (renderer()) 98 98 renderer()->updateFromElement(); 99 100 // Focus the element if it should honour its autofocus attribute. 101 // We have to determine if the element is a TextArea/Input/Button/Select, 102 // if input type hidden ignore autofocus. So if disabled or readonly. 103 if (autofocus() && renderer() && !document()->ignoreAutofocus() && !isReadOnlyControl() && 104 ((hasTagName(inputTag) && !isInputTypeHidden()) || hasTagName(selectTag) || 105 hasTagName(buttonTag) || hasTagName(textareaTag))) 106 focus(); 99 107 } 100 108 … … 172 180 } 173 181 182 bool HTMLFormControlElement::autofocus() const 183 { 184 return hasAttribute(autofocusAttr); 185 } 186 187 void HTMLFormControlElement::setAutofocus(bool b) 188 { 189 setAttribute(autofocusAttr, b ? "autofocus" : 0); 190 } 191 174 192 void HTMLFormControlElement::recalcStyle(StyleChange change) 175 193 { -
trunk/WebCore/html/HTMLFormControlElement.h
r34559 r34626 71 71 void setReadOnly(bool); 72 72 73 // Determines whether or not a control will be automatically focused 74 virtual bool autofocus() const; 75 void setAutofocus(bool); 76 73 77 virtual void recalcStyle(StyleChange); 74 78 -
trunk/WebCore/html/HTMLInputElement.idl
r32664 r34626 36 36 attribute boolean checked; 37 37 attribute boolean disabled; 38 attribute boolean autofocus; 38 39 attribute long maxLength; 39 40 attribute [ConvertNullToNullString] DOMString name; -
trunk/WebCore/html/HTMLSelectElement.idl
r32664 r34626 47 47 48 48 attribute boolean disabled; 49 attribute boolean autofocus; 49 50 attribute boolean multiple; 50 51 attribute [ConvertNullToNullString] DOMString name; -
trunk/WebCore/html/HTMLTextAreaElement.idl
r32664 r34626 31 31 attribute long cols; 32 32 attribute boolean disabled; 33 attribute boolean autofocus; 33 34 attribute [ConvertNullToNullString] DOMString name; 34 35 attribute boolean readOnly; -
trunk/WebCore/rendering/RenderTextControl.cpp
r34589 r34626 414 414 if (m_searchPopupIsVisible) 415 415 m_searchPopup->updateFromElement(); 416 } 417 418 void RenderTextControl::setUserEdited(bool isUserEdited) 419 { 420 m_userEdited = isUserEdited; 421 document()->setIgnoreAutofocus(isUserEdited); 416 422 } 417 423 -
trunk/WebCore/rendering/RenderTextControl.h
r28240 r34626 63 63 64 64 bool isUserEdited() const { return m_userEdited; } 65 void setUserEdited(bool isUserEdited) { m_userEdited = isUserEdited; }65 void setUserEdited(bool isUserEdited); 66 66 67 67 int selectionStart();
Note: See TracChangeset
for help on using the changeset viewer.