Esempio n. 1
0
void HTMLTextAreaElement::parseAttribute(const QualifiedName& name,
                                         const AtomicString& oldValue,
                                         const AtomicString& value) {
  if (name == rowsAttr) {
    unsigned rows = 0;
    if (value.isEmpty() || !parseHTMLNonNegativeInteger(value, rows) ||
        rows <= 0)
      rows = defaultRows;
    if (m_rows != rows) {
      m_rows = rows;
      if (layoutObject())
        layoutObject()
            ->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(
                LayoutInvalidationReason::AttributeChanged);
    }
  } else if (name == colsAttr) {
    unsigned cols = 0;
    if (value.isEmpty() || !parseHTMLNonNegativeInteger(value, cols) ||
        cols <= 0)
      cols = defaultCols;
    if (m_cols != cols) {
      m_cols = cols;
      if (LayoutObject* layoutObject = this->layoutObject())
        layoutObject->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(
            LayoutInvalidationReason::AttributeChanged);
    }
  } else if (name == wrapAttr) {
    // The virtual/physical values were a Netscape extension of HTML 3.0, now
    // deprecated.  The soft/hard /off values are a recommendation for HTML 4
    // extension by IE and NS 4.
    WrapMethod wrap;
    if (equalIgnoringCase(value, "physical") ||
        equalIgnoringCase(value, "hard") || equalIgnoringCase(value, "on"))
      wrap = HardWrap;
    else if (equalIgnoringCase(value, "off"))
      wrap = NoWrap;
    else
      wrap = SoftWrap;
    if (wrap != m_wrap) {
      m_wrap = wrap;
      if (LayoutObject* layoutObject = this->layoutObject())
        layoutObject->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(
            LayoutInvalidationReason::AttributeChanged);
    }
  } else if (name == accesskeyAttr) {
    // ignore for the moment
  } else if (name == maxlengthAttr) {
    UseCounter::count(document(), UseCounter::TextAreaMaxLength);
    setNeedsValidityCheck();
  } else if (name == minlengthAttr) {
    UseCounter::count(document(), UseCounter::TextAreaMinLength);
    setNeedsValidityCheck();
  } else {
    HTMLTextFormControlElement::parseAttribute(name, oldValue, value);
  }
}
unsigned HTMLElement::parseBorderWidthAttribute(const AtomicString& value) const
{
    unsigned borderWidth = 0;
    if (value.isEmpty() || !parseHTMLNonNegativeInteger(value, borderWidth)) {
        if (hasTagName(tableTag) && !value.isNull())
            return 1;
    }
    return borderWidth;
}