Backed out changeset 2450366cf7ca (bug 1891629) for causing win msix mochitest failures
[gecko.git] / dom / html / ValidityState.h
blobb9cf7cf4644cd15c25964ec889204f954bf33c01
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_ValidityState_h
8 #define mozilla_dom_ValidityState_h
10 #include "nsCOMPtr.h"
11 #include "nsIConstraintValidation.h"
12 #include "nsWrapperCache.h"
13 #include "js/TypeDecls.h"
15 namespace mozilla::dom {
17 class ValidityState final : public nsISupports, public nsWrapperCache {
18 ~ValidityState() = default;
20 public:
21 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
22 NS_DECL_CYCLE_COLLECTION_WRAPPERCACHE_CLASS(ValidityState)
24 friend class ::nsIConstraintValidation;
26 nsIConstraintValidation* GetParentObject() const {
27 return mConstraintValidation;
30 virtual JSObject* WrapObject(JSContext* aCx,
31 JS::Handle<JSObject*> aGivenProto) override;
33 // Web IDL methods
34 bool ValueMissing() const {
35 return GetValidityState(
36 nsIConstraintValidation::VALIDITY_STATE_VALUE_MISSING);
38 bool TypeMismatch() const {
39 return GetValidityState(
40 nsIConstraintValidation::VALIDITY_STATE_TYPE_MISMATCH);
42 bool PatternMismatch() const {
43 return GetValidityState(
44 nsIConstraintValidation::VALIDITY_STATE_PATTERN_MISMATCH);
46 bool TooLong() const {
47 return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_TOO_LONG);
49 bool TooShort() const {
50 return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_TOO_SHORT);
52 bool RangeUnderflow() const {
53 return GetValidityState(
54 nsIConstraintValidation::VALIDITY_STATE_RANGE_UNDERFLOW);
56 bool RangeOverflow() const {
57 return GetValidityState(
58 nsIConstraintValidation::VALIDITY_STATE_RANGE_OVERFLOW);
60 bool StepMismatch() const {
61 return GetValidityState(
62 nsIConstraintValidation::VALIDITY_STATE_STEP_MISMATCH);
64 bool BadInput() const {
65 return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_BAD_INPUT);
67 bool CustomError() const {
68 return GetValidityState(
69 nsIConstraintValidation::VALIDITY_STATE_CUSTOM_ERROR);
71 bool Valid() const {
72 return !mConstraintValidation || mConstraintValidation->IsValid();
75 protected:
76 explicit ValidityState(nsIConstraintValidation* aConstraintValidation);
78 /**
79 * Helper function to get a validity state from constraint validation
80 * instance.
82 inline bool GetValidityState(
83 nsIConstraintValidation::ValidityStateType aState) const {
84 return mConstraintValidation &&
85 mConstraintValidation->GetValidityState(aState);
88 nsCOMPtr<nsIConstraintValidation> mConstraintValidation;
91 } // namespace mozilla::dom
93 #endif // mozilla_dom_ValidityState_h