Loading dom/html/input/InputType.cpp +43 −95 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ #include "mozilla/dom/InputType.h" #include "mozilla/Assertions.h" #include "mozilla/Likely.h" #include "nsIFormControl.h" #include "mozilla/dom/ButtonInputTypes.h" #include "mozilla/dom/CheckableInputTypes.h" Loading Loading @@ -152,11 +154,10 @@ bool InputType::HasBadInput() const { return false; } nsresult InputType::GetValidationMessage( nsAString& aValidationMessage, nsIConstraintValidation::ValidityStateType aType) { nsresult rv = NS_OK; aValidationMessage.Truncate(); switch (aType) { case nsIConstraintValidation::VALIDITY_STATE_TOO_LONG: { nsAutoString message; int32_t maxLength = mInputElement->MaxLength(); int32_t textLength = mInputElement->InputTextLength(CallerType::System); nsAutoString strMaxLength; Loading @@ -165,14 +166,12 @@ nsresult InputType::GetValidationMessage( strMaxLength.AppendInt(maxLength); strTextLength.AppendInt(textLength); rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, "FormValidationTextTooLong", mInputElement->OwnerDoc(), strMaxLength, strTextLength); aValidationMessage = message; break; return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationTextTooLong", mInputElement->OwnerDoc(), strMaxLength, strTextLength); } case nsIConstraintValidation::VALIDITY_STATE_TOO_SHORT: { nsAutoString message; int32_t minLength = mInputElement->MinLength(); int32_t textLength = mInputElement->InputTextLength(CallerType::System); nsAutoString strMinLength; Loading @@ -181,79 +180,41 @@ nsresult InputType::GetValidationMessage( strMinLength.AppendInt(minLength); strTextLength.AppendInt(textLength); rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationTextTooShort", mInputElement->OwnerDoc(), strMinLength, strTextLength); aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_VALUE_MISSING: { nsAutoString message; rv = GetValueMissingMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_VALUE_MISSING: return GetValueMissingMessage(aValidationMessage); case nsIConstraintValidation::VALIDITY_STATE_TYPE_MISMATCH: { nsAutoString message; rv = GetTypeMismatchMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; return GetTypeMismatchMessage(aValidationMessage); } case nsIConstraintValidation::VALIDITY_STATE_PATTERN_MISMATCH: { nsAutoString message; nsAutoString title; mInputElement->GetAttr(kNameSpaceID_None, nsGkAtoms::title, title); mInputElement->GetAttr(nsGkAtoms::title, title); if (title.IsEmpty()) { rv = nsContentUtils::GetMaybeLocalizedString( return nsContentUtils::GetMaybeLocalizedString( nsContentUtils::eDOM_PROPERTIES, "FormValidationPatternMismatch", mInputElement->OwnerDoc(), message); } else { mInputElement->OwnerDoc(), aValidationMessage); } if (title.Length() > nsIConstraintValidation::sContentSpecifiedMaxLengthMessage) { title.Truncate( nsIConstraintValidation::sContentSpecifiedMaxLengthMessage); } rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationPatternMismatchWithTitle", mInputElement->OwnerDoc(), title); } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_RANGE_OVERFLOW: { nsAutoString message; rv = GetRangeOverflowMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_RANGE_UNDERFLOW: { nsAutoString message; rv = GetRangeUnderflowMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_RANGE_OVERFLOW: return GetRangeOverflowMessage(aValidationMessage); case nsIConstraintValidation::VALIDITY_STATE_RANGE_UNDERFLOW: return GetRangeUnderflowMessage(aValidationMessage); case nsIConstraintValidation::VALIDITY_STATE_STEP_MISMATCH: { nsAutoString message; Decimal value = mInputElement->GetValueAsDecimal(); if (MOZ_UNLIKELY(NS_WARN_IF(value.isNaN()))) { // TODO(bug 1651070): This should ideally never happen, but we don't Loading @@ -277,44 +238,31 @@ nsresult InputType::GetValidationMessage( ConvertNumberToString(valueHigh, valueHighStr); if (valueLowStr.Equals(valueHighStr)) { rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationStepMismatchOneValue", mInputElement->OwnerDoc(), valueLowStr); } else { rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, } return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationStepMismatch", mInputElement->OwnerDoc(), valueLowStr, valueHighStr); } } else { nsAutoString valueLowStr; ConvertNumberToString(valueLow, valueLowStr); rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationStepMismatchOneValue", mInputElement->OwnerDoc(), valueLowStr); } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_BAD_INPUT: { nsAutoString message; rv = GetBadInputMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_BAD_INPUT: return GetBadInputMessage(aValidationMessage); default: MOZ_ASSERT_UNREACHABLE("Unknown validity state"); return NS_ERROR_UNEXPECTED; } return rv; } nsresult InputType::GetValueMissingMessage(nsAString& aMessage) { Loading Loading
dom/html/input/InputType.cpp +43 −95 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ #include "mozilla/dom/InputType.h" #include "mozilla/Assertions.h" #include "mozilla/Likely.h" #include "nsIFormControl.h" #include "mozilla/dom/ButtonInputTypes.h" #include "mozilla/dom/CheckableInputTypes.h" Loading Loading @@ -152,11 +154,10 @@ bool InputType::HasBadInput() const { return false; } nsresult InputType::GetValidationMessage( nsAString& aValidationMessage, nsIConstraintValidation::ValidityStateType aType) { nsresult rv = NS_OK; aValidationMessage.Truncate(); switch (aType) { case nsIConstraintValidation::VALIDITY_STATE_TOO_LONG: { nsAutoString message; int32_t maxLength = mInputElement->MaxLength(); int32_t textLength = mInputElement->InputTextLength(CallerType::System); nsAutoString strMaxLength; Loading @@ -165,14 +166,12 @@ nsresult InputType::GetValidationMessage( strMaxLength.AppendInt(maxLength); strTextLength.AppendInt(textLength); rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, "FormValidationTextTooLong", mInputElement->OwnerDoc(), strMaxLength, strTextLength); aValidationMessage = message; break; return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationTextTooLong", mInputElement->OwnerDoc(), strMaxLength, strTextLength); } case nsIConstraintValidation::VALIDITY_STATE_TOO_SHORT: { nsAutoString message; int32_t minLength = mInputElement->MinLength(); int32_t textLength = mInputElement->InputTextLength(CallerType::System); nsAutoString strMinLength; Loading @@ -181,79 +180,41 @@ nsresult InputType::GetValidationMessage( strMinLength.AppendInt(minLength); strTextLength.AppendInt(textLength); rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationTextTooShort", mInputElement->OwnerDoc(), strMinLength, strTextLength); aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_VALUE_MISSING: { nsAutoString message; rv = GetValueMissingMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_VALUE_MISSING: return GetValueMissingMessage(aValidationMessage); case nsIConstraintValidation::VALIDITY_STATE_TYPE_MISMATCH: { nsAutoString message; rv = GetTypeMismatchMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; return GetTypeMismatchMessage(aValidationMessage); } case nsIConstraintValidation::VALIDITY_STATE_PATTERN_MISMATCH: { nsAutoString message; nsAutoString title; mInputElement->GetAttr(kNameSpaceID_None, nsGkAtoms::title, title); mInputElement->GetAttr(nsGkAtoms::title, title); if (title.IsEmpty()) { rv = nsContentUtils::GetMaybeLocalizedString( return nsContentUtils::GetMaybeLocalizedString( nsContentUtils::eDOM_PROPERTIES, "FormValidationPatternMismatch", mInputElement->OwnerDoc(), message); } else { mInputElement->OwnerDoc(), aValidationMessage); } if (title.Length() > nsIConstraintValidation::sContentSpecifiedMaxLengthMessage) { title.Truncate( nsIConstraintValidation::sContentSpecifiedMaxLengthMessage); } rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationPatternMismatchWithTitle", mInputElement->OwnerDoc(), title); } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_RANGE_OVERFLOW: { nsAutoString message; rv = GetRangeOverflowMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_RANGE_UNDERFLOW: { nsAutoString message; rv = GetRangeUnderflowMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_RANGE_OVERFLOW: return GetRangeOverflowMessage(aValidationMessage); case nsIConstraintValidation::VALIDITY_STATE_RANGE_UNDERFLOW: return GetRangeUnderflowMessage(aValidationMessage); case nsIConstraintValidation::VALIDITY_STATE_STEP_MISMATCH: { nsAutoString message; Decimal value = mInputElement->GetValueAsDecimal(); if (MOZ_UNLIKELY(NS_WARN_IF(value.isNaN()))) { // TODO(bug 1651070): This should ideally never happen, but we don't Loading @@ -277,44 +238,31 @@ nsresult InputType::GetValidationMessage( ConvertNumberToString(valueHigh, valueHighStr); if (valueLowStr.Equals(valueHighStr)) { rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationStepMismatchOneValue", mInputElement->OwnerDoc(), valueLowStr); } else { rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, } return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationStepMismatch", mInputElement->OwnerDoc(), valueLowStr, valueHighStr); } } else { nsAutoString valueLowStr; ConvertNumberToString(valueLow, valueLowStr); rv = nsContentUtils::FormatMaybeLocalizedString( message, nsContentUtils::eDOM_PROPERTIES, return nsContentUtils::FormatMaybeLocalizedString( aValidationMessage, nsContentUtils::eDOM_PROPERTIES, "FormValidationStepMismatchOneValue", mInputElement->OwnerDoc(), valueLowStr); } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_BAD_INPUT: { nsAutoString message; rv = GetBadInputMessage(message); if (NS_FAILED(rv)) { return rv; } aValidationMessage = message; break; } case nsIConstraintValidation::VALIDITY_STATE_BAD_INPUT: return GetBadInputMessage(aValidationMessage); default: MOZ_ASSERT_UNREACHABLE("Unknown validity state"); return NS_ERROR_UNEXPECTED; } return rv; } nsresult InputType::GetValueMissingMessage(nsAString& aMessage) { Loading