diff options
Diffstat (limited to 'WebCore/html/ValidityState.cpp')
-rw-r--r-- | WebCore/html/ValidityState.cpp | 40 |
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() || |