diff --git a/mozilla/content/html/style/src/nsComputedDOMStyle.cpp b/mozilla/content/html/style/src/nsComputedDOMStyle.cpp
index 693250b70d3..1467c43f2a0 100644
--- a/mozilla/content/html/style/src/nsComputedDOMStyle.cpp
+++ b/mozilla/content/html/style/src/nsComputedDOMStyle.cpp
@@ -190,6 +190,71 @@ private:
float mT2P; // For unit conversions
};
+static const nsCSSProperty queryableProperties[] = {
+ eCSSProperty_width,
+ eCSSProperty_height,
+ eCSSProperty_left,
+ eCSSProperty_top,
+ eCSSProperty_right,
+ eCSSProperty_bottom,
+
+ eCSSProperty_color,
+ eCSSProperty_font_family,
+ eCSSProperty_font_style,
+ eCSSProperty_font_size,
+ eCSSProperty_font_weight,
+ eCSSProperty_font_variant,
+
+ eCSSProperty_background_color,
+ eCSSProperty_background_image,
+
+ eCSSProperty_display,
+
+ eCSSProperty_padding,
+ eCSSProperty_padding_top,
+ eCSSProperty_padding_bottom,
+ eCSSProperty_padding_left,
+ eCSSProperty_padding_right,
+
+ eCSSProperty_border_style,
+ eCSSProperty_border_width,
+ eCSSProperty_border_collapse,
+ eCSSProperty_border_spacing,
+ eCSSProperty_border_top_style,
+ eCSSProperty_border_bottom_style,
+ eCSSProperty_border_left_style,
+ eCSSProperty_border_right_style,
+ eCSSProperty_border_top_width,
+ eCSSProperty_border_bottom_width,
+ eCSSProperty_border_left_width,
+ eCSSProperty_border_right_width,
+ eCSSProperty_border_top_color,
+ eCSSProperty_border_bottom_color,
+ eCSSProperty_border_left_color,
+ eCSSProperty_border_right_color,
+
+ eCSSProperty_margin,
+ eCSSProperty_margin_top,
+ eCSSProperty_margin_bottom,
+ eCSSProperty_margin_left,
+ eCSSProperty_margin_right,
+
+ eCSSProperty_outline,
+ eCSSProperty_outline_width,
+ eCSSProperty_outline_style,
+ eCSSProperty_outline_color,
+
+ eCSSProperty_marker_offset,
+
+ eCSSProperty_z_index,
+
+ eCSSProperty_list_style_image,
+
+ eCSSProperty_text_align,
+ eCSSProperty_text_decoration,
+
+ eCSSProperty_behavior,
+};
nsresult
NS_NewComputedDOMStyle(nsIComputedDOMStyle** aComputedStyle)
@@ -287,7 +352,7 @@ NS_IMETHODIMP
nsComputedDOMStyle::GetLength(PRUint32* aLength)
{
NS_ENSURE_ARG_POINTER(aLength);
- *aLength = 0;
+ *aLength = sizeof(queryableProperties) / sizeof(nsCSSProperty);
return NS_OK;
}
@@ -499,7 +564,12 @@ nsComputedDOMStyle::SetProperty(const nsAReadableString& aPropertyName,
NS_IMETHODIMP
nsComputedDOMStyle::Item(PRUint32 aIndex, nsAWritableString& aReturn)
{
+ PRUint32 length;
+ GetLength(&length);
aReturn.Truncate();
+ if (aIndex >= 0 && aIndex < length) {
+ CopyASCIItoUCS2(nsLiteralCString(nsCSSProps::GetStringValue(queryableProperties[aIndex])), aReturn);
+ }
return NS_OK;
}
diff --git a/mozilla/layout/style/nsComputedDOMStyle.cpp b/mozilla/layout/style/nsComputedDOMStyle.cpp
index 693250b70d3..1467c43f2a0 100644
--- a/mozilla/layout/style/nsComputedDOMStyle.cpp
+++ b/mozilla/layout/style/nsComputedDOMStyle.cpp
@@ -190,6 +190,71 @@ private:
float mT2P; // For unit conversions
};
+static const nsCSSProperty queryableProperties[] = {
+ eCSSProperty_width,
+ eCSSProperty_height,
+ eCSSProperty_left,
+ eCSSProperty_top,
+ eCSSProperty_right,
+ eCSSProperty_bottom,
+
+ eCSSProperty_color,
+ eCSSProperty_font_family,
+ eCSSProperty_font_style,
+ eCSSProperty_font_size,
+ eCSSProperty_font_weight,
+ eCSSProperty_font_variant,
+
+ eCSSProperty_background_color,
+ eCSSProperty_background_image,
+
+ eCSSProperty_display,
+
+ eCSSProperty_padding,
+ eCSSProperty_padding_top,
+ eCSSProperty_padding_bottom,
+ eCSSProperty_padding_left,
+ eCSSProperty_padding_right,
+
+ eCSSProperty_border_style,
+ eCSSProperty_border_width,
+ eCSSProperty_border_collapse,
+ eCSSProperty_border_spacing,
+ eCSSProperty_border_top_style,
+ eCSSProperty_border_bottom_style,
+ eCSSProperty_border_left_style,
+ eCSSProperty_border_right_style,
+ eCSSProperty_border_top_width,
+ eCSSProperty_border_bottom_width,
+ eCSSProperty_border_left_width,
+ eCSSProperty_border_right_width,
+ eCSSProperty_border_top_color,
+ eCSSProperty_border_bottom_color,
+ eCSSProperty_border_left_color,
+ eCSSProperty_border_right_color,
+
+ eCSSProperty_margin,
+ eCSSProperty_margin_top,
+ eCSSProperty_margin_bottom,
+ eCSSProperty_margin_left,
+ eCSSProperty_margin_right,
+
+ eCSSProperty_outline,
+ eCSSProperty_outline_width,
+ eCSSProperty_outline_style,
+ eCSSProperty_outline_color,
+
+ eCSSProperty_marker_offset,
+
+ eCSSProperty_z_index,
+
+ eCSSProperty_list_style_image,
+
+ eCSSProperty_text_align,
+ eCSSProperty_text_decoration,
+
+ eCSSProperty_behavior,
+};
nsresult
NS_NewComputedDOMStyle(nsIComputedDOMStyle** aComputedStyle)
@@ -287,7 +352,7 @@ NS_IMETHODIMP
nsComputedDOMStyle::GetLength(PRUint32* aLength)
{
NS_ENSURE_ARG_POINTER(aLength);
- *aLength = 0;
+ *aLength = sizeof(queryableProperties) / sizeof(nsCSSProperty);
return NS_OK;
}
@@ -499,7 +564,12 @@ nsComputedDOMStyle::SetProperty(const nsAReadableString& aPropertyName,
NS_IMETHODIMP
nsComputedDOMStyle::Item(PRUint32 aIndex, nsAWritableString& aReturn)
{
+ PRUint32 length;
+ GetLength(&length);
aReturn.Truncate();
+ if (aIndex >= 0 && aIndex < length) {
+ CopyASCIItoUCS2(nsLiteralCString(nsCSSProps::GetStringValue(queryableProperties[aIndex])), aReturn);
+ }
return NS_OK;
}