summaryrefslogtreecommitdiffstats
path: root/WebCore/html/ValidityState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/html/ValidityState.cpp')
-rw-r--r--WebCore/html/ValidityState.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/WebCore/html/ValidityState.cpp b/WebCore/html/ValidityState.cpp
index 6b0a0b4..e7df225 100644
--- a/WebCore/html/ValidityState.cpp
+++ b/WebCore/html/ValidityState.cpp
@@ -26,6 +26,7 @@
#include "HTMLInputElement.h"
#include "HTMLNames.h"
#include "KURL.h"
+#include "LocalizedStrings.h"
#include "RegularExpression.h"
#include <wtf/StdLibExtras.h>
@@ -43,6 +44,31 @@ ValidityState::ValidityState(HTMLFormControlElement* parent)
ASSERT(parent);
}
+String ValidityState::validationMessage()
+{
+ if (!control()->willValidate())
+ return String();
+
+ if (customError())
+ return m_customErrorMessage;
+ if (valueMissing())
+ return validationMessageValueMissingText();
+ if (typeMismatch())
+ return validationMessageTypeMismatchText();
+ if (patternMismatch())
+ return validationMessagePatternMismatchText();
+ if (tooLong())
+ return validationMessageTooLongText();
+ if (rangeUnderflow())
+ return validationMessageRangeUnderflowText();
+ if (rangeOverflow())
+ return validationMessageRangeOverflowText();
+ if (stepMismatch())
+ return validationMessageStepMismatchText();
+
+ return String();
+}
+
bool ValidityState::typeMismatch()
{
if (!control()->hasTagName(inputTag))
@@ -74,6 +100,13 @@ bool ValidityState::typeMismatch()
return false;
}
+ case HTMLInputElement::DATE:
+ case HTMLInputElement::DATETIME:
+ case HTMLInputElement::DATETIMELOCAL:
+ case HTMLInputElement::MONTH:
+ case HTMLInputElement::TIME:
+ case HTMLInputElement::WEEK:
+ return !HTMLInputElement::formStringToISODateTime(input->inputType(), value, 0);
default:
return false;
}
@@ -93,6 +126,13 @@ bool ValidityState::rangeOverflow()
return static_cast<HTMLInputElement*>(control())->rangeOverflow();
}
+bool ValidityState::stepMismatch()
+{
+ if (!control()->hasTagName(inputTag))
+ return false;
+ return static_cast<HTMLInputElement*>(control())->stepMismatch();
+}
+
bool ValidityState::valid()
{
bool someError = typeMismatch() || stepMismatch() || rangeUnderflow() || rangeOverflow() ||