void
nsIConstraintValidation::SetBarredFromConstraintValidation(bool aBarred)
{
  bool previousBarred = mBarredFromConstraintValidation;

  mBarredFromConstraintValidation = aBarred;

  // Inform the form and fieldset elements if our status regarding constraint
  // validation is going to change.
  if (!IsValid() && previousBarred != mBarredFromConstraintValidation) {
    nsCOMPtr<nsIFormControl> formCtrl = do_QueryInterface(this);
    NS_ASSERTION(formCtrl, "This interface should be used by form elements!");

    // If the element is going to be barred from constraint validation, we can
    // inform the form and fieldset that we are now valid. Otherwise, we are now
    // invalid.
    HTMLFormElement* form =
      static_cast<HTMLFormElement*>(formCtrl->GetFormElement());
    if (form) {
      form->UpdateValidity(aBarred);
    }
    HTMLFieldSetElement* fieldSet = formCtrl->GetFieldSet();
    if (fieldSet) {
      fieldSet->UpdateValidity(aBarred);
    }
  }
}
Example #2
0
 static v8::Handle<v8::Value> setCustomValidityCallback(const v8::Arguments& args) {
   INC_STATS("DOM.HTMLFieldSetElement.setCustomValidity");
   HTMLFieldSetElement* imp = V8HTMLFieldSetElement::toNative(args.Holder());
   V8Parameter<WithUndefinedOrNullCheck> error = args[0];
   imp->setCustomValidity(error);
   return v8::Handle<v8::Value>();
 }
void
nsIConstraintValidation::SetValidityState(ValidityStateType aState,
                                          bool aValue)
{
  bool previousValidity = IsValid();

  if (aValue) {
    mValidityBitField |= aState;
  } else {
    mValidityBitField &= ~aState;
  }

  // Inform the form and fieldset elements if our validity has changed.
  if (previousValidity != IsValid() && IsCandidateForConstraintValidation()) {
    nsCOMPtr<nsIFormControl> formCtrl = do_QueryInterface(this);
    NS_ASSERTION(formCtrl, "This interface should be used by form elements!");

    HTMLFormElement* form =
      static_cast<HTMLFormElement*>(formCtrl->GetFormElement());
    if (form) {
      form->UpdateValidity(IsValid());
    }
    HTMLFieldSetElement* fieldSet = formCtrl->GetFieldSet();
      if (fieldSet) {
      fieldSet->UpdateValidity(IsValid());
    }
  }
}
void HTMLFormControlElement::fieldSetAncestorsSetNeedsValidityCheck(Node* node)
{
    if (!node)
        return;
    for (HTMLFieldSetElement* fieldSet = Traversal<HTMLFieldSetElement>::firstAncestorOrSelf(*node); fieldSet; fieldSet = Traversal<HTMLFieldSetElement>::firstAncestor(*fieldSet)) {
        fieldSet->pseudoStateChanged(CSSSelector::PseudoValid);
        fieldSet->pseudoStateChanged(CSSSelector::PseudoInvalid);
    }
}
Example #5
0
static v8::Handle<v8::Value> setCustomValidityCallback(const v8::Arguments& args)
{
    INC_STATS("DOM.HTMLFieldSetElement.setCustomValidity");
    if (args.Length() < 1)
        return throwError("Not enough arguments", V8Proxy::TypeError);
    HTMLFieldSetElement* imp = V8HTMLFieldSetElement::toNative(args.Holder());
    STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter<WithUndefinedOrNullCheck>, error, MAYBE_MISSING_PARAMETER(args, 0, MissingIsUndefined));
    imp->setCustomValidity(error);
    return v8::Handle<v8::Value>();
}
void HTMLFormControlElement::updateAncestorDisabledState() const
{
    HTMLFieldSetElement* fieldSetAncestor = 0;
    ContainerNode* legendAncestor = 0;
    for (ContainerNode* ancestor = parentNode(); ancestor; ancestor = ancestor->parentNode()) {
        if (!legendAncestor && ancestor->hasTagName(legendTag))
            legendAncestor = ancestor;
        if (ancestor->hasTagName(fieldsetTag)) {
            fieldSetAncestor = toHTMLFieldSetElement(ancestor);
            break;
        }
    }
    m_ancestorDisabledState = (fieldSetAncestor && fieldSetAncestor->isDisabledFormControl() && !(legendAncestor && legendAncestor == fieldSetAncestor->legend())) ? AncestorDisabledStateDisabled : AncestorDisabledStateEnabled;
}
void HTMLFormControlElement::updateAncestorDisabledState() const
{
    HTMLFieldSetElement* fieldSetAncestor = 0;
    ContainerNode* legendAncestor = 0;
    for (HTMLElement* ancestor = Traversal<HTMLElement>::firstAncestor(*this); ancestor; ancestor = Traversal<HTMLElement>::firstAncestor(*ancestor)) {
        if (!legendAncestor && isHTMLLegendElement(*ancestor))
            legendAncestor = ancestor;
        if (isHTMLFieldSetElement(*ancestor)) {
            fieldSetAncestor = toHTMLFieldSetElement(ancestor);
            break;
        }
    }
    m_ancestorDisabledState = (fieldSetAncestor && fieldSetAncestor->isDisabledFormControl() && !(legendAncestor && legendAncestor == fieldSetAncestor->legend())) ? AncestorDisabledStateDisabled : AncestorDisabledStateEnabled;
}
Example #8
0
 static v8::Handle<v8::Value> checkValidityCallback(const v8::Arguments& args) {
   INC_STATS("DOM.HTMLFieldSetElement.checkValidity");
   HTMLFieldSetElement* imp = V8HTMLFieldSetElement::toNative(args.Holder());
   return v8Boolean(imp->checkValidity());
 }
Example #9
0
 static v8::Handle<v8::Value> validationMessageAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) {
   INC_STATS("DOM.HTMLFieldSetElement.validationMessage._get");
   HTMLFieldSetElement* imp = V8HTMLFieldSetElement::toNative(info.Holder());
   return v8String(imp->validationMessage());
 }
Example #10
0
 static v8::Handle<v8::Value> willValidateAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) {
   INC_STATS("DOM.HTMLFieldSetElement.willValidate._get");
   HTMLFieldSetElement* imp = V8HTMLFieldSetElement::toNative(info.Holder());
   return v8Boolean(imp->willValidate());
 }
Example #11
0
 static v8::Handle<v8::Value> formAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) {
   INC_STATS("DOM.HTMLFieldSetElement.form._get");
   HTMLFieldSetElement* imp = V8HTMLFieldSetElement::toNative(info.Holder());
   return toV8(imp->form());
 }