summaryrefslogtreecommitdiffstats
path: root/dom/html/ValidityState.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/html/ValidityState.h')
-rw-r--r--dom/html/ValidityState.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/dom/html/ValidityState.h b/dom/html/ValidityState.h
new file mode 100644
index 000000000..4dbb94aad
--- /dev/null
+++ b/dom/html/ValidityState.h
@@ -0,0 +1,101 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_dom_ValidityState_h
+#define mozilla_dom_ValidityState_h
+
+#include "nsIDOMValidityState.h"
+#include "nsIConstraintValidation.h"
+#include "nsWrapperCache.h"
+#include "js/TypeDecls.h"
+
+namespace mozilla {
+namespace dom {
+
+class ValidityState final : public nsIDOMValidityState,
+ public nsWrapperCache
+{
+ ~ValidityState() {}
+
+public:
+ NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+ NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ValidityState)
+ NS_DECL_NSIDOMVALIDITYSTATE
+
+ friend class ::nsIConstraintValidation;
+
+ nsIConstraintValidation* GetParentObject() const {
+ return mConstraintValidation;
+ }
+
+ virtual JSObject* WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
+
+ // Web IDL methods
+ bool ValueMissing() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_VALUE_MISSING);
+ }
+ bool TypeMismatch() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_TYPE_MISMATCH);
+ }
+ bool PatternMismatch() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_PATTERN_MISMATCH);
+ }
+ bool TooLong() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_TOO_LONG);
+ }
+ bool TooShort() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_TOO_SHORT);
+ }
+ bool RangeUnderflow() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_RANGE_UNDERFLOW);
+ }
+ bool RangeOverflow() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_RANGE_OVERFLOW);
+ }
+ bool StepMismatch() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_STEP_MISMATCH);
+ }
+ bool BadInput() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_BAD_INPUT);
+ }
+ bool CustomError() const
+ {
+ return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_CUSTOM_ERROR);
+ }
+ bool Valid() const
+ {
+ return !mConstraintValidation || mConstraintValidation->IsValid();
+ }
+
+protected:
+ explicit ValidityState(nsIConstraintValidation* aConstraintValidation);
+
+ /**
+ * Helper function to get a validity state from constraint validation instance.
+ */
+ inline bool GetValidityState(nsIConstraintValidation::ValidityStateType aState) const
+ {
+ return mConstraintValidation &&
+ mConstraintValidation->GetValidityState(aState);
+ }
+
+ nsCOMPtr<nsIConstraintValidation> mConstraintValidation;
+};
+
+} // namespace dom
+} // namespace mozilla
+
+#endif // mozilla_dom_ValidityState_h
+