getComputedStyle for border is not implemented.
authoralexis.menard@openbossa.org <alexis.menard@openbossa.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Jan 2012 19:13:48 +0000 (19:13 +0000)
committeralexis.menard@openbossa.org <alexis.menard@openbossa.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Jan 2012 19:13:48 +0000 (19:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=75319

Reviewed by Tony Chang.

Source/WebCore:

Implement getComputedStyle for border.

fast/css/getComputedStyle/getComputedStyle-border-shorthand.html was extented.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):

LayoutTests:

Extend existing test to cover that we return correct values.

* fast/css/getComputedStyle/getComputedStyle-border-shorthand-expected.txt:
* fast/css/getComputedStyle/getComputedStyle-border-shorthand.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@103948 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-shorthand-expected.txt
LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-shorthand.html
Source/WebCore/ChangeLog
Source/WebCore/css/CSSComputedStyleDeclaration.cpp

index 5323c6a..6e45de6 100644 (file)
@@ -1,5 +1,17 @@
 2012-01-03  Alexis Menard  <alexis.menard@openbossa.org>
 
+        getComputedStyle for border is not implemented.
+        https://bugs.webkit.org/show_bug.cgi?id=75319
+
+        Reviewed by Tony Chang.
+
+        Extend existing test to cover that we return correct values.
+
+        * fast/css/getComputedStyle/getComputedStyle-border-shorthand-expected.txt:
+        * fast/css/getComputedStyle/getComputedStyle-border-shorthand.html:
+
+2012-01-03  Alexis Menard  <alexis.menard@openbossa.org>
+
         getComputedStyle for outline is not implemented.
         https://bugs.webkit.org/show_bug.cgi?id=75441
 
index 539aff1..17debe4 100644 (file)
@@ -111,6 +111,16 @@ PASS computedStyle.getPropertyCSSValue('border-left').item(1).getStringValue() i
 PASS computedStyle.getPropertyCSSValue('border-left').item(2).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('border-left').item(2).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 128
 PASS computedStyle.getPropertyCSSValue('border-left').item(2).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
+PASS computedStyle.getPropertyValue('border') is '320px solid rgb(255, 0, 0)'
+PASS computedStyle.getPropertyCSSValue('border').toString() is '[object CSSValueList]'
+PASS computedStyle.getPropertyCSSValue('border').cssText is '320px solid rgb(255, 0, 0)'
+PASS computedStyle.getPropertyCSSValue('border').length is 3
+PASS computedStyle.getPropertyCSSValue('border').item(0).getFloatValue(CSSPrimitiveValue.CSS_PX) is 320
+PASS computedStyle.getPropertyCSSValue('border').item(1).getStringValue() is 'solid'
+PASS computedStyle.getPropertyCSSValue('border').item(2).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
+PASS computedStyle.getPropertyCSSValue('border').item(2).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
+PASS computedStyle.getPropertyCSSValue('border').item(2).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
+PASS computedStyle.getPropertyValue('border') is ''
 PASS successfullyParsed is true
 
 TEST COMPLETE
index e766e41..ee51640 100644 (file)
@@ -56,6 +56,25 @@ for (i = 0; i < properties.length; ++i) {
     shouldBe("computedStyle.getPropertyCSSValue('" + properties[i] + "').item(2).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 
 }
+
+e.style.cssText = "";
+e.style.border = "20em solid red";
+shouldBe("computedStyle.getPropertyValue('border')", "'320px solid rgb(255, 0, 0)'");
+shouldBe("computedStyle.getPropertyCSSValue('border').toString()", "'[object CSSValueList]'");
+shouldBe("computedStyle.getPropertyCSSValue('border').cssText", "'320px solid rgb(255, 0, 0)'");
+shouldBe("computedStyle.getPropertyCSSValue('border').length", "3");
+shouldBe("computedStyle.getPropertyCSSValue('border').item(0).getFloatValue(CSSPrimitiveValue.CSS_PX)", "320");
+shouldBe("computedStyle.getPropertyCSSValue('border').item(1).getStringValue()", "'solid'");
+shouldBe("computedStyle.getPropertyCSSValue('border').item(2).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
+shouldBe("computedStyle.getPropertyCSSValue('border').item(2).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
+shouldBe("computedStyle.getPropertyCSSValue('border').item(2).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
+
+
+e.style.border = "20em solid red";
+e.style.borderTop = "10px groove blue";
+shouldBe("computedStyle.getPropertyValue('border')", "''");
+
+
 document.body.removeChild(testContainer);
 
 </script>
index 18bdf85..e224bdf 100644 (file)
@@ -1,5 +1,19 @@
 2012-01-03  Alexis Menard  <alexis.menard@openbossa.org>
 
+        getComputedStyle for border is not implemented.
+        https://bugs.webkit.org/show_bug.cgi?id=75319
+
+        Reviewed by Tony Chang.
+
+        Implement getComputedStyle for border.
+
+        fast/css/getComputedStyle/getComputedStyle-border-shorthand.html was extented.
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+
+2012-01-03  Alexis Menard  <alexis.menard@openbossa.org>
+
         Sort the WebCore XCode project file
 
         Reviewed by Dimitri Glazkov.
index 5e5d28c..29d04dd 100644 (file)
@@ -2137,8 +2137,17 @@ PassRefPtr<CSSValue> CSSComputedStyleDeclaration::getPropertyCSSValue(int proper
 #endif
         /* Shorthand properties, currently not supported see bug 13658*/
         case CSSPropertyBackground:
-        case CSSPropertyBorder:
             break;
+        case CSSPropertyBorder: {
+            RefPtr<CSSValue> value = getPropertyCSSValue(CSSPropertyBorderTop, DoNotUpdateLayout);
+            const int properties[3] = { CSSPropertyBorderRight, CSSPropertyBorderBottom,
+                                        CSSPropertyBorderLeft };
+            for (size_t i = 0; i < WTF_ARRAY_LENGTH(properties); ++i) {
+                if (value->cssText() !=  getPropertyCSSValue(properties[i], DoNotUpdateLayout)->cssText())
+                    return 0;
+            }
+            return value.release();
+        }
         case CSSPropertyBorderBottom: {
             const int properties[3] = { CSSPropertyBorderBottomWidth, CSSPropertyBorderBottomStyle,
                                         CSSPropertyBorderBottomColor };