PRBool nsHTMLTableSectionElement::ParseAttribute(PRInt32 aNamespaceID, nsIAtom* aAttribute, const nsAString& aValue, nsAttrValue& aResult) { if (aNamespaceID == kNameSpaceID_None) { /* ignore these attributes, stored simply as strings ch */ if (aAttribute == nsGkAtoms::charoff) { return aResult.ParseIntWithBounds(aValue, 0); } if (aAttribute == nsGkAtoms::height) { return aResult.ParseSpecialIntValue(aValue, PR_TRUE); } if (aAttribute == nsGkAtoms::align) { return ParseTableCellHAlignValue(aValue, aResult); } if (aAttribute == nsGkAtoms::bgcolor) { return aResult.ParseColor(aValue, GetOwnerDoc()); } if (aAttribute == nsGkAtoms::valign) { return ParseTableVAlignValue(aValue, aResult); } } return nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue, aResult); }
PRBool nsHTMLTableColElement::ParseAttribute(nsIAtom* aAttribute, const nsAString& aValue, nsAttrValue& aResult) { /* ignore these attributes, stored simply as strings ch */ if (aAttribute == nsHTMLAtoms::charoff) { return aResult.ParseSpecialIntValue(aValue, PR_TRUE, PR_FALSE); } if (aAttribute == nsHTMLAtoms::span) { /* protection from unrealistic large colspan values */ return aResult.ParseIntWithBounds(aValue, 1, MAX_COLSPAN); } if (aAttribute == nsHTMLAtoms::width) { return aResult.ParseSpecialIntValue(aValue, PR_TRUE, PR_TRUE); } if (aAttribute == nsHTMLAtoms::align) { return ParseTableCellHAlignValue(aValue, aResult); } if (aAttribute == nsHTMLAtoms::valign) { return ParseTableVAlignValue(aValue, aResult); } return nsGenericHTMLElement::ParseAttribute(aAttribute, aValue, aResult); }
bool HTMLTableRowElement::ParseAttribute(int32_t aNamespaceID, nsIAtom* aAttribute, const nsAString& aValue, nsAttrValue& aResult) { /* * ignore these attributes, stored simply as strings * * ch */ if (aNamespaceID == kNameSpaceID_None) { if (aAttribute == nsGkAtoms::charoff) { return aResult.ParseIntWithBounds(aValue, 0); } if (aAttribute == nsGkAtoms::height) { return aResult.ParseSpecialIntValue(aValue); } if (aAttribute == nsGkAtoms::width) { return aResult.ParseSpecialIntValue(aValue); } if (aAttribute == nsGkAtoms::align) { return ParseTableCellHAlignValue(aValue, aResult); } if (aAttribute == nsGkAtoms::bgcolor) { return aResult.ParseColor(aValue); } if (aAttribute == nsGkAtoms::valign) { return ParseTableVAlignValue(aValue, aResult); } } return nsGenericHTMLElement::ParseBackgroundAttribute(aNamespaceID, aAttribute, aValue, aResult) || nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue, aResult); }
bool HTMLTableCellElement::ParseAttribute(int32_t aNamespaceID, nsIAtom* aAttribute, const nsAString& aValue, nsAttrValue& aResult) { if (aNamespaceID == kNameSpaceID_None) { /* ignore these attributes, stored simply as strings abbr, axis, ch, headers */ if (aAttribute == nsGkAtoms::charoff) { /* attributes that resolve to integers with a min of 0 */ return aResult.ParseIntWithBounds(aValue, 0); } if (aAttribute == nsGkAtoms::colspan) { bool res = aResult.ParseIntWithBounds(aValue, -1); if (res) { int32_t val = aResult.GetIntegerValue(); // reset large colspan values as IE and opera do // quirks mode does not honor the special html 4 value of 0 if (val > MAX_COLSPAN || val < 0 || (0 == val && InNavQuirksMode(OwnerDoc()))) { aResult.SetTo(1); } } return res; } if (aAttribute == nsGkAtoms::rowspan) { bool res = aResult.ParseIntWithBounds(aValue, -1, MAX_ROWSPAN); if (res) { int32_t val = aResult.GetIntegerValue(); // quirks mode does not honor the special html 4 value of 0 if (val < 0 || (0 == val && InNavQuirksMode(OwnerDoc()))) { aResult.SetTo(1); } } return res; } if (aAttribute == nsGkAtoms::height) { return aResult.ParseSpecialIntValue(aValue); } if (aAttribute == nsGkAtoms::width) { return aResult.ParseSpecialIntValue(aValue); } if (aAttribute == nsGkAtoms::align) { return ParseTableCellHAlignValue(aValue, aResult); } if (aAttribute == nsGkAtoms::bgcolor) { return aResult.ParseColor(aValue); } if (aAttribute == nsGkAtoms::scope) { return aResult.ParseEnumValue(aValue, kCellScopeTable, false); } if (aAttribute == nsGkAtoms::valign) { return ParseTableVAlignValue(aValue, aResult); } } return nsGenericHTMLElement::ParseBackgroundAttribute(aNamespaceID, aAttribute, aValue, aResult) || nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue, aResult); }