Changeset 48043 in webkit
- Timestamp:
- Sep 4, 2009 1:32:51 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r48040 r48043 1 2009-09-04 Kent Tamura <tkent@chromium.org> 2 3 Reviewed by Eric Seidel. 4 5 Tests for <input type=color> validation. 6 https://bugs.webkit.org/show_bug.cgi?id=28966 7 8 * fast/forms/ValidityState-patternMismatch-unsupported-expected.txt: Added. 9 * fast/forms/ValidityState-patternMismatch-unsupported.html: Added. 10 * fast/forms/ValidityState-typeMismatch-color-expected.txt: Added. 11 * fast/forms/ValidityState-typeMismatch-color.html: Added. 12 * fast/forms/resources/ValidityState-patternMismatch-unsupported.js: Added. 13 * fast/forms/resources/ValidityState-typeMismatch-color.js: Added. 14 1 15 2009-09-04 Yaar Schnitman <yaar@chromium.org> 2 16 -
trunk/WebCore/ChangeLog
r48042 r48043 1 2009-09-04 Kent Tamura <tkent@chromium.org> 2 3 Reviewed by Eric Seidel. 4 5 - Implement <input type=color> as a text field. 6 - ValidityState::typeMismatch supports for type=color. 7 https://bugs.webkit.org/show_bug.cgi?id=28966 8 9 Tests: fast/forms/ValidityState-patternMismatch-unsupported.html 10 fast/forms/ValidityState-typeMismatch-color.html 11 12 * html/HTMLInputElement.cpp: 13 (WebCore::HTMLInputElement::valueMissing): 14 (WebCore::HTMLInputElement::patternMismatch): 15 (WebCore::HTMLInputElement::setInputType): 16 (WebCore::HTMLInputElement::formControlType): 17 (WebCore::HTMLInputElement::saveFormControlState): 18 (WebCore::HTMLInputElement::restoreFormControlState): 19 (WebCore::HTMLInputElement::accessKeyAction): 20 (WebCore::HTMLInputElement::rendererIsNeeded): 21 (WebCore::HTMLInputElement::createRenderer): 22 (WebCore::HTMLInputElement::appendFormData): 23 (WebCore::HTMLInputElement::valueWithDefault): 24 (WebCore::HTMLInputElement::storesValueSeparateFromAttribute): 25 (WebCore::HTMLInputElement::defaultEventHandler): 26 (WebCore::HTMLInputElement::isRequiredFormControl): 27 (WebCore::HTMLInputElement::dataList): 28 * html/HTMLInputElement.h: 29 (WebCore::HTMLInputElement::): 30 (WebCore::HTMLInputElement::isTextField): 31 * html/ValidityState.cpp: 32 (WebCore::ValidityState::typeMismatch): 33 (WebCore::ValidityState::isValidColorString): 34 * html/ValidityState.h: 35 1 36 2009-09-04 Mads Ager <ager@chromium.org> 2 37 -
trunk/WebCore/html/HTMLInputElement.cpp
r48011 r48043 138 138 case RADIO: 139 139 return !document()->checkedRadioButtons().checkedButtonForGroup(name()); 140 case COLOR: 141 return false; 140 142 case HIDDEN: 141 143 case RANGE: … … 166 168 case RANGE: 167 169 case NUMBER: 170 case COLOR: 168 171 return false; 169 172 case TEXT: … … 315 318 else if (equalIgnoringCase(t, "url")) 316 319 newType = URL; 320 else if (equalIgnoringCase(t, "color")) 321 newType = COLOR; 317 322 else 318 323 newType = TEXT; … … 398 403 return checkbox; 399 404 } 405 case COLOR: { 406 DEFINE_STATIC_LOCAL(const AtomicString, color, ("color")); 407 return color; 408 } 400 409 case EMAIL: { 401 410 DEFINE_STATIC_LOCAL(const AtomicString, email, ("email")); … … 467 476 switch (inputType()) { 468 477 case BUTTON: 478 case COLOR: 469 479 case EMAIL: 470 480 case FILE: … … 498 508 switch (inputType()) { 499 509 case BUTTON: 510 case COLOR: 500 511 case EMAIL: 501 512 case FILE: … … 609 620 // a no-op for this type 610 621 break; 622 case COLOR: 611 623 case EMAIL: 612 624 case ISINDEX: … … 752 764 case BUTTON: 753 765 case CHECKBOX: 766 case COLOR: 754 767 case EMAIL: 755 768 case FILE: … … 792 805 case RANGE: 793 806 return new (arena) RenderSlider(this); 807 case COLOR: 794 808 case EMAIL: 795 809 case ISINDEX: … … 878 892 879 893 switch (inputType()) { 894 case COLOR: 880 895 case EMAIL: 881 896 case HIDDEN: … … 1055 1070 case BUTTON: 1056 1071 case CHECKBOX: 1072 case COLOR: 1057 1073 case EMAIL: 1058 1074 case FILE: … … 1160 1176 case SUBMIT: 1161 1177 return false; 1178 case COLOR: 1162 1179 case EMAIL: 1163 1180 case FILE: … … 1335 1352 switch (inputType()) { 1336 1353 case CHECKBOX: 1354 case COLOR: 1337 1355 case EMAIL: 1338 1356 case HIDDEN: … … 1462 1480 clickElement = true; 1463 1481 break; 1482 case COLOR: 1464 1483 case EMAIL: 1465 1484 case HIDDEN: … … 1694 1713 case RESET: 1695 1714 case BUTTON: 1715 case COLOR: 1696 1716 case ISINDEX: 1697 1717 return false; … … 1791 1811 case EMAIL: 1792 1812 case NUMBER: 1793 case RANGE: { 1813 case RANGE: 1814 case COLOR: { 1794 1815 Element* element = document()->getElementById(getAttribute(listAttr)); 1795 1816 if (element && element->hasTagName(datalistTag)) -
trunk/WebCore/html/HTMLInputElement.h
r47889 r48043 57 57 NUMBER, 58 58 TELEPHONE, 59 URL 59 URL, 60 COLOR 60 61 }; 61 62 … … 98 99 bool isTextButton() const { return m_type == SUBMIT || m_type == RESET || m_type == BUTTON; } 99 100 virtual bool isRadioButton() const { return m_type == RADIO; } 100 virtual bool isTextField() const { return m_type == TEXT || m_type == PASSWORD || m_type == SEARCH || m_type == ISINDEX || m_type == EMAIL || m_type == NUMBER || m_type == TELEPHONE || m_type == URL ; }101 virtual bool isTextField() const { return m_type == TEXT || m_type == PASSWORD || m_type == SEARCH || m_type == ISINDEX || m_type == EMAIL || m_type == NUMBER || m_type == TELEPHONE || m_type == URL || m_type == COLOR; } 101 102 virtual bool isSearchField() const { return m_type == SEARCH; } 102 103 virtual bool isInputTypeHidden() const { return m_type == HIDDEN; } -
trunk/WebCore/html/ValidityState.cpp
r46062 r48043 24 24 #include "ValidityState.h" 25 25 26 #include "HTMLInputElement.h" 27 #include "HTMLNames.h" 28 26 29 namespace WebCore { 30 31 using namespace HTMLNames; 27 32 28 33 ValidityState::ValidityState(HTMLFormControlElement* parent) … … 30 35 { 31 36 ASSERT(parent); 37 } 38 39 bool ValidityState::typeMismatch() 40 { 41 if (!control()->hasTagName(inputTag)) 42 return false; 43 44 HTMLInputElement* input = static_cast<HTMLInputElement*>(control()); 45 String value = input->value(); 46 47 if (value.isEmpty()) 48 return false; 49 50 if (input->inputType() != HTMLInputElement::COLOR) 51 return false; 52 return !isValidColorString(value); 32 53 } 33 54 … … 40 61 } 41 62 63 bool ValidityState::isValidColorString(const String& value) 64 { 65 if (value.isEmpty()) 66 return false; 67 if (value[0] == '#') { 68 // We don't accept #rgb and #aarrggbb formats. 69 if (value.length() != 7) 70 return false; 71 } 72 Color color(value); // This accepts named colors such as "white". 73 return color.isValid() && !color.hasAlpha(); 74 } 75 42 76 } // namespace -
trunk/WebCore/html/ValidityState.h
r46869 r48043 42 42 43 43 bool valueMissing() { return control()->valueMissing(); } 44 bool typeMismatch() { return false; }44 bool typeMismatch(); 45 45 bool patternMismatch() { return control()->patternMismatch(); } 46 46 bool tooLong() { return false; } … … 55 55 HTMLFormControlElement* m_control; 56 56 String m_customErrorMessage; 57 58 static bool isValidColorString(const String&); 57 59 }; 58 60
Note: See TracChangeset
for help on using the changeset viewer.