Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLInputElement.cpp

Issue 1615003002: Fix behavior of HTMLInputElement.maxLength/minLength getter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Set to -1 for invalid attribute or negative Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
7 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) 7 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org)
8 * Copyright (C) 2010 Google Inc. All rights reserved. 8 * Copyright (C) 2010 Google Inc. All rights reserved.
9 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 9 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
10 * Copyright (C) 2012 Samsung Electronics. All rights reserved. 10 * Copyright (C) 2012 Samsung Electronics. All rights reserved.
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 // get rather sluggish when a text field has a larger number of characters than 96 // get rather sluggish when a text field has a larger number of characters than
97 // this, even when just clicking in the text field. 97 // this, even when just clicking in the text field.
98 const int HTMLInputElement::maximumLength = 524288; 98 const int HTMLInputElement::maximumLength = 524288;
99 const int defaultSize = 20; 99 const int defaultSize = 20;
100 const int maxSavedResults = 256; 100 const int maxSavedResults = 256;
101 101
102 HTMLInputElement::HTMLInputElement(Document& document, HTMLFormElement* form, bo ol createdByParser) 102 HTMLInputElement::HTMLInputElement(Document& document, HTMLFormElement* form, bo ol createdByParser)
103 : HTMLTextFormControlElement(inputTag, document, form) 103 : HTMLTextFormControlElement(inputTag, document, form)
104 , m_size(defaultSize) 104 , m_size(defaultSize)
105 , m_maxLength(maximumLength) 105 , m_maxLength(maximumLength)
106 , m_minLength(0) 106 , m_minLength(-1)
107 , m_maxResults(-1) 107 , m_maxResults(-1)
108 , m_isChecked(false) 108 , m_isChecked(false)
109 , m_reflectsCheckedAttribute(true) 109 , m_reflectsCheckedAttribute(true)
110 , m_isIndeterminate(false) 110 , m_isIndeterminate(false)
111 , m_isActivatedSubmit(false) 111 , m_isActivatedSubmit(false)
112 , m_autocomplete(Uninitialized) 112 , m_autocomplete(Uninitialized)
113 , m_hasNonEmptyList(false) 113 , m_hasNonEmptyList(false)
114 , m_stateRestored(false) 114 , m_stateRestored(false)
115 , m_parsingInProgress(createdByParser) 115 , m_parsingInProgress(createdByParser)
116 , m_valueAttributeWasUpdatedAfterParsing(false) 116 , m_valueAttributeWasUpdatedAfterParsing(false)
(...skipping 1241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 return parseAcceptAttribute(fastGetAttribute(acceptAttr), isValidFileExtensi on); 1358 return parseAcceptAttribute(fastGetAttribute(acceptAttr), isValidFileExtensi on);
1359 } 1359 }
1360 1360
1361 const AtomicString& HTMLInputElement::alt() const 1361 const AtomicString& HTMLInputElement::alt() const
1362 { 1362 {
1363 return fastGetAttribute(altAttr); 1363 return fastGetAttribute(altAttr);
1364 } 1364 }
1365 1365
1366 int HTMLInputElement::maxLength() const 1366 int HTMLInputElement::maxLength() const
1367 { 1367 {
1368 if (!hasAttribute(maxlengthAttr))
1369 return -1;
1368 return m_maxLength; 1370 return m_maxLength;
1369 } 1371 }
1370 1372
1371 int HTMLInputElement::minLength() const 1373 int HTMLInputElement::minLength() const
1372 { 1374 {
1373 return m_minLength; 1375 return m_minLength;
1374 } 1376 }
1375 1377
1376 void HTMLInputElement::setMaxLength(int maxLength, ExceptionState& exceptionStat e) 1378 void HTMLInputElement::setMaxLength(int maxLength, ExceptionState& exceptionStat e)
1377 { 1379 {
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 } 1674 }
1673 1675
1674 void HTMLInputElement::updatePlaceholderText() 1676 void HTMLInputElement::updatePlaceholderText()
1675 { 1677 {
1676 return m_inputTypeView->updatePlaceholderText(); 1678 return m_inputTypeView->updatePlaceholderText();
1677 } 1679 }
1678 1680
1679 void HTMLInputElement::parseMaxLengthAttribute(const AtomicString& value) 1681 void HTMLInputElement::parseMaxLengthAttribute(const AtomicString& value)
1680 { 1682 {
1681 int maxLength; 1683 int maxLength;
1682 if (!parseHTMLInteger(value, maxLength)) 1684 if (!parseHTMLInteger(value, maxLength) || maxLength < 0)
1683 maxLength = maximumLength; 1685 maxLength = -1;
1684 if (maxLength < 0 || maxLength > maximumLength) 1686 if (maxLength > maximumLength)
1685 maxLength = maximumLength; 1687 maxLength = maximumLength;
1686 int oldMaxLength = m_maxLength; 1688 int oldMaxLength = m_maxLength;
1687 m_maxLength = maxLength; 1689 m_maxLength = maxLength;
1688 if (oldMaxLength != maxLength) 1690 if (oldMaxLength != maxLength)
1689 updateValueIfNeeded(); 1691 updateValueIfNeeded();
1690 setNeedsValidityCheck(); 1692 setNeedsValidityCheck();
1691 } 1693 }
1692 1694
1693 void HTMLInputElement::parseMinLengthAttribute(const AtomicString& value) 1695 void HTMLInputElement::parseMinLengthAttribute(const AtomicString& value)
1694 { 1696 {
1695 int minLength; 1697 int minLength;
1696 if (!parseHTMLInteger(value, minLength)) 1698 if (!parseHTMLInteger(value, minLength) || minLength < 0)
1697 minLength = 0; 1699 minLength = -1;
1698 if (minLength < 0)
1699 minLength = 0;
1700 m_minLength = minLength; 1700 m_minLength = minLength;
1701 setNeedsValidityCheck(); 1701 setNeedsValidityCheck();
1702 } 1702 }
1703 1703
1704 void HTMLInputElement::updateValueIfNeeded() 1704 void HTMLInputElement::updateValueIfNeeded()
1705 { 1705 {
1706 String newValue = sanitizeValue(m_valueIfDirty); 1706 String newValue = sanitizeValue(m_valueIfDirty);
1707 ASSERT(!m_valueIfDirty.isNull() || newValue.isNull()); 1707 ASSERT(!m_valueIfDirty.isNull() || newValue.isNull());
1708 if (newValue != m_valueIfDirty) 1708 if (newValue != m_valueIfDirty)
1709 setValue(newValue); 1709 setValue(newValue);
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
1931 void HTMLInputElement::ensurePrimaryContent() 1931 void HTMLInputElement::ensurePrimaryContent()
1932 { 1932 {
1933 m_inputTypeView->ensurePrimaryContent(); 1933 m_inputTypeView->ensurePrimaryContent();
1934 } 1934 }
1935 1935
1936 bool HTMLInputElement::hasFallbackContent() const 1936 bool HTMLInputElement::hasFallbackContent() const
1937 { 1937 {
1938 return m_inputTypeView->hasFallbackContent(); 1938 return m_inputTypeView->hasFallbackContent();
1939 } 1939 }
1940 } // namespace blink 1940 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698