summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/ValidityState.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-18 14:03:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-18 14:03:11 +0200
commit8d473cf9743f1d30a16a27114e93bd5af5648d23 (patch)
treecdca40d0353886b3ca52f33a2d7b8f1c0011aafc /Source/WebCore/html/ValidityState.cpp
parent1b914638db989aaa98631a1c1e02c7b2d44805d8 (diff)
downloadqtwebkit-8d473cf9743f1d30a16a27114e93bd5af5648d23.tar.gz
Imported WebKit commit 1350e72f7345ced9da2bd9980deeeb5a8d62fab4 (http://svn.webkit.org/repository/webkit/trunk@117578)
Weekly snapshot
Diffstat (limited to 'Source/WebCore/html/ValidityState.cpp')
-rw-r--r--Source/WebCore/html/ValidityState.cpp145
1 files changed, 10 insertions, 135 deletions
diff --git a/Source/WebCore/html/ValidityState.cpp b/Source/WebCore/html/ValidityState.cpp
index fe7312c2a..649765df9 100644
--- a/Source/WebCore/html/ValidityState.cpp
+++ b/Source/WebCore/html/ValidityState.cpp
@@ -38,177 +38,52 @@ using namespace HTMLNames;
String ValidityState::validationMessage() const
{
- if (!toHTMLElement(m_control)->willValidate())
- return String();
-
- if (customError())
- return m_customErrorMessage;
- HTMLElement* element = toHTMLElement(m_control);
- bool isInputElement = element->isFormControlElement() && element->hasTagName(inputTag);
- bool isTextAreaElement = element->isFormControlElement() && element->hasTagName(textareaTag);
- // The order of the following checks is meaningful. e.g. We'd like to show the
- // valueMissing message even if the control has other validation errors.
- if (valueMissing()) {
- if (element->hasTagName(selectTag))
- return validationMessageValueMissingForSelectText();
- if (isInputElement)
- return static_cast<HTMLInputElement*>(element)->valueMissingText();
- return validationMessageValueMissingText();
- }
- if (typeMismatch()) {
- if (isInputElement)
- return static_cast<HTMLInputElement*>(element)->typeMismatchText();
- return validationMessageTypeMismatchText();
- }
- if (patternMismatch())
- return validationMessagePatternMismatchText();
- if (tooLong()) {
- if (!isInputElement && !isTextAreaElement) {
- ASSERT_NOT_REACHED();
- return String();
- }
- HTMLTextFormControlElement* text = static_cast<HTMLTextFormControlElement*>(element);
- return validationMessageTooLongText(numGraphemeClusters(text->value()), text->maxLength());
- }
- if (rangeUnderflow()) {
- if (!isInputElement) {
- ASSERT_NOT_REACHED();
- return String();
- }
- return validationMessageRangeUnderflowText(static_cast<HTMLInputElement*>(element)->minimumString());
- }
- if (rangeOverflow()) {
- if (!isInputElement) {
- ASSERT_NOT_REACHED();
- return String();
- }
- return validationMessageRangeOverflowText(static_cast<HTMLInputElement*>(element)->maximumString());
- }
- if (stepMismatch()) {
- if (!isInputElement) {
- ASSERT_NOT_REACHED();
- return String();
- }
- HTMLInputElement* input = static_cast<HTMLInputElement*>(element);
- return validationMessageStepMismatchText(input->stepBaseString(), input->stepString());
- }
-
- return String();
-}
-
-void ValidityState::setCustomErrorMessage(const String& message)
-{
- m_customErrorMessage = message;
- if (m_control->isFormControlElement())
- static_cast<HTMLFormControlElement*>(m_control)->setNeedsValidityCheck();
+ return m_control->validationMessage();
}
bool ValidityState::valueMissing() const
{
- HTMLElement* element = toHTMLElement(m_control);
- if (!element->willValidate())
- return false;
-
- if (element->hasTagName(inputTag)) {
- HTMLInputElement* input = static_cast<HTMLInputElement*>(element);
- return input->valueMissing(input->value());
- }
- if (element->hasTagName(textareaTag)) {
- HTMLTextAreaElement* textArea = static_cast<HTMLTextAreaElement*>(element);
- return textArea->valueMissing(textArea->value());
- }
- if (element->hasTagName(selectTag))
- return toHTMLSelectElement(element)->valueMissing();
- return false;
+ return m_control->valueMissing();
}
bool ValidityState::typeMismatch() const
{
- HTMLElement* element = toHTMLElement(m_control);
- if (!element->willValidate())
- return false;
-
- if (!element->hasTagName(inputTag))
- return false;
- return static_cast<HTMLInputElement*>(element)->typeMismatch();
+ return m_control->typeMismatch();
}
bool ValidityState::patternMismatch() const
{
- HTMLElement* element = toHTMLElement(m_control);
- if (!element->willValidate())
- return false;
-
- if (!element->hasTagName(inputTag))
- return false;
- HTMLInputElement* input = static_cast<HTMLInputElement*>(element);
- return input->patternMismatch(input->value());
+ return m_control->patternMismatch();
}
bool ValidityState::tooLong() const
{
- HTMLElement* element = toHTMLElement(m_control);
- if (!element->willValidate())
- return false;
-
- if (element->hasTagName(inputTag)) {
- HTMLInputElement* input = static_cast<HTMLInputElement*>(element);
- return input->tooLong(input->value(), HTMLTextFormControlElement::CheckDirtyFlag);
- }
- if (element->hasTagName(textareaTag)) {
- HTMLTextAreaElement* textArea = static_cast<HTMLTextAreaElement*>(element);
- return textArea->tooLong(textArea->value(), HTMLTextFormControlElement::CheckDirtyFlag);
- }
- return false;
+ return m_control->tooLong();
}
bool ValidityState::rangeUnderflow() const
{
- HTMLElement* element = toHTMLElement(m_control);
- if (!element->willValidate())
- return false;
-
- if (!element->hasTagName(inputTag))
- return false;
- HTMLInputElement* input = static_cast<HTMLInputElement*>(element);
- return input->rangeUnderflow(input->value());
+ return m_control->rangeUnderflow();
}
bool ValidityState::rangeOverflow() const
{
- HTMLElement* element = toHTMLElement(m_control);
- if (!element->willValidate())
- return false;
-
- if (!element->hasTagName(inputTag))
- return false;
- HTMLInputElement* input = static_cast<HTMLInputElement*>(element);
- return input->rangeOverflow(input->value());
+ return m_control->rangeOverflow();
}
bool ValidityState::stepMismatch() const
{
- HTMLElement* element = toHTMLElement(m_control);
- if (!element->willValidate())
- return false;
-
- if (!element->hasTagName(inputTag))
- return false;
- HTMLInputElement* input = static_cast<HTMLInputElement*>(element);
- return input->stepMismatch(input->value());
+ return m_control->stepMismatch();
}
bool ValidityState::customError() const
{
- HTMLElement* element = toHTMLElement(m_control);
- return element->willValidate() && !m_customErrorMessage.isEmpty();
+ return m_control->customError();
}
bool ValidityState::valid() const
{
- bool someError = typeMismatch() || stepMismatch() || rangeUnderflow() || rangeOverflow()
- || tooLong() || patternMismatch() || valueMissing() || customError();
- return !someError;
+ return m_control->valid();
}
} // namespace