Diff
Modified: branches/chromium/874/LayoutTests/fast/forms/input-value-sanitization-expected.txt (97688 => 97689)
--- branches/chromium/874/LayoutTests/fast/forms/input-value-sanitization-expected.txt 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/LayoutTests/fast/forms/input-value-sanitization-expected.txt 2011-10-18 01:12:46 UTC (rev 97689)
@@ -1,6 +1,11 @@
Tests for value sanitization algorithm.
+Email with multiple:
+PASS input.value is "[email protected],tkent@example.!!!"
+Email without multiple:
+PASS input.value is " [email protected], tkent@example.*** "
+
Number:
PASS input.value is "65536"
PASS input.value = "256"; input.value is "256"
Modified: branches/chromium/874/LayoutTests/fast/forms/input-value-sanitization.html (97688 => 97689)
--- branches/chromium/874/LayoutTests/fast/forms/input-value-sanitization.html 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/LayoutTests/fast/forms/input-value-sanitization.html 2011-10-18 01:12:46 UTC (rev 97689)
@@ -11,6 +11,20 @@
var input;
debug('');
+debug('Email with multiple:');
+input = document.createElement('input');
+input.multiple = true;
+input.type = 'email';
+input.setAttribute('value', ' [email protected], tkent@example.!!! ');
+shouldBe('input.value', '"[email protected],tkent@example.!!!"');
+debug('Email without multiple:');
+input = document.createElement('input');
+input.multiple = false;
+input.type = 'email';
+input.setAttribute('value', ' [email protected], tkent@example.*** \r\n');
+shouldBe('input.value', '" [email protected], tkent@example.*** "');
+
+debug('');
debug('Number:');
input = document.createElement('input');
input.setAttribute('value', '65536');
Modified: branches/chromium/874/Source/WebCore/html/ColorInputType.cpp (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/ColorInputType.cpp 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/ColorInputType.cpp 2011-10-18 01:12:46 UTC (rev 97689)
@@ -89,11 +89,8 @@
return String("#000000");
}
-String ColorInputType::sanitizeValue(const String& proposedValue)
+String ColorInputType::sanitizeValue(const String& proposedValue) const
{
- if (proposedValue.isNull())
- return proposedValue;
-
if (!isValidColorString(proposedValue))
return fallbackValue();
Modified: branches/chromium/874/Source/WebCore/html/ColorInputType.h (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/ColorInputType.h 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/ColorInputType.h 2011-10-18 01:12:46 UTC (rev 97689)
@@ -49,7 +49,7 @@
virtual const AtomicString& formControlType() const;
virtual bool supportsRequired() const;
virtual String fallbackValue();
- virtual String sanitizeValue(const String&);
+ virtual String sanitizeValue(const String&) const;
virtual Color valueAsColor() const;
virtual void createShadowSubtree();
virtual void valueChanged();
Modified: branches/chromium/874/Source/WebCore/html/EmailInputType.cpp (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/EmailInputType.cpp 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/EmailInputType.cpp 2011-10-18 01:12:46 UTC (rev 97689)
@@ -92,7 +92,7 @@
return true;
}
-String EmailInputType::sanitizeValue(const String& proposedValue)
+String EmailInputType::sanitizeValue(const String& proposedValue) const
{
String noLineBreakValue = proposedValue.removeCharacters(isHTMLLineBreak);
if (!element()->multiple())
Modified: branches/chromium/874/Source/WebCore/html/EmailInputType.h (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/EmailInputType.h 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/EmailInputType.h 2011-10-18 01:12:46 UTC (rev 97689)
@@ -46,7 +46,7 @@
virtual bool typeMismatch() const;
virtual String typeMismatchText() const;
virtual bool isEmailField() const;
- virtual String sanitizeValue(const String&);
+ virtual String sanitizeValue(const String&) const;
};
} // namespace WebCore
Modified: branches/chromium/874/Source/WebCore/html/HTMLInputElement.cpp (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/HTMLInputElement.cpp 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/HTMLInputElement.cpp 2011-10-18 01:12:46 UTC (rev 97689)
@@ -1414,6 +1414,8 @@
String HTMLInputElement::sanitizeValue(const String& proposedValue) const
{
+ if (proposedValue.isNull())
+ return proposedValue;
return m_inputType->sanitizeValue(proposedValue);
}
@@ -1955,6 +1957,7 @@
void HTMLInputElement::updateValueIfNeeded()
{
String newValue = sanitizeValue(m_valueIfDirty);
+ ASSERT(!m_valueIfDirty.isNull() || newValue.isNull());
if (newValue != m_valueIfDirty)
setValue(newValue);
}
Modified: branches/chromium/874/Source/WebCore/html/InputType.cpp (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/InputType.cpp 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/InputType.cpp 2011-10-18 01:12:46 UTC (rev 97689)
@@ -554,7 +554,7 @@
return true;
}
-String InputType::sanitizeValue(const String& proposedValue)
+String InputType::sanitizeValue(const String& proposedValue) const
{
return proposedValue;
}
Modified: branches/chromium/874/Source/WebCore/html/InputType.h (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/InputType.h 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/InputType.h 2011-10-18 01:12:46 UTC (rev 97689)
@@ -161,7 +161,8 @@
virtual String convertFromVisibleValue(const String&) const;
virtual bool isAcceptableValue(const String&);
// Returing the null string means "use the default value."
- virtual String sanitizeValue(const String&);
+ // This function must be called only by HTMLInputElement::sanitizeValue().
+ virtual String sanitizeValue(const String&) const;
virtual bool hasUnacceptableValue();
// Event handlers
Modified: branches/chromium/874/Source/WebCore/html/NumberInputType.cpp (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/NumberInputType.cpp 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/NumberInputType.cpp 2011-10-18 01:12:46 UTC (rev 97689)
@@ -308,7 +308,7 @@
return proposedValue.isEmpty() || isfinite(parseLocalizedNumber(proposedValue)) || parseToDoubleForNumberType(proposedValue, 0);
}
-String NumberInputType::sanitizeValue(const String& proposedValue)
+String NumberInputType::sanitizeValue(const String& proposedValue) const
{
if (proposedValue.isEmpty())
return proposedValue;
Modified: branches/chromium/874/Source/WebCore/html/NumberInputType.h (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/NumberInputType.h 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/NumberInputType.h 2011-10-18 01:12:46 UTC (rev 97689)
@@ -68,7 +68,7 @@
virtual String visibleValue() const;
virtual String convertFromVisibleValue(const String&) const;
virtual bool isAcceptableValue(const String&);
- virtual String sanitizeValue(const String&);
+ virtual String sanitizeValue(const String&) const;
virtual bool hasUnacceptableValue();
virtual bool shouldRespectSpeechAttribute();
virtual bool supportsPlaceholder() const;
Modified: branches/chromium/874/Source/WebCore/html/RangeInputType.cpp (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/RangeInputType.cpp 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/RangeInputType.cpp 2011-10-18 01:12:46 UTC (rev 97689)
@@ -294,14 +294,8 @@
return serializeForNumberType(StepRange(element()).defaultValue());
}
-String RangeInputType::sanitizeValue(const String& proposedValue)
+String RangeInputType::sanitizeValue(const String& proposedValue) const
{
- // If the proposedValue is null than this is a reset scenario and we
- // want the range input's value attribute to take priority over the
- // calculated default (middle) value.
- if (proposedValue.isNull())
- return proposedValue;
-
return serializeForNumberType(StepRange(element()).clampValue(proposedValue));
}
Modified: branches/chromium/874/Source/WebCore/html/RangeInputType.h (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/RangeInputType.h 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/RangeInputType.h 2011-10-18 01:12:46 UTC (rev 97689)
@@ -68,7 +68,7 @@
virtual void minOrMaxAttributeChanged();
virtual void valueChanged();
virtual String fallbackValue();
- virtual String sanitizeValue(const String& proposedValue);
+ virtual String sanitizeValue(const String& proposedValue) const;
virtual bool shouldRespectListAttribute();
};
Modified: branches/chromium/874/Source/WebCore/html/TextFieldInputType.cpp (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/TextFieldInputType.cpp 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/TextFieldInputType.cpp 2011-10-18 01:12:46 UTC (rev 97689)
@@ -273,7 +273,7 @@
return string.left(newLength);
}
-String TextFieldInputType::sanitizeValue(const String& proposedValue)
+String TextFieldInputType::sanitizeValue(const String& proposedValue) const
{
#if ENABLE(WCSS)
if (!element()->isConformToInputMask(proposedValue)) {
Modified: branches/chromium/874/Source/WebCore/html/TextFieldInputType.h (97688 => 97689)
--- branches/chromium/874/Source/WebCore/html/TextFieldInputType.h 2011-10-18 01:10:08 UTC (rev 97688)
+++ branches/chromium/874/Source/WebCore/html/TextFieldInputType.h 2011-10-18 01:12:46 UTC (rev 97689)
@@ -71,7 +71,7 @@
virtual bool shouldSubmitImplicitly(Event*);
virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const;
virtual bool shouldUseInputMethod() const;
- virtual String sanitizeValue(const String&);
+ virtual String sanitizeValue(const String&) const;
virtual bool shouldRespectListAttribute();
virtual HTMLElement* placeholderElement() const;
virtual void updatePlaceholderText();