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; }