diff --git a/mozilla/content/html/style/src/nsCSSDeclaration.cpp b/mozilla/content/html/style/src/nsCSSDeclaration.cpp index bd4f6f54489..18a2f3b943b 100644 --- a/mozilla/content/html/style/src/nsCSSDeclaration.cpp +++ b/mozilla/content/html/style/src/nsCSSDeclaration.cpp @@ -4049,12 +4049,18 @@ nsCSSDeclaration::AppendComment(const nsAString& aComment) } nsresult -nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) +nsCSSDeclaration::GetValueOrImportantValue(nsCSSProperty aProperty, nsCSSValue& aValue) { PRBool isImportant = GetValueIsImportant(aProperty); if (isImportant) { return mImportant->GetValue(aProperty, aValue); } + return GetValue(aProperty, aValue); +} + +nsresult +nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) +{ nsresult result = NS_OK; switch (aProperty) { @@ -4797,6 +4803,13 @@ PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, nsAString& return AppendValueToString(aProperty, value, aResult); } +PRBool nsCSSDeclaration::AppendValueOrImportantValueToString(nsCSSProperty aProperty, nsAString& aResult) +{ + nsCSSValue value; + GetValueOrImportantValue(aProperty, value); + return AppendValueToString(aProperty, value, aResult); +} + PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, const nsCSSValue& aValue, nsAString& aResult) { nsCSSUnit unit = aValue.GetUnit(); @@ -5406,16 +5419,16 @@ nsCSSDeclaration::AllPropertiesSameValue(PRInt32 aFirst, PRInt32 aSecond, // are > 0; 0 is a flag for "not set". We here are passed the actual // index, which comes from finding the value in the mOrder property array. // Of course, re-getting the mOrder value here is pretty silly. - GetValue((nsCSSProperty)mOrder->ValueAt(aFirst-1), firstValue); - GetValue((nsCSSProperty)mOrder->ValueAt(aSecond-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aFirst-1), firstValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aSecond-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } - GetValue((nsCSSProperty)mOrder->ValueAt(aThird-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aThird-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } - GetValue((nsCSSProperty)mOrder->ValueAt(aFourth-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aFourth-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } @@ -5437,7 +5450,7 @@ nsCSSDeclaration::AppendPropertyAndValueToString(nsCSSProperty aProperty, NS_ASSERTION(aProperty, "null CSS property passed to AppendPropertyAndValueToString."); aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(aProperty)) + NS_LITERAL_STRING(": ")); - AppendValueToString(aProperty, aString); + AppendValueOrImportantValueToString(aProperty, aString); PRBool isImportant = GetValueIsImportant(aProperty); AppendImportanceToString(isImportant, aString); aString.Append(NS_LITERAL_STRING("; ")); @@ -5494,14 +5507,14 @@ nsCSSDeclaration::TryBorderShorthand(nsAString & aString, PRUint32 aPropertiesSe aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(eCSSProperty_border)) + NS_LITERAL_STRING(": ")); - AppendValueToString(eCSSProperty_border_top_width, aString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_width, aString); aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_border_top_style, aString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_style, aString); aString.Append(PRUnichar(' ')); nsAutoString valueString; - AppendValueToString(eCSSProperty_border_top_color, valueString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_color, valueString); if (!valueString.Equals(NS_LITERAL_STRING("-moz-use-text-color"))) { /* don't output this value, it's proprietary Mozilla and */ /* not intended to be exposed ; we can remove it from the */ @@ -5529,13 +5542,13 @@ nsCSSDeclaration::TryBorderSideShorthand(nsAString & aString, aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(aShorthand)) + NS_LITERAL_STRING(":")); aString.Append(PRUnichar(' ')); - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderWidth-1), aString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderWidth-1), aString); aString.Append(PRUnichar(' ')); - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderStyle-1), aString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderStyle-1), aString); nsAutoString valueString; - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderColor-1), valueString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderColor-1), valueString); if (!valueString.Equals(NS_LITERAL_STRING("-moz-use-text-color"))) { aString.Append(NS_LITERAL_STRING(" ")); aString.Append(valueString); @@ -5570,10 +5583,10 @@ nsCSSDeclaration::TryFourSidesShorthand(nsAString & aString, nsCSSProperty bottomProp = (nsCSSProperty)mOrder->ValueAt(aBottom-1); nsCSSProperty leftProp = (nsCSSProperty)mOrder->ValueAt(aLeft-1); nsCSSProperty rightProp = (nsCSSProperty)mOrder->ValueAt(aRight-1); - GetValue(topProp, topValue); - GetValue(bottomProp, bottomValue); - GetValue(leftProp, leftValue); - GetValue(rightProp, rightValue); + GetValueOrImportantValue(topProp, topValue); + GetValueOrImportantValue(bottomProp, bottomValue); + GetValueOrImportantValue(leftProp, leftValue); + GetValueOrImportantValue(rightProp, rightValue); AppendValueToString(topProp, topValue, aString); if (topValue != rightValue || topValue != leftValue || topValue != bottomValue) { aString.Append(PRUnichar(' ')); @@ -5617,19 +5630,19 @@ nsCSSDeclaration::TryBackgroundShorthand(nsAString & aString, + NS_LITERAL_STRING(":")); aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_color, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_color, aString); aBgColor = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_image, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_image, aString); aBgImage = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_repeat, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_repeat, aString); aBgRepeat = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_attachment, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_attachment, aString); aBgAttachment = 0; aString.Append(PRUnichar(' ')); @@ -5645,8 +5658,8 @@ nsCSSDeclaration::UseBackgroundPosition(nsAString & aString, PRInt32 & aBgPositionY) { nsAutoString backgroundXValue, backgroundYValue; - AppendValueToString(eCSSProperty_background_x_position, backgroundXValue); - AppendValueToString(eCSSProperty_background_y_position, backgroundYValue); + AppendValueOrImportantValueToString(eCSSProperty_background_x_position, backgroundXValue); + AppendValueOrImportantValueToString(eCSSProperty_background_y_position, backgroundYValue); aString.Append(backgroundYValue); if (!backgroundXValue.Equals(backgroundYValue, nsCaseInsensitiveStringComparator())) { // the two values are different diff --git a/mozilla/content/html/style/src/nsCSSDeclaration.h b/mozilla/content/html/style/src/nsCSSDeclaration.h index 805eabf4360..9b2ce30da6a 100644 --- a/mozilla/content/html/style/src/nsCSSDeclaration.h +++ b/mozilla/content/html/style/src/nsCSSDeclaration.h @@ -608,8 +608,10 @@ protected: nsresult RemoveProperty(nsCSSProperty aProperty); private: + nsresult GetValueOrImportantValue(nsCSSProperty aProperty, nsCSSValue& aValue); void AppendImportanceToString(PRBool aIsImportant, nsAString& aString); PRBool AppendValueToString(nsCSSProperty aProperty, nsAString& aResult); + PRBool AppendValueOrImportantValueToString(nsCSSProperty aProperty, nsAString& aResult); PRBool AppendValueToString(nsCSSProperty aProperty, const nsCSSValue& aValue, nsAString& aResult); nsCSSDeclaration& operator=(const nsCSSDeclaration& aCopy); PRBool operator==(const nsCSSDeclaration& aCopy) const; diff --git a/mozilla/content/html/style/src/nsCSSStruct.cpp b/mozilla/content/html/style/src/nsCSSStruct.cpp index bd4f6f54489..18a2f3b943b 100644 --- a/mozilla/content/html/style/src/nsCSSStruct.cpp +++ b/mozilla/content/html/style/src/nsCSSStruct.cpp @@ -4049,12 +4049,18 @@ nsCSSDeclaration::AppendComment(const nsAString& aComment) } nsresult -nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) +nsCSSDeclaration::GetValueOrImportantValue(nsCSSProperty aProperty, nsCSSValue& aValue) { PRBool isImportant = GetValueIsImportant(aProperty); if (isImportant) { return mImportant->GetValue(aProperty, aValue); } + return GetValue(aProperty, aValue); +} + +nsresult +nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) +{ nsresult result = NS_OK; switch (aProperty) { @@ -4797,6 +4803,13 @@ PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, nsAString& return AppendValueToString(aProperty, value, aResult); } +PRBool nsCSSDeclaration::AppendValueOrImportantValueToString(nsCSSProperty aProperty, nsAString& aResult) +{ + nsCSSValue value; + GetValueOrImportantValue(aProperty, value); + return AppendValueToString(aProperty, value, aResult); +} + PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, const nsCSSValue& aValue, nsAString& aResult) { nsCSSUnit unit = aValue.GetUnit(); @@ -5406,16 +5419,16 @@ nsCSSDeclaration::AllPropertiesSameValue(PRInt32 aFirst, PRInt32 aSecond, // are > 0; 0 is a flag for "not set". We here are passed the actual // index, which comes from finding the value in the mOrder property array. // Of course, re-getting the mOrder value here is pretty silly. - GetValue((nsCSSProperty)mOrder->ValueAt(aFirst-1), firstValue); - GetValue((nsCSSProperty)mOrder->ValueAt(aSecond-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aFirst-1), firstValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aSecond-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } - GetValue((nsCSSProperty)mOrder->ValueAt(aThird-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aThird-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } - GetValue((nsCSSProperty)mOrder->ValueAt(aFourth-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aFourth-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } @@ -5437,7 +5450,7 @@ nsCSSDeclaration::AppendPropertyAndValueToString(nsCSSProperty aProperty, NS_ASSERTION(aProperty, "null CSS property passed to AppendPropertyAndValueToString."); aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(aProperty)) + NS_LITERAL_STRING(": ")); - AppendValueToString(aProperty, aString); + AppendValueOrImportantValueToString(aProperty, aString); PRBool isImportant = GetValueIsImportant(aProperty); AppendImportanceToString(isImportant, aString); aString.Append(NS_LITERAL_STRING("; ")); @@ -5494,14 +5507,14 @@ nsCSSDeclaration::TryBorderShorthand(nsAString & aString, PRUint32 aPropertiesSe aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(eCSSProperty_border)) + NS_LITERAL_STRING(": ")); - AppendValueToString(eCSSProperty_border_top_width, aString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_width, aString); aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_border_top_style, aString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_style, aString); aString.Append(PRUnichar(' ')); nsAutoString valueString; - AppendValueToString(eCSSProperty_border_top_color, valueString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_color, valueString); if (!valueString.Equals(NS_LITERAL_STRING("-moz-use-text-color"))) { /* don't output this value, it's proprietary Mozilla and */ /* not intended to be exposed ; we can remove it from the */ @@ -5529,13 +5542,13 @@ nsCSSDeclaration::TryBorderSideShorthand(nsAString & aString, aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(aShorthand)) + NS_LITERAL_STRING(":")); aString.Append(PRUnichar(' ')); - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderWidth-1), aString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderWidth-1), aString); aString.Append(PRUnichar(' ')); - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderStyle-1), aString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderStyle-1), aString); nsAutoString valueString; - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderColor-1), valueString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderColor-1), valueString); if (!valueString.Equals(NS_LITERAL_STRING("-moz-use-text-color"))) { aString.Append(NS_LITERAL_STRING(" ")); aString.Append(valueString); @@ -5570,10 +5583,10 @@ nsCSSDeclaration::TryFourSidesShorthand(nsAString & aString, nsCSSProperty bottomProp = (nsCSSProperty)mOrder->ValueAt(aBottom-1); nsCSSProperty leftProp = (nsCSSProperty)mOrder->ValueAt(aLeft-1); nsCSSProperty rightProp = (nsCSSProperty)mOrder->ValueAt(aRight-1); - GetValue(topProp, topValue); - GetValue(bottomProp, bottomValue); - GetValue(leftProp, leftValue); - GetValue(rightProp, rightValue); + GetValueOrImportantValue(topProp, topValue); + GetValueOrImportantValue(bottomProp, bottomValue); + GetValueOrImportantValue(leftProp, leftValue); + GetValueOrImportantValue(rightProp, rightValue); AppendValueToString(topProp, topValue, aString); if (topValue != rightValue || topValue != leftValue || topValue != bottomValue) { aString.Append(PRUnichar(' ')); @@ -5617,19 +5630,19 @@ nsCSSDeclaration::TryBackgroundShorthand(nsAString & aString, + NS_LITERAL_STRING(":")); aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_color, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_color, aString); aBgColor = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_image, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_image, aString); aBgImage = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_repeat, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_repeat, aString); aBgRepeat = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_attachment, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_attachment, aString); aBgAttachment = 0; aString.Append(PRUnichar(' ')); @@ -5645,8 +5658,8 @@ nsCSSDeclaration::UseBackgroundPosition(nsAString & aString, PRInt32 & aBgPositionY) { nsAutoString backgroundXValue, backgroundYValue; - AppendValueToString(eCSSProperty_background_x_position, backgroundXValue); - AppendValueToString(eCSSProperty_background_y_position, backgroundYValue); + AppendValueOrImportantValueToString(eCSSProperty_background_x_position, backgroundXValue); + AppendValueOrImportantValueToString(eCSSProperty_background_y_position, backgroundYValue); aString.Append(backgroundYValue); if (!backgroundXValue.Equals(backgroundYValue, nsCaseInsensitiveStringComparator())) { // the two values are different diff --git a/mozilla/content/html/style/src/nsCSSStruct.h b/mozilla/content/html/style/src/nsCSSStruct.h index 805eabf4360..9b2ce30da6a 100644 --- a/mozilla/content/html/style/src/nsCSSStruct.h +++ b/mozilla/content/html/style/src/nsCSSStruct.h @@ -608,8 +608,10 @@ protected: nsresult RemoveProperty(nsCSSProperty aProperty); private: + nsresult GetValueOrImportantValue(nsCSSProperty aProperty, nsCSSValue& aValue); void AppendImportanceToString(PRBool aIsImportant, nsAString& aString); PRBool AppendValueToString(nsCSSProperty aProperty, nsAString& aResult); + PRBool AppendValueOrImportantValueToString(nsCSSProperty aProperty, nsAString& aResult); PRBool AppendValueToString(nsCSSProperty aProperty, const nsCSSValue& aValue, nsAString& aResult); nsCSSDeclaration& operator=(const nsCSSDeclaration& aCopy); PRBool operator==(const nsCSSDeclaration& aCopy) const; diff --git a/mozilla/layout/style/nsCSSDeclaration.cpp b/mozilla/layout/style/nsCSSDeclaration.cpp index bd4f6f54489..18a2f3b943b 100644 --- a/mozilla/layout/style/nsCSSDeclaration.cpp +++ b/mozilla/layout/style/nsCSSDeclaration.cpp @@ -4049,12 +4049,18 @@ nsCSSDeclaration::AppendComment(const nsAString& aComment) } nsresult -nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) +nsCSSDeclaration::GetValueOrImportantValue(nsCSSProperty aProperty, nsCSSValue& aValue) { PRBool isImportant = GetValueIsImportant(aProperty); if (isImportant) { return mImportant->GetValue(aProperty, aValue); } + return GetValue(aProperty, aValue); +} + +nsresult +nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) +{ nsresult result = NS_OK; switch (aProperty) { @@ -4797,6 +4803,13 @@ PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, nsAString& return AppendValueToString(aProperty, value, aResult); } +PRBool nsCSSDeclaration::AppendValueOrImportantValueToString(nsCSSProperty aProperty, nsAString& aResult) +{ + nsCSSValue value; + GetValueOrImportantValue(aProperty, value); + return AppendValueToString(aProperty, value, aResult); +} + PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, const nsCSSValue& aValue, nsAString& aResult) { nsCSSUnit unit = aValue.GetUnit(); @@ -5406,16 +5419,16 @@ nsCSSDeclaration::AllPropertiesSameValue(PRInt32 aFirst, PRInt32 aSecond, // are > 0; 0 is a flag for "not set". We here are passed the actual // index, which comes from finding the value in the mOrder property array. // Of course, re-getting the mOrder value here is pretty silly. - GetValue((nsCSSProperty)mOrder->ValueAt(aFirst-1), firstValue); - GetValue((nsCSSProperty)mOrder->ValueAt(aSecond-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aFirst-1), firstValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aSecond-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } - GetValue((nsCSSProperty)mOrder->ValueAt(aThird-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aThird-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } - GetValue((nsCSSProperty)mOrder->ValueAt(aFourth-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aFourth-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } @@ -5437,7 +5450,7 @@ nsCSSDeclaration::AppendPropertyAndValueToString(nsCSSProperty aProperty, NS_ASSERTION(aProperty, "null CSS property passed to AppendPropertyAndValueToString."); aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(aProperty)) + NS_LITERAL_STRING(": ")); - AppendValueToString(aProperty, aString); + AppendValueOrImportantValueToString(aProperty, aString); PRBool isImportant = GetValueIsImportant(aProperty); AppendImportanceToString(isImportant, aString); aString.Append(NS_LITERAL_STRING("; ")); @@ -5494,14 +5507,14 @@ nsCSSDeclaration::TryBorderShorthand(nsAString & aString, PRUint32 aPropertiesSe aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(eCSSProperty_border)) + NS_LITERAL_STRING(": ")); - AppendValueToString(eCSSProperty_border_top_width, aString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_width, aString); aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_border_top_style, aString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_style, aString); aString.Append(PRUnichar(' ')); nsAutoString valueString; - AppendValueToString(eCSSProperty_border_top_color, valueString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_color, valueString); if (!valueString.Equals(NS_LITERAL_STRING("-moz-use-text-color"))) { /* don't output this value, it's proprietary Mozilla and */ /* not intended to be exposed ; we can remove it from the */ @@ -5529,13 +5542,13 @@ nsCSSDeclaration::TryBorderSideShorthand(nsAString & aString, aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(aShorthand)) + NS_LITERAL_STRING(":")); aString.Append(PRUnichar(' ')); - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderWidth-1), aString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderWidth-1), aString); aString.Append(PRUnichar(' ')); - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderStyle-1), aString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderStyle-1), aString); nsAutoString valueString; - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderColor-1), valueString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderColor-1), valueString); if (!valueString.Equals(NS_LITERAL_STRING("-moz-use-text-color"))) { aString.Append(NS_LITERAL_STRING(" ")); aString.Append(valueString); @@ -5570,10 +5583,10 @@ nsCSSDeclaration::TryFourSidesShorthand(nsAString & aString, nsCSSProperty bottomProp = (nsCSSProperty)mOrder->ValueAt(aBottom-1); nsCSSProperty leftProp = (nsCSSProperty)mOrder->ValueAt(aLeft-1); nsCSSProperty rightProp = (nsCSSProperty)mOrder->ValueAt(aRight-1); - GetValue(topProp, topValue); - GetValue(bottomProp, bottomValue); - GetValue(leftProp, leftValue); - GetValue(rightProp, rightValue); + GetValueOrImportantValue(topProp, topValue); + GetValueOrImportantValue(bottomProp, bottomValue); + GetValueOrImportantValue(leftProp, leftValue); + GetValueOrImportantValue(rightProp, rightValue); AppendValueToString(topProp, topValue, aString); if (topValue != rightValue || topValue != leftValue || topValue != bottomValue) { aString.Append(PRUnichar(' ')); @@ -5617,19 +5630,19 @@ nsCSSDeclaration::TryBackgroundShorthand(nsAString & aString, + NS_LITERAL_STRING(":")); aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_color, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_color, aString); aBgColor = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_image, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_image, aString); aBgImage = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_repeat, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_repeat, aString); aBgRepeat = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_attachment, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_attachment, aString); aBgAttachment = 0; aString.Append(PRUnichar(' ')); @@ -5645,8 +5658,8 @@ nsCSSDeclaration::UseBackgroundPosition(nsAString & aString, PRInt32 & aBgPositionY) { nsAutoString backgroundXValue, backgroundYValue; - AppendValueToString(eCSSProperty_background_x_position, backgroundXValue); - AppendValueToString(eCSSProperty_background_y_position, backgroundYValue); + AppendValueOrImportantValueToString(eCSSProperty_background_x_position, backgroundXValue); + AppendValueOrImportantValueToString(eCSSProperty_background_y_position, backgroundYValue); aString.Append(backgroundYValue); if (!backgroundXValue.Equals(backgroundYValue, nsCaseInsensitiveStringComparator())) { // the two values are different diff --git a/mozilla/layout/style/nsCSSDeclaration.h b/mozilla/layout/style/nsCSSDeclaration.h index 805eabf4360..9b2ce30da6a 100644 --- a/mozilla/layout/style/nsCSSDeclaration.h +++ b/mozilla/layout/style/nsCSSDeclaration.h @@ -608,8 +608,10 @@ protected: nsresult RemoveProperty(nsCSSProperty aProperty); private: + nsresult GetValueOrImportantValue(nsCSSProperty aProperty, nsCSSValue& aValue); void AppendImportanceToString(PRBool aIsImportant, nsAString& aString); PRBool AppendValueToString(nsCSSProperty aProperty, nsAString& aResult); + PRBool AppendValueOrImportantValueToString(nsCSSProperty aProperty, nsAString& aResult); PRBool AppendValueToString(nsCSSProperty aProperty, const nsCSSValue& aValue, nsAString& aResult); nsCSSDeclaration& operator=(const nsCSSDeclaration& aCopy); PRBool operator==(const nsCSSDeclaration& aCopy) const; diff --git a/mozilla/layout/style/nsCSSStruct.cpp b/mozilla/layout/style/nsCSSStruct.cpp index bd4f6f54489..18a2f3b943b 100644 --- a/mozilla/layout/style/nsCSSStruct.cpp +++ b/mozilla/layout/style/nsCSSStruct.cpp @@ -4049,12 +4049,18 @@ nsCSSDeclaration::AppendComment(const nsAString& aComment) } nsresult -nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) +nsCSSDeclaration::GetValueOrImportantValue(nsCSSProperty aProperty, nsCSSValue& aValue) { PRBool isImportant = GetValueIsImportant(aProperty); if (isImportant) { return mImportant->GetValue(aProperty, aValue); } + return GetValue(aProperty, aValue); +} + +nsresult +nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) +{ nsresult result = NS_OK; switch (aProperty) { @@ -4797,6 +4803,13 @@ PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, nsAString& return AppendValueToString(aProperty, value, aResult); } +PRBool nsCSSDeclaration::AppendValueOrImportantValueToString(nsCSSProperty aProperty, nsAString& aResult) +{ + nsCSSValue value; + GetValueOrImportantValue(aProperty, value); + return AppendValueToString(aProperty, value, aResult); +} + PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, const nsCSSValue& aValue, nsAString& aResult) { nsCSSUnit unit = aValue.GetUnit(); @@ -5406,16 +5419,16 @@ nsCSSDeclaration::AllPropertiesSameValue(PRInt32 aFirst, PRInt32 aSecond, // are > 0; 0 is a flag for "not set". We here are passed the actual // index, which comes from finding the value in the mOrder property array. // Of course, re-getting the mOrder value here is pretty silly. - GetValue((nsCSSProperty)mOrder->ValueAt(aFirst-1), firstValue); - GetValue((nsCSSProperty)mOrder->ValueAt(aSecond-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aFirst-1), firstValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aSecond-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } - GetValue((nsCSSProperty)mOrder->ValueAt(aThird-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aThird-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } - GetValue((nsCSSProperty)mOrder->ValueAt(aFourth-1), otherValue); + GetValueOrImportantValue((nsCSSProperty)mOrder->ValueAt(aFourth-1), otherValue); if (firstValue != otherValue) { return PR_FALSE; } @@ -5437,7 +5450,7 @@ nsCSSDeclaration::AppendPropertyAndValueToString(nsCSSProperty aProperty, NS_ASSERTION(aProperty, "null CSS property passed to AppendPropertyAndValueToString."); aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(aProperty)) + NS_LITERAL_STRING(": ")); - AppendValueToString(aProperty, aString); + AppendValueOrImportantValueToString(aProperty, aString); PRBool isImportant = GetValueIsImportant(aProperty); AppendImportanceToString(isImportant, aString); aString.Append(NS_LITERAL_STRING("; ")); @@ -5494,14 +5507,14 @@ nsCSSDeclaration::TryBorderShorthand(nsAString & aString, PRUint32 aPropertiesSe aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(eCSSProperty_border)) + NS_LITERAL_STRING(": ")); - AppendValueToString(eCSSProperty_border_top_width, aString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_width, aString); aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_border_top_style, aString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_style, aString); aString.Append(PRUnichar(' ')); nsAutoString valueString; - AppendValueToString(eCSSProperty_border_top_color, valueString); + AppendValueOrImportantValueToString(eCSSProperty_border_top_color, valueString); if (!valueString.Equals(NS_LITERAL_STRING("-moz-use-text-color"))) { /* don't output this value, it's proprietary Mozilla and */ /* not intended to be exposed ; we can remove it from the */ @@ -5529,13 +5542,13 @@ nsCSSDeclaration::TryBorderSideShorthand(nsAString & aString, aString.Append(NS_ConvertASCIItoUCS2(nsCSSProps::GetStringValue(aShorthand)) + NS_LITERAL_STRING(":")); aString.Append(PRUnichar(' ')); - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderWidth-1), aString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderWidth-1), aString); aString.Append(PRUnichar(' ')); - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderStyle-1), aString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderStyle-1), aString); nsAutoString valueString; - AppendValueToString((nsCSSProperty)mOrder->ValueAt(aBorderColor-1), valueString); + AppendValueOrImportantValueToString((nsCSSProperty)mOrder->ValueAt(aBorderColor-1), valueString); if (!valueString.Equals(NS_LITERAL_STRING("-moz-use-text-color"))) { aString.Append(NS_LITERAL_STRING(" ")); aString.Append(valueString); @@ -5570,10 +5583,10 @@ nsCSSDeclaration::TryFourSidesShorthand(nsAString & aString, nsCSSProperty bottomProp = (nsCSSProperty)mOrder->ValueAt(aBottom-1); nsCSSProperty leftProp = (nsCSSProperty)mOrder->ValueAt(aLeft-1); nsCSSProperty rightProp = (nsCSSProperty)mOrder->ValueAt(aRight-1); - GetValue(topProp, topValue); - GetValue(bottomProp, bottomValue); - GetValue(leftProp, leftValue); - GetValue(rightProp, rightValue); + GetValueOrImportantValue(topProp, topValue); + GetValueOrImportantValue(bottomProp, bottomValue); + GetValueOrImportantValue(leftProp, leftValue); + GetValueOrImportantValue(rightProp, rightValue); AppendValueToString(topProp, topValue, aString); if (topValue != rightValue || topValue != leftValue || topValue != bottomValue) { aString.Append(PRUnichar(' ')); @@ -5617,19 +5630,19 @@ nsCSSDeclaration::TryBackgroundShorthand(nsAString & aString, + NS_LITERAL_STRING(":")); aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_color, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_color, aString); aBgColor = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_image, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_image, aString); aBgImage = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_repeat, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_repeat, aString); aBgRepeat = 0; aString.Append(PRUnichar(' ')); - AppendValueToString(eCSSProperty_background_attachment, aString); + AppendValueOrImportantValueToString(eCSSProperty_background_attachment, aString); aBgAttachment = 0; aString.Append(PRUnichar(' ')); @@ -5645,8 +5658,8 @@ nsCSSDeclaration::UseBackgroundPosition(nsAString & aString, PRInt32 & aBgPositionY) { nsAutoString backgroundXValue, backgroundYValue; - AppendValueToString(eCSSProperty_background_x_position, backgroundXValue); - AppendValueToString(eCSSProperty_background_y_position, backgroundYValue); + AppendValueOrImportantValueToString(eCSSProperty_background_x_position, backgroundXValue); + AppendValueOrImportantValueToString(eCSSProperty_background_y_position, backgroundYValue); aString.Append(backgroundYValue); if (!backgroundXValue.Equals(backgroundYValue, nsCaseInsensitiveStringComparator())) { // the two values are different diff --git a/mozilla/layout/style/nsCSSStruct.h b/mozilla/layout/style/nsCSSStruct.h index 805eabf4360..9b2ce30da6a 100644 --- a/mozilla/layout/style/nsCSSStruct.h +++ b/mozilla/layout/style/nsCSSStruct.h @@ -608,8 +608,10 @@ protected: nsresult RemoveProperty(nsCSSProperty aProperty); private: + nsresult GetValueOrImportantValue(nsCSSProperty aProperty, nsCSSValue& aValue); void AppendImportanceToString(PRBool aIsImportant, nsAString& aString); PRBool AppendValueToString(nsCSSProperty aProperty, nsAString& aResult); + PRBool AppendValueOrImportantValueToString(nsCSSProperty aProperty, nsAString& aResult); PRBool AppendValueToString(nsCSSProperty aProperty, const nsCSSValue& aValue, nsAString& aResult); nsCSSDeclaration& operator=(const nsCSSDeclaration& aCopy); PRBool operator==(const nsCSSDeclaration& aCopy) const;