String CSSProperty::cssText() const { StringBuilder result; result.append(cssName()); result.appendLiteral(": "); result.append(m_value->cssText()); if (isImportant()) result.appendLiteral(" !important"); result.append(';'); return result.toString(); }
PRBool nsCSSTextAttr::Get(nsACString& aName, nsAString& aValue) { if (!mStyleDecl) return PR_FALSE; NS_ConvertASCIItoUTF16 cssName(gCSSTextAttrsMap[mIndex].mCSSName); nsresult rv = mStyleDecl->GetPropertyValue(cssName, aValue); if (NS_FAILED(rv)) return PR_FALSE; // Don't expose text attribute if corresponding CSS value on the element // equals to CSS value on the root element and we don't want to include // default values. if (!mIncludeDefAttrValue) { if (!mDefStyleDecl) return PR_FALSE; nsAutoString defValue; mDefStyleDecl->GetPropertyValue(cssName, defValue); if (defValue == aValue) return PR_FALSE; } // Don't expose text attribute if its required specific CSS value isn't // matched with the CSS value we got. const char *cssValue = gCSSTextAttrsMap[mIndex].mCSSValue; if (cssValue != kAnyValue && !aValue.EqualsASCII(cssValue)) return PR_FALSE; // Get the name of text attribute. if (gCSSTextAttrsMap[mIndex].mAttrName != kCopyName) aName = gCSSTextAttrsMap[mIndex].mAttrName; else aName = gCSSTextAttrsMap[mIndex].mCSSName; // Get the value of text attribute. const char *attrValue = gCSSTextAttrsMap[mIndex].mAttrValue; if (attrValue != kCopyValue) AppendASCIItoUTF16(attrValue, aValue); return PR_TRUE; }
bool nsCSSTextAttr::GetValueFor(nsIContent *aContent, nsAutoString *aValue) { nsCOMPtr<nsIDOMCSSStyleDeclaration> currStyleDecl = nsCoreUtils::GetComputedStyleDeclaration(EmptyString(), aContent); if (!currStyleDecl) return false; NS_ConvertASCIItoUTF16 cssName(gCSSTextAttrsMap[mIndex].mCSSName); nsresult rv = currStyleDecl->GetPropertyValue(cssName, *aValue); if (NS_FAILED(rv)) return true; const char *cssValue = gCSSTextAttrsMap[mIndex].mCSSValue; if (cssValue != kAnyValue && !aValue->EqualsASCII(cssValue)) return false; return true; }
PRBool nsCSSTextAttr::GetValueFor(nsIDOMElement *aElm, nsAutoString *aValue) { nsCOMPtr<nsIDOMCSSStyleDeclaration> currStyleDecl; nsCoreUtils::GetComputedStyleDeclaration(EmptyString(), aElm, getter_AddRefs(currStyleDecl)); if (!currStyleDecl) return PR_FALSE; NS_ConvertASCIItoUTF16 cssName(gCSSTextAttrsMap[mIndex].mCSSName); nsresult rv = currStyleDecl->GetPropertyValue(cssName, *aValue); if (NS_FAILED(rv)) return PR_TRUE; const char *cssValue = gCSSTextAttrsMap[mIndex].mCSSValue; if (cssValue != kAnyValue && !aValue->EqualsASCII(cssValue)) return PR_FALSE; return PR_TRUE; }
PRBool nsCSSTextAttr::Equal(nsIDOMElement *aElm) { if (!aElm || !mStyleDecl) return PR_FALSE; nsCOMPtr<nsIDOMCSSStyleDeclaration> currStyleDecl; nsCoreUtils::GetComputedStyleDeclaration(EmptyString(), aElm, getter_AddRefs(currStyleDecl)); if (!currStyleDecl) return PR_FALSE; NS_ConvertASCIItoUTF16 cssName(gCSSTextAttrsMap[mIndex].mCSSName); nsAutoString currValue; nsresult rv = currStyleDecl->GetPropertyValue(cssName, currValue); if (NS_FAILED(rv)) return PR_FALSE; nsAutoString value; rv = mStyleDecl->GetPropertyValue(cssName, value); return NS_SUCCEEDED(rv) && value == currValue; }