Changeset 46062 in webkit
- Timestamp:
- Jul 17, 2009 3:37:41 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 34 added
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r46048 r46062 1 2009-07-17 Michelangelo De Simone <micdesim@gmail.com> 2 3 Reviewed by Darin Adler. 4 5 https://bugs.webkit.org/show_bug.cgi?id=25551 6 Test suite for the required attribute, the valueMissing flag and new 7 :required and :optional CSS pseudoclasses. 8 Part of the HTML5 sec. Forms. 9 http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#attr-input-required 10 11 * fast/css/pseudo-required-optional-001-expected.txt: Added. 12 * fast/css/pseudo-required-optional-001.html: Added. 13 * fast/css/pseudo-required-optional-002-expected.txt: Added. 14 * fast/css/pseudo-required-optional-002.html: Added. 15 * fast/css/pseudo-required-optional-003-expected.txt: Added. 16 * fast/css/pseudo-required-optional-003.html: Added. 17 * fast/css/pseudo-required-optional-004-expected.txt: Added. 18 * fast/css/pseudo-required-optional-004.html: Added. 19 * fast/css/pseudo-required-optional-005-expected.txt: Added. 20 * fast/css/pseudo-required-optional-005.html: Added. 21 * fast/css/pseudo-required-optional-006-expected.txt: Added. 22 * fast/css/pseudo-required-optional-006.html: Added. 23 * fast/forms/ValidityState-valueMissing-001-expected.txt: Added. 24 * fast/forms/ValidityState-valueMissing-001.html: Added. 25 * fast/forms/ValidityState-valueMissing-002-expected.txt: Added. 26 * fast/forms/ValidityState-valueMissing-002.html: Added. 27 * fast/forms/ValidityState-valueMissing-003-expected.txt: Added. 28 * fast/forms/ValidityState-valueMissing-003.html: Added. 29 * fast/forms/ValidityState-valueMissing-004-expected.txt: Added. 30 * fast/forms/ValidityState-valueMissing-004.html: Added. 31 * fast/forms/ValidityState-valueMissing-005-expected.txt: Added. 32 * fast/forms/ValidityState-valueMissing-005.html: Added. 33 * fast/forms/ValidityState-valueMissing-006-expected.txt: Added. 34 * fast/forms/ValidityState-valueMissing-006.html: Added. 35 * fast/forms/ValidityState-valueMissing-007-expected.txt: Added. 36 * fast/forms/ValidityState-valueMissing-007.html: Added. 37 * fast/forms/ValidityState-valueMissing-008-expected.txt: Added. 38 * fast/forms/ValidityState-valueMissing-008.html: Added. 39 * fast/forms/ValidityState-valueMissing-009-expected.txt: Added. 40 * fast/forms/ValidityState-valueMissing-009.html: Added. 41 * fast/forms/required-attribute-001-expected.txt: Added. 42 * fast/forms/required-attribute-001.html: Added. 43 * fast/forms/required-attribute-002-expected.txt: Added. 44 * fast/forms/required-attribute-002.html: Added. 45 1 46 2009-07-17 Drew Wilson <atwilson@google.com> 2 47 -
trunk/WebCore/ChangeLog
r46061 r46062 1 2009-07-17 Michelangelo De Simone <micdesim@gmail.com> 2 3 Reviewed by Darin Adler. 4 5 https://bugs.webkit.org/show_bug.cgi?id=25551 6 Added support for the "required" attribute, the valueMissing flag 7 to the ValidityState object and :required/:optional CSS pseudoclasses. 8 Part of HTML5 sec. Forms specs. 9 http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#attr-input-required 10 11 Tests: fast/css/pseudo-required-optional-001.html 12 fast/css/pseudo-required-optional-002.html 13 fast/css/pseudo-required-optional-003.html 14 fast/css/pseudo-required-optional-004.html 15 fast/css/pseudo-required-optional-005.html 16 fast/css/pseudo-required-optional-006.html 17 fast/forms/ValidityState-valueMissing-001.html 18 fast/forms/ValidityState-valueMissing-002.html 19 fast/forms/ValidityState-valueMissing-003.html 20 fast/forms/ValidityState-valueMissing-004.html 21 fast/forms/ValidityState-valueMissing-005.html 22 fast/forms/ValidityState-valueMissing-006.html 23 fast/forms/ValidityState-valueMissing-007.html 24 fast/forms/ValidityState-valueMissing-008.html 25 fast/forms/ValidityState-valueMissing-009.html 26 fast/forms/required-attribute-001.html 27 fast/forms/required-attribute-002.html 28 29 * css/CSSSelector.cpp: 30 (WebCore::CSSSelector::extractPseudoType): pseudoRequired/pseudoOptional 31 * css/CSSSelector.h: 32 (WebCore::CSSSelector::): ditto 33 * css/CSSStyleSelector.cpp: 34 (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector): ditto 35 * dom/Element.h: 36 (WebCore::Element::isOptionalFormControl): check for optional controls 37 (WebCore::Element::isRequiredFormControl): check for required controls 38 * html/HTMLAttributeNames.in: required attribute 39 * html/HTMLButtonElement.h: 40 (WebCore::HTMLButtonElement::isOptionalFormControl): ditto 41 * html/HTMLFormControlElement.cpp: 42 (WebCore::HTMLFormControlElement::required): requiredAttr getter 43 (WebCore::HTMLFormControlElement::setRequired): requiredAttr setter 44 * html/HTMLFormControlElement.h: 45 (WebCore::HTMLFormControlElement::valueMissing): method definition 46 * html/HTMLInputElement.cpp: 47 (WebCore::HTMLInputElement::valueMissing): validation code 48 (WebCore::HTMLInputElement::isRequiredFormControl): ditto 49 * html/HTMLInputElement.h: 50 (WebCore::HTMLInputElement::isOptionalFormControl): ditto 51 * html/HTMLInputElement.idl: required DOM attribute 52 * html/HTMLSelectElement.h: 53 (WebCore::HTMLSelectElement::isOptionalFormControl): ditto 54 * html/HTMLTextAreaElement.h: 55 (WebCore::HTMLTextAreaElement::valueMissing): validation code 56 (WebCore::HTMLTextAreaElement::isOptionalFormControl): ditto 57 (WebCore::HTMLTextAreaElement::isRequiredFormControl): ditto 58 * html/HTMLTextAreaElement.idl: required DOM attribute 59 * html/ValidityState.cpp: 60 * html/ValidityState.h: 61 (WebCore::ValidityState::valueMissing): validation flag 62 1 63 2009-07-17 Beth Dakin <bdakin@apple.com> 2 64 -
trunk/WebCore/css/CSSSelector.cpp
r45474 r46062 118 118 DEFINE_STATIC_LOCAL(AtomicString, onlyChild, ("only-child")); 119 119 DEFINE_STATIC_LOCAL(AtomicString, onlyOfType, ("only-of-type")); 120 DEFINE_STATIC_LOCAL(AtomicString, optional, ("optional")); 121 DEFINE_STATIC_LOCAL(AtomicString, required, ("required")); 120 122 DEFINE_STATIC_LOCAL(AtomicString, resizer, ("-webkit-resizer")); 121 123 DEFINE_STATIC_LOCAL(AtomicString, root, ("root")); … … 287 289 else if (m_value == noButton) 288 290 m_pseudoType = PseudoNoButton; 291 else if (m_value == optional) 292 m_pseudoType = PseudoOptional; 293 else if (m_value == required) 294 m_pseudoType = PseudoRequired; 289 295 else if (m_value == scrollbarCorner) { 290 296 element = true; -
trunk/WebCore/css/CSSSelector.h
r45891 r46062 129 129 PseudoDisabled, 130 130 PseudoInputPlaceholder, 131 PseudoOptional, 132 PseudoRequired, 131 133 PseudoReadOnly, 132 134 PseudoReadWrite, -
trunk/WebCore/css/CSSStyleSelector.cpp
r45919 r46062 2376 2376 return e->isTextFormControl() && !e->isReadOnlyFormControl(); 2377 2377 } 2378 case CSSSelector::PseudoOptional: 2379 return e && e->isOptionalFormControl(); 2380 case CSSSelector::PseudoRequired: 2381 return e && e->isRequiredFormControl(); 2378 2382 case CSSSelector::PseudoChecked: { 2379 2383 if (!e || !e->isFormControlElement()) -
trunk/WebCore/dom/Element.h
r45937 r46062 213 213 virtual bool isReadOnlyFormControl() const { return false; } 214 214 virtual bool isTextFormControl() const { return false; } 215 virtual bool isOptionalFormControl() const { return false; } 216 virtual bool isRequiredFormControl() const { return false; } 215 217 216 218 virtual bool formControlValueMatchesRenderer() const { return false; } -
trunk/WebCore/html/HTMLAttributeNames.in
r45851 r46062 196 196 readonly 197 197 rel 198 required 198 199 results 199 200 rev -
trunk/WebCore/html/HTMLButtonElement.h
r43367 r46062 62 62 private: 63 63 enum Type { SUBMIT, RESET, BUTTON }; 64 virtual bool isOptionalFormControl() const { return true; } 64 65 65 66 Type m_type; -
trunk/WebCore/html/HTMLFormControlElement.cpp
r45888 r46062 205 205 } 206 206 207 bool HTMLFormControlElement::required() const 208 { 209 return hasAttribute(requiredAttr); 210 } 211 212 void HTMLFormControlElement::setRequired(bool b) 213 { 214 setAttribute(requiredAttr, b ? "required" : 0); 215 } 216 207 217 void HTMLFormControlElement::recalcStyle(StyleChange change) 208 218 { -
trunk/WebCore/html/HTMLFormControlElement.h
r45888 r46062 75 75 void setAutofocus(bool); 76 76 77 bool required() const; 78 void setRequired(bool); 79 80 virtual bool valueMissing() const { return false; } 81 77 82 virtual void recalcStyle(StyleChange); 78 83 -
trunk/WebCore/html/HTMLInputElement.cpp
r46006 r46062 113 113 // The default is true 114 114 return true; 115 } 116 117 bool HTMLInputElement::valueMissing() const 118 { 119 if (!isRequiredFormControl() || readOnly() || disabled()) 120 return false; 121 122 switch (inputType()) { 123 case TEXT: 124 case SEARCH: 125 case URL: 126 case TELEPHONE: 127 case EMAIL: 128 case PASSWORD: 129 case NUMBER: 130 case FILE: 131 return value().isEmpty(); 132 case CHECKBOX: 133 return !checked(); 134 case RADIO: 135 return !document()->checkedRadioButtons().checkedButtonForGroup(name()); 136 case HIDDEN: 137 case RANGE: 138 case SUBMIT: 139 case IMAGE: 140 case RESET: 141 case BUTTON: 142 case ISINDEX: 143 break; 144 } 145 146 ASSERT_NOT_REACHED(); 147 return false; 115 148 } 116 149 … … 1580 1613 } 1581 1614 1615 bool HTMLInputElement::isRequiredFormControl() const 1616 { 1617 if (!required()) 1618 return false; 1619 1620 switch (inputType()) { 1621 case TEXT: 1622 case SEARCH: 1623 case URL: 1624 case TELEPHONE: 1625 case EMAIL: 1626 case PASSWORD: 1627 case NUMBER: 1628 case CHECKBOX: 1629 case RADIO: 1630 case FILE: 1631 return true; 1632 case HIDDEN: 1633 case RANGE: 1634 case SUBMIT: 1635 case IMAGE: 1636 case RESET: 1637 case BUTTON: 1638 case ISINDEX: 1639 return false; 1640 } 1641 1642 ASSERT_NOT_REACHED(); 1643 return false; 1644 } 1645 1582 1646 void HTMLInputElement::cacheSelection(int start, int end) 1583 1647 { -
trunk/WebCore/html/HTMLInputElement.h
r44218 r46062 91 91 virtual bool isTextFormControl() const { return isTextField(); } 92 92 93 virtual bool valueMissing() const; 94 93 95 bool isTextButton() const { return m_type == SUBMIT || m_type == RESET || m_type == BUTTON; } 94 96 virtual bool isRadioButton() const { return m_type == RADIO; } … … 237 239 void registerForActivationCallbackIfNeeded(); 238 240 void unregisterForActivationCallbackIfNeeded(); 241 242 virtual bool isOptionalFormControl() const { return !isRequiredFormControl(); } 243 virtual bool isRequiredFormControl() const; 239 244 240 245 InputElementData m_data; -
trunk/WebCore/html/HTMLInputElement.idl
r45888 r46062 44 44 attribute DOMString placeholder; 45 45 attribute boolean readOnly; 46 attribute boolean required; 46 47 #if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C 47 48 attribute [ConvertToString] DOMString size; // DOM level 2 changed this to a long, but our existing API is a string -
trunk/WebCore/html/HTMLSelectElement.h
r45185 r46062 131 131 virtual void insertedIntoTree(bool); 132 132 133 virtual bool isOptionalFormControl() const { return true; } 134 133 135 SelectElementData m_data; 134 136 CollectionCache m_collectionInfo; -
trunk/WebCore/html/HTMLTextAreaElement.h
r43367 r46062 53 53 virtual bool isTextFormControl() const { return true; } 54 54 55 virtual bool valueMissing() const { return isRequiredFormControl() && !disabled() && !readOnly() && value().isEmpty(); } 56 55 57 int selectionStart(); 56 58 int selectionEnd(); … … 97 99 void updateValue() const; 98 100 101 virtual bool isOptionalFormControl() const { return !isRequiredFormControl(); } 102 virtual bool isRequiredFormControl() const { return required(); } 103 99 104 int m_rows; 100 105 int m_cols; -
trunk/WebCore/html/HTMLTextAreaElement.idl
r45888 r46062 37 37 attribute [ConvertNullToNullString] DOMString name; 38 38 attribute boolean readOnly; 39 attribute boolean required; 39 40 attribute long rows; 40 41 readonly attribute DOMString type; -
trunk/WebCore/html/ValidityState.cpp
r45895 r46062 23 23 #include "config.h" 24 24 #include "ValidityState.h" 25 #include "HTMLFormControlElement.h"26 25 27 26 namespace WebCore { -
trunk/WebCore/html/ValidityState.h
r45895 r46062 24 24 #define ValidityState_h 25 25 26 #include "HTMLFormControlElement.h" 26 27 #include <wtf/PassRefPtr.h> 27 28 #include <wtf/RefCounted.h> 28 29 29 30 namespace WebCore { 30 31 class HTMLFormControlElement;32 31 33 32 class ValidityState : public RefCounted<ValidityState> { … … 40 39 HTMLFormControlElement* control() const { return m_control; } 41 40 42 bool valueMissing() { return false; }41 bool valueMissing() { return control()->valueMissing(); } 43 42 bool typeMismatch() { return false; } 44 43 bool patternMismatch() { return false; }
Note: See TracChangeset
for help on using the changeset viewer.