Loading layout/style/nsCSSDeclaration.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -397,9 +397,10 @@ nsCSSDeclaration::AppendCSSValueToString(nsCSSProperty aProperty, } } else if (eCSSUnit_URL == unit || eCSSUnit_Image == unit) { aResult.Append(NS_LITERAL_STRING("url(") + nsDependentString(aValue.GetOriginalURLValue()) + NS_LITERAL_STRING(")")); aResult.Append(NS_LITERAL_STRING("url(")); nsStyleUtil::AppendEscapedCSSString( nsDependentString(aValue.GetOriginalURLValue()), aResult); aResult.Append(NS_LITERAL_STRING(")")); } else if (eCSSUnit_Percent == unit) { nsAutoString tmpStr; Loading layout/style/nsCSSRules.cpp +8 −9 Original line number Diff line number Diff line Loading @@ -571,7 +571,7 @@ NS_IMETHODIMP CSSImportRuleImpl::GetCssText(nsAString& aCssText) { aCssText.AssignLiteral("@import url("); aCssText.Append(mURLSpec); nsStyleUtil::AppendEscapedCSSString(mURLSpec, aCssText); aCssText.Append(NS_LITERAL_STRING(")")); if (mMedia) { nsAutoString mediaText; Loading Loading @@ -1162,19 +1162,18 @@ nsCSSDocumentRule::GetCssText(nsAString& aCssText) for (URL *url = mURLs; url; url = url->next) { switch (url->func) { case eURL: aCssText.AppendLiteral("url(\""); aCssText.AppendLiteral("url("); break; case eURLPrefix: aCssText.AppendLiteral("url-prefix(\""); aCssText.AppendLiteral("url-prefix("); break; case eDomain: aCssText.AppendLiteral("domain(\""); aCssText.AppendLiteral("domain("); break; } nsCAutoString escapedURL(url->url); escapedURL.ReplaceSubstring("\"", "\\\""); // escape quotes AppendUTF8toUTF16(escapedURL, aCssText); aCssText.AppendLiteral("\"), "); nsStyleUtil::AppendEscapedCSSString(NS_ConvertUTF8toUTF16(url->url), aCssText); aCssText.AppendLiteral("), "); } aCssText.Cut(aCssText.Length() - 2, 1); // remove last , Loading Loading @@ -1447,7 +1446,7 @@ CSSNameSpaceRuleImpl::GetCssText(nsAString& aCssText) aCssText.AppendLiteral(" "); } aCssText.AppendLiteral("url("); aCssText.Append(mURLSpec); nsStyleUtil::AppendEscapedCSSString(mURLSpec, aCssText); aCssText.Append(NS_LITERAL_STRING(");")); return NS_OK; } Loading layout/style/nsROCSSPrimitiveValue.cpp +8 −43 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ #include "nsXPIDLString.h" #include "nsCRT.h" #include "nsPresContext.h" #include "nsStyleUtil.h" nsROCSSPrimitiveValue::nsROCSSPrimitiveValue(PRInt32 aAppUnitsPerInch) : mType(CSS_PX), mAppUnitsPerInch(aAppUnitsPerInch) Loading @@ -59,44 +60,6 @@ nsROCSSPrimitiveValue::~nsROCSSPrimitiveValue() Reset(); } void nsROCSSPrimitiveValue::GetEscapedURI(nsIURI *aURI, PRUnichar **aReturn) { nsCAutoString specUTF8; aURI->GetSpec(specUTF8); NS_ConvertUTF8toUTF16 spec(specUTF8); PRUint16 length = spec.Length(); PRUnichar *escaped = (PRUnichar *)nsMemory::Alloc(length * 2 * sizeof(PRUnichar) + sizeof(PRUnichar('\0'))); if (escaped) { PRUnichar *ptr = escaped; for (PRUint16 i = 0; i < length; ++i) { switch (spec[i]) { case ' ' : // space case '\t': // tab case '(' : // opening parenthesis case ')' : // closing parenthesis case '\'': // single quote case '"' : // double quote case ',' : // comma case '\\': // backslash // We have one of the above special characters. // Prepend it with a backslash. *ptr++ = '\\'; break; default: break; } *ptr++ = spec[i]; } *ptr = 0; } *aReturn = escaped; } NS_IMPL_ADDREF(nsROCSSPrimitiveValue) NS_IMPL_RELEASE(nsROCSSPrimitiveValue) Loading Loading @@ -142,12 +105,14 @@ nsROCSSPrimitiveValue::GetCssText(nsAString& aCssText) } case CSS_URI : { nsXPIDLString uri; if (mValue.mURI) { GetEscapedURI(mValue.mURI, getter_Copies(uri)); tmpStr.Assign(NS_LITERAL_STRING("url(") + uri + NS_LITERAL_STRING(")")); nsCAutoString specUTF8; mValue.mURI->GetSpec(specUTF8); tmpStr.AssignLiteral("url("); nsStyleUtil::AppendEscapedCSSString(NS_ConvertUTF8toUTF16(specUTF8), tmpStr); tmpStr.AppendLiteral(")"); } else { // XXXldb Any better ideas? It's good to have something that // doesn't parse so that things round-trip "correctly". Loading layout/style/nsROCSSPrimitiveValue.h +0 −2 Original line number Diff line number Diff line Loading @@ -209,8 +209,6 @@ public: } private: void GetEscapedURI(nsIURI *aURI, PRUnichar **aReturn); PRUint16 mType; union { Loading layout/style/test/Makefile.in +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ css_properties.js: host_ListCSSProperties$(HOST_BIN_SUFFIX) css_properties_like_ GARBAGE += css_properties.js _TEST_FILES = test_acid3_test46.html \ test_at_rule_parse_serialize.html \ test_bug73586.html \ test_bug74880.html \ test_bug98997.html \ Loading Loading
layout/style/nsCSSDeclaration.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -397,9 +397,10 @@ nsCSSDeclaration::AppendCSSValueToString(nsCSSProperty aProperty, } } else if (eCSSUnit_URL == unit || eCSSUnit_Image == unit) { aResult.Append(NS_LITERAL_STRING("url(") + nsDependentString(aValue.GetOriginalURLValue()) + NS_LITERAL_STRING(")")); aResult.Append(NS_LITERAL_STRING("url(")); nsStyleUtil::AppendEscapedCSSString( nsDependentString(aValue.GetOriginalURLValue()), aResult); aResult.Append(NS_LITERAL_STRING(")")); } else if (eCSSUnit_Percent == unit) { nsAutoString tmpStr; Loading
layout/style/nsCSSRules.cpp +8 −9 Original line number Diff line number Diff line Loading @@ -571,7 +571,7 @@ NS_IMETHODIMP CSSImportRuleImpl::GetCssText(nsAString& aCssText) { aCssText.AssignLiteral("@import url("); aCssText.Append(mURLSpec); nsStyleUtil::AppendEscapedCSSString(mURLSpec, aCssText); aCssText.Append(NS_LITERAL_STRING(")")); if (mMedia) { nsAutoString mediaText; Loading Loading @@ -1162,19 +1162,18 @@ nsCSSDocumentRule::GetCssText(nsAString& aCssText) for (URL *url = mURLs; url; url = url->next) { switch (url->func) { case eURL: aCssText.AppendLiteral("url(\""); aCssText.AppendLiteral("url("); break; case eURLPrefix: aCssText.AppendLiteral("url-prefix(\""); aCssText.AppendLiteral("url-prefix("); break; case eDomain: aCssText.AppendLiteral("domain(\""); aCssText.AppendLiteral("domain("); break; } nsCAutoString escapedURL(url->url); escapedURL.ReplaceSubstring("\"", "\\\""); // escape quotes AppendUTF8toUTF16(escapedURL, aCssText); aCssText.AppendLiteral("\"), "); nsStyleUtil::AppendEscapedCSSString(NS_ConvertUTF8toUTF16(url->url), aCssText); aCssText.AppendLiteral("), "); } aCssText.Cut(aCssText.Length() - 2, 1); // remove last , Loading Loading @@ -1447,7 +1446,7 @@ CSSNameSpaceRuleImpl::GetCssText(nsAString& aCssText) aCssText.AppendLiteral(" "); } aCssText.AppendLiteral("url("); aCssText.Append(mURLSpec); nsStyleUtil::AppendEscapedCSSString(mURLSpec, aCssText); aCssText.Append(NS_LITERAL_STRING(");")); return NS_OK; } Loading
layout/style/nsROCSSPrimitiveValue.cpp +8 −43 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ #include "nsXPIDLString.h" #include "nsCRT.h" #include "nsPresContext.h" #include "nsStyleUtil.h" nsROCSSPrimitiveValue::nsROCSSPrimitiveValue(PRInt32 aAppUnitsPerInch) : mType(CSS_PX), mAppUnitsPerInch(aAppUnitsPerInch) Loading @@ -59,44 +60,6 @@ nsROCSSPrimitiveValue::~nsROCSSPrimitiveValue() Reset(); } void nsROCSSPrimitiveValue::GetEscapedURI(nsIURI *aURI, PRUnichar **aReturn) { nsCAutoString specUTF8; aURI->GetSpec(specUTF8); NS_ConvertUTF8toUTF16 spec(specUTF8); PRUint16 length = spec.Length(); PRUnichar *escaped = (PRUnichar *)nsMemory::Alloc(length * 2 * sizeof(PRUnichar) + sizeof(PRUnichar('\0'))); if (escaped) { PRUnichar *ptr = escaped; for (PRUint16 i = 0; i < length; ++i) { switch (spec[i]) { case ' ' : // space case '\t': // tab case '(' : // opening parenthesis case ')' : // closing parenthesis case '\'': // single quote case '"' : // double quote case ',' : // comma case '\\': // backslash // We have one of the above special characters. // Prepend it with a backslash. *ptr++ = '\\'; break; default: break; } *ptr++ = spec[i]; } *ptr = 0; } *aReturn = escaped; } NS_IMPL_ADDREF(nsROCSSPrimitiveValue) NS_IMPL_RELEASE(nsROCSSPrimitiveValue) Loading Loading @@ -142,12 +105,14 @@ nsROCSSPrimitiveValue::GetCssText(nsAString& aCssText) } case CSS_URI : { nsXPIDLString uri; if (mValue.mURI) { GetEscapedURI(mValue.mURI, getter_Copies(uri)); tmpStr.Assign(NS_LITERAL_STRING("url(") + uri + NS_LITERAL_STRING(")")); nsCAutoString specUTF8; mValue.mURI->GetSpec(specUTF8); tmpStr.AssignLiteral("url("); nsStyleUtil::AppendEscapedCSSString(NS_ConvertUTF8toUTF16(specUTF8), tmpStr); tmpStr.AppendLiteral(")"); } else { // XXXldb Any better ideas? It's good to have something that // doesn't parse so that things round-trip "correctly". Loading
layout/style/nsROCSSPrimitiveValue.h +0 −2 Original line number Diff line number Diff line Loading @@ -209,8 +209,6 @@ public: } private: void GetEscapedURI(nsIURI *aURI, PRUnichar **aReturn); PRUint16 mType; union { Loading
layout/style/test/Makefile.in +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ css_properties.js: host_ListCSSProperties$(HOST_BIN_SUFFIX) css_properties_like_ GARBAGE += css_properties.js _TEST_FILES = test_acid3_test46.html \ test_at_rule_parse_serialize.html \ test_bug73586.html \ test_bug74880.html \ test_bug98997.html \ Loading