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/. */ 6 7 #ifndef mozilla_dom_ValidityState_h 8 #define mozilla_dom_ValidityState_h 9 10 #include "nsCOMPtr.h" 11 #include "nsIConstraintValidation.h" 12 #include "nsWrapperCache.h" 13 #include "js/TypeDecls.h" 14 15 namespace mozilla { 16 namespace dom { 17 18 class ValidityState final : public nsISupports, public nsWrapperCache { 19 ~ValidityState() = default; 20 21 public: 22 NS_DECL_CYCLE_COLLECTING_ISUPPORTS 23 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(ValidityState) 24 25 friend class ::nsIConstraintValidation; 26 GetParentObject()27 nsIConstraintValidation* GetParentObject() const { 28 return mConstraintValidation; 29 } 30 31 virtual JSObject* WrapObject(JSContext* aCx, 32 JS::Handle<JSObject*> aGivenProto) override; 33 34 // Web IDL methods ValueMissing()35 bool ValueMissing() const { 36 return GetValidityState( 37 nsIConstraintValidation::VALIDITY_STATE_VALUE_MISSING); 38 } TypeMismatch()39 bool TypeMismatch() const { 40 return GetValidityState( 41 nsIConstraintValidation::VALIDITY_STATE_TYPE_MISMATCH); 42 } PatternMismatch()43 bool PatternMismatch() const { 44 return GetValidityState( 45 nsIConstraintValidation::VALIDITY_STATE_PATTERN_MISMATCH); 46 } TooLong()47 bool TooLong() const { 48 return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_TOO_LONG); 49 } TooShort()50 bool TooShort() const { 51 return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_TOO_SHORT); 52 } RangeUnderflow()53 bool RangeUnderflow() const { 54 return GetValidityState( 55 nsIConstraintValidation::VALIDITY_STATE_RANGE_UNDERFLOW); 56 } RangeOverflow()57 bool RangeOverflow() const { 58 return GetValidityState( 59 nsIConstraintValidation::VALIDITY_STATE_RANGE_OVERFLOW); 60 } StepMismatch()61 bool StepMismatch() const { 62 return GetValidityState( 63 nsIConstraintValidation::VALIDITY_STATE_STEP_MISMATCH); 64 } BadInput()65 bool BadInput() const { 66 return GetValidityState(nsIConstraintValidation::VALIDITY_STATE_BAD_INPUT); 67 } CustomError()68 bool CustomError() const { 69 return GetValidityState( 70 nsIConstraintValidation::VALIDITY_STATE_CUSTOM_ERROR); 71 } Valid()72 bool Valid() const { 73 return !mConstraintValidation || mConstraintValidation->IsValid(); 74 } 75 76 protected: 77 explicit ValidityState(nsIConstraintValidation* aConstraintValidation); 78 79 /** 80 * Helper function to get a validity state from constraint validation 81 * instance. 82 */ GetValidityState(nsIConstraintValidation::ValidityStateType aState)83 inline bool GetValidityState( 84 nsIConstraintValidation::ValidityStateType aState) const { 85 return mConstraintValidation && 86 mConstraintValidation->GetValidityState(aState); 87 } 88 89 nsCOMPtr<nsIConstraintValidation> mConstraintValidation; 90 }; 91 92 } // namespace dom 93 } // namespace mozilla 94 95 #endif // mozilla_dom_ValidityState_h 96