DXR will be turned off on Tuesday, December 29th. It will redirect to Searchfox.
See the announcement on Discourse.

DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Implementation

Mercurial (c68fe15a81fc)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* -*- 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/. */
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef nsIConstraintValidition_h___
#define nsIConstraintValidition_h___

#include "nsISupports.h"
#include "nsISupports.h"
#include "nsString.h"

namespace mozilla {
class ErrorResult;
namespace dom {
namespace dom {
class ValidityState;
}  // namespace dom
}  // namespace mozilla

#define NS_ICONSTRAINTVALIDATION_IID                 \
#define NS_ICONSTRAINTVALIDATION_IID                 \
  {                                                  \
    0x983829da, 0x1aaf, 0x449c, {                    \
      0xa3, 0x06, 0x85, 0xd4, 0xf0, 0x31, 0x1c, 0xf6 \
    }                                                \
  }
  }

/**
 * This interface is for form elements implementing the validity constraint API.
 * This interface is for form elements implementing the validity constraint API.
 * See: http://dev.w3.org/html5/spec/forms.html#the-constraint-validation-api
 *
 * This interface has to be implemented by all elements implementing the API
 * and only them.
 */
 */
class nsIConstraintValidation : public nsISupports {
 public:
  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICONSTRAINTVALIDATION_IID);


  friend class mozilla::dom::ValidityState;

  static const uint16_t sContentSpecifiedMaxLengthMessage;

  virtual ~nsIConstraintValidation();
  virtual ~nsIConstraintValidation();

  bool IsValid() const { return mValidityBitField == 0; }

  bool IsCandidateForConstraintValidation() const {
    return !mBarredFromConstraintValidation;
    return !mBarredFromConstraintValidation;
  }

  void GetValidationMessage(nsAString& aValidationMessage,
                            mozilla::ErrorResult& aError);


  enum ValidityStateType {
    VALIDITY_STATE_VALUE_MISSING = 0x1 << 0,
    VALIDITY_STATE_TYPE_MISMATCH = 0x1 << 1,
    VALIDITY_STATE_PATTERN_MISMATCH = 0x1 << 2,
    VALIDITY_STATE_TOO_LONG = 0x1 << 3,
    VALIDITY_STATE_TOO_LONG = 0x1 << 3,
    VALIDITY_STATE_TOO_SHORT = 0x1 << 4,
    VALIDITY_STATE_RANGE_UNDERFLOW = 0x1 << 5,
    VALIDITY_STATE_RANGE_OVERFLOW = 0x1 << 6,
    VALIDITY_STATE_STEP_MISMATCH = 0x1 << 7,
    VALIDITY_STATE_BAD_INPUT = 0x1 << 8,
    VALIDITY_STATE_BAD_INPUT = 0x1 << 8,
    VALIDITY_STATE_CUSTOM_ERROR = 0x1 << 9,
  };

  void SetValidityState(ValidityStateType aState, bool aValue);


  // Web IDL binding methods
  bool WillValidate() const { return IsCandidateForConstraintValidation(); }
  mozilla::dom::ValidityState* Validity();
  bool CheckValidity();
  bool CheckValidity();
  bool ReportValidity();

 protected:
  // You can't instantiate an object from that class.
  nsIConstraintValidation();
  nsIConstraintValidation();

  nsresult CheckValidity(bool* aValidity);
  void SetCustomValidity(const nsAString& aError);

  bool GetValidityState(ValidityStateType aState) const {
  bool GetValidityState(ValidityStateType aState) const {
    return mValidityBitField & aState;
  }

  void SetBarredFromConstraintValidation(bool aBarred);


  virtual nsresult GetValidationMessage(nsAString& aValidationMessage,
                                        ValidityStateType aType) {
    return NS_OK;
  }


 protected:
  /**
  /**
   * A pointer to the ValidityState object.
   */
  RefPtr<mozilla::dom::ValidityState> mValidity;

 private:
 private:
  /**
   * A bitfield representing the current validity state of the element.
   * Each bit represent an error. All bits to zero means the element is valid.
   */
  int16_t mValidityBitField;
  int16_t mValidityBitField;

  /**
   * Keeps track whether the element is barred from constraint validation.
   */
  bool mBarredFromConstraintValidation;
  bool mBarredFromConstraintValidation;

  /**
   * The string representing the custom error.
   */
  nsString mCustomValidity;
  nsString mCustomValidity;
};

NS_DEFINE_STATIC_IID_ACCESSOR(nsIConstraintValidation,
                              NS_ICONSTRAINTVALIDATION_IID)


#endif  // nsIConstraintValidation_h___