WebCore:
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 5 Jan 2008 04:04:31 +0000 (04:04 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 5 Jan 2008 04:04:31 +0000 (04:04 +0000)
        Reviewed by Oliver Hunt.

        - Match the spec when calling getFloatValue, getStringValue, getCounterValue,
          getRectValue and getRGBColorValue of CSSPrimitiveValue by throwing exceptions
          if the type of the CSSPrimitiveValue is not the same as the type requested.
        - Fix the intermittent assertion failure seen in svg/css/glyph-orientation-rounding-test.xhtml

        Test: fast/css/CSSPrimitiveValue-exceptions.html

        * css/CSSPrimitiveValue.cpp:
        (WebCore::CSSPrimitiveValue::getDoubleValue):
        (WebCore::CSSPrimitiveValue::getStringValue):
        (WebCore::CSSPrimitiveValue::getCounterValue):
        (WebCore::CSSPrimitiveValue::getRectValue):
        (WebCore::CSSPrimitiveValue::getRGBColorValue):
        (WebCore::CSSPrimitiveValue::getPairValue):
        * css/CSSPrimitiveValue.h:
        (WebCore::CSSPrimitiveValue::getFloatValue):
        (WebCore::CSSPrimitiveValue::getIntValue):
        (WebCore::CSSPrimitiveValue::getCounterValue):
        (WebCore::CSSPrimitiveValue::getRectValue):
        (WebCore::CSSPrimitiveValue::getDashboardRegionValue):
        * css/CSSPrimitiveValue.idl:

LayoutTests:

        Reviewed by Oliver Hunt.

        Throw exceptions for the CSSPrimitiveValue getters, matching the spec.

        * fast/css/CSSPrimitiveValue-exceptions-expected.txt: Added.
        * fast/css/CSSPrimitiveValue-exceptions.html: Added.
        * fast/css/resources/CSSPrimitiveValue-exceptions.js: Added.
        * fast/dom/prototypes.html:
        * fast/dom/wrapper-classes.html:
        * platform/mac/fast/dom/wrapper-classes-objc.html:
        * svg/css/glyph-orientation-rounding-test-expected.txt:
        * svg/css/glyph-orientation-rounding-test.xhtml: Pass in a unit so this doesn't throw.
        This patch also fixes the associated intermittent failure seen in this test.

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

13 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/css/CSSPrimitiveValue-exceptions-expected.txt [new file with mode: 0644]
LayoutTests/fast/css/CSSPrimitiveValue-exceptions.html [new file with mode: 0644]
LayoutTests/fast/css/resources/CSSPrimitiveValue-exceptions.js [new file with mode: 0644]
LayoutTests/fast/dom/prototypes.html
LayoutTests/fast/dom/wrapper-classes.html
LayoutTests/platform/mac/fast/dom/wrapper-classes-objc.html
LayoutTests/svg/css/glyph-orientation-rounding-test-expected.txt
LayoutTests/svg/css/glyph-orientation-rounding-test.xhtml
WebCore/ChangeLog
WebCore/css/CSSPrimitiveValue.cpp
WebCore/css/CSSPrimitiveValue.h
WebCore/css/CSSPrimitiveValue.idl

index 0eeef5f..6a50f0c 100644 (file)
@@ -1,5 +1,21 @@
 2008-01-04  Sam Weinig  <sam@webkit.org>
 
+        Reviewed by Oliver Hunt.
+
+        Throw exceptions for the CSSPrimitiveValue getters, matching the spec.
+
+        * fast/css/CSSPrimitiveValue-exceptions-expected.txt: Added.
+        * fast/css/CSSPrimitiveValue-exceptions.html: Added.
+        * fast/css/resources/CSSPrimitiveValue-exceptions.js: Added.
+        * fast/dom/prototypes.html:
+        * fast/dom/wrapper-classes.html:
+        * platform/mac/fast/dom/wrapper-classes-objc.html:
+        * svg/css/glyph-orientation-rounding-test-expected.txt:
+        * svg/css/glyph-orientation-rounding-test.xhtml: Pass in a unit so this doesn't throw.
+        This patch also fixes the associated intermittent failure seen in this test.
+
+2008-01-04  Sam Weinig  <sam@webkit.org>
+
         Reviewed by Kevin McCullough.
 
         - Splits Objective-C tests out of wrapper-classes.html and into platform specific test.
diff --git a/LayoutTests/fast/css/CSSPrimitiveValue-exceptions-expected.txt b/LayoutTests/fast/css/CSSPrimitiveValue-exceptions-expected.txt
new file mode 100644 (file)
index 0000000..2a2b047
--- /dev/null
@@ -0,0 +1,21 @@
+This tests that the methods on CSSPrimitiveValue throw exceptions
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_UNKNOWN) threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_STRING) threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('clip').primitiveType is CSSPrimitiveValue.CSS_RECT
+PASS div.style.getPropertyCSSValue('clip').getFloatValue(CSSPrimitiveValue.CSS_PX) threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('clip').getStringValue() threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('clip').getCounterValue() threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('clip').getRGBColorValue() threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('color').primitiveType is CSSPrimitiveValue.CSS_RGBCOLOR
+PASS div.style.getPropertyCSSValue('color').getFloatValue(CSSPrimitiveValue.CSS_PX) threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('color').getStringValue() threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('color').getCounterValue() threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS div.style.getPropertyCSSValue('color').getRectValue() threw exception Error: INVALID_ACCESS_ERR: DOM Exception 15.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/css/CSSPrimitiveValue-exceptions.html b/LayoutTests/fast/css/CSSPrimitiveValue-exceptions.html
new file mode 100644 (file)
index 0000000..31c9f17
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../js/resources/js-test-style.css">
+<script src="../js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="resources/CSSPrimitiveValue-exceptions.js"></script>
+<script src="../js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/css/resources/CSSPrimitiveValue-exceptions.js b/LayoutTests/fast/css/resources/CSSPrimitiveValue-exceptions.js
new file mode 100644 (file)
index 0000000..e196e17
--- /dev/null
@@ -0,0 +1,28 @@
+description("This tests that the methods on CSSPrimitiveValue throw exceptions ");
+
+div = document.createElement('div');
+div.style.width = "10px";
+div.style.content = "counter(dummy, square)";
+div.style.clip = "rect(0, 0, 1, 1)";
+div.style.color = "rgb(0, 0, 0)";
+
+var invalidAccessError = "Error: INVALID_ACCESS_ERR: DOM Exception 15";
+
+// Test passing invalid unit to getFloatValue
+shouldThrow("div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_UNKNOWN)", "invalidAccessError");
+shouldThrow("div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_STRING)", "invalidAccessError");
+
+// Test calling get*Value for CSSPrimitiveValue of the wrong type
+shouldBe("div.style.getPropertyCSSValue('clip').primitiveType", "CSSPrimitiveValue.CSS_RECT");
+shouldThrow("div.style.getPropertyCSSValue('clip').getFloatValue(CSSPrimitiveValue.CSS_PX)", "invalidAccessError");
+shouldThrow("div.style.getPropertyCSSValue('clip').getStringValue()", "invalidAccessError");
+shouldThrow("div.style.getPropertyCSSValue('clip').getCounterValue()", "invalidAccessError");
+shouldThrow("div.style.getPropertyCSSValue('clip').getRGBColorValue()", "invalidAccessError");
+
+shouldBe("div.style.getPropertyCSSValue('color').primitiveType", "CSSPrimitiveValue.CSS_RGBCOLOR");
+shouldThrow("div.style.getPropertyCSSValue('color').getFloatValue(CSSPrimitiveValue.CSS_PX)", "invalidAccessError");
+shouldThrow("div.style.getPropertyCSSValue('color').getStringValue()", "invalidAccessError");
+shouldThrow("div.style.getPropertyCSSValue('color').getCounterValue()", "invalidAccessError");
+shouldThrow("div.style.getPropertyCSSValue('color').getRectValue()", "invalidAccessError");
+
+var successfullyParsed = true;
index ce1333c..8e971d9 100644 (file)
@@ -35,7 +35,7 @@ function test()
     shouldBe("Object.prototype.isPrototypeOf(window.Option)", true);
 
     div = document.createElement('div');
-    div.style.color = "black";
+    div.style.color = "rgb(0, 0, 0)";
     cssValue = div.style.getPropertyCSSValue('color'); // actually a CSSPrimitiveValue
     shouldBe("Object.prototype.isPrototypeOf(cssValue)", true);
     
index 83dcd79..c9ae913 100644 (file)
@@ -4,7 +4,7 @@
 <script src="../js/resources/js-test-pre.js"></script>
 <style id="style" media="screen">
 .non-existent-class {
-    color: black;
+    color: rgb(0, 0, 0);
     clip: rect(0, 0, 1, 1);
     content: counter(dummy, square);
 }
index da35e03..87ecd12 100644 (file)
@@ -4,7 +4,7 @@
 <script src="../../../../fast/js/resources/js-test-pre.js"></script>
 <style id="style" media="screen">
 .non-existent-class {
-    color: black;
+    color: rgb(0, 0, 0);
     clip: rect(0, 0, 1, 1);
     content: counter(dummy, square);
 }
index 4f42409..a12c048 100644 (file)
@@ -4,49 +4,49 @@ Stress test glyph-orientation SVG CSS propertiesOn success, you will see a serie
 Strings that fail to parse, and hence parse as "0" for horziontal and "auto" as vertical.
 
 Test angleValue: ' 0,1'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: ' 0,1'
 PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
 
 Test angleValue: '  0,00000.1'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '  0,00000.1'
 PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
 
 Test angleValue: '  0 1'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '  0 1'
 PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
 
 Test angleValue: '0.1 0.2'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '0.1 0.2'
 PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
 
 Test angleValue: ' 270,1'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: ' 270,1'
 PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
 
 Test angleValue: '  270,00000.1'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '  270,00000.1'
 PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
 
 Test angleValue: '  270 1'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '  270 1'
 PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
 
 Test angleValue: '270.1 0.2'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '270.1 0.2'
 PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
@@ -54,262 +54,262 @@ PASS computedStyle.getPropertyValue('glyph-orientation-vertical') is "auto"
 This tests the rounding of glyph orientation values to the only allowed values 0, 90, 180, 270.
 
 Test angleValue: '-0.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '-0.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '-10.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '-10.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '-45.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '-45.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '0.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '0.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '10.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '10.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '45.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '45.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '-90.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '-90.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '-100.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '-100.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '-135.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '-135.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '90.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '90.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '100.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '100.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '135.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '135.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '-180.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '-180.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '-190.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '-190.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '-225.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '-225.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '180.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '180.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '190.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '190.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '225.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '225.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '-270.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '-270.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '-280.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '-280.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '-305.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '-305.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '270.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '270.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '280.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '280.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '305.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '305.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Tests angles bigger than 360.
 
 Test angleValue: '449.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '449.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '450.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '450.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '451.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '451.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '539.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '539.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '540.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '540.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '541.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '541.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '629.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '629.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '630.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '630.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '631.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '631.0'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Tests whitespace before/after angle value.
 
 Test angleValue: '  .0 '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '  .0 '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '   0  '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '   0  '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: ' 90.0 '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: ' 90.0 '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: ' 180.0    '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: ' 180.0    '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '  270.0 '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Test angleValue: '  270.0 '
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 270
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 270
 
 Tests rounding of fractional angle values.
 
 Test angleValue: '45.0000'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '45.0000'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 0
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 0
 
 Test angleValue: '45.0001'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '45.0001'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '135.000'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '135.000'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 90
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 90
 
 Test angleValue: '135.001'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-horizontal').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 Test angleValue: '135.001'
-PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue() is 180
+PASS computedStyle.getPropertyCSSValue('glyph-orientation-vertical').getFloatValue(CSSPrimitiveValue.CSS_DEG) is 180
 
 PASS successfullyParsed is true
 
index 7ed30d8..6fc5f92 100644 (file)
@@ -21,7 +21,7 @@ function parseGlyphOrientationHelper(property, angleValue, expectedValue)
     if (expectedValue == "auto") {
         shouldBe("computedStyle.getPropertyValue('" + property + "')", '"auto"');
     } else {
-        shouldBe("computedStyle.getPropertyCSSValue('" + property + "').getFloatValue()", "" + expectedValue);
+        shouldBe("computedStyle.getPropertyCSSValue('" + property + "').getFloatValue(CSSPrimitiveValue.CSS_DEG)", "" + expectedValue);
     }
 
     debug("");
index 9a70704..6634a58 100644 (file)
@@ -1,3 +1,29 @@
+2008-01-04  Sam Weinig  <sam@webkit.org>
+
+        Reviewed by Oliver Hunt.
+
+        - Match the spec when calling getFloatValue, getStringValue, getCounterValue,
+          getRectValue and getRGBColorValue of CSSPrimitiveValue by throwing exceptions
+          if the type of the CSSPrimitiveValue is not the same as the type requested.
+        - Fix the intermittent assertion failure seen in svg/css/glyph-orientation-rounding-test.xhtml
+
+        Test: fast/css/CSSPrimitiveValue-exceptions.html
+
+        * css/CSSPrimitiveValue.cpp:
+        (WebCore::CSSPrimitiveValue::getDoubleValue):
+        (WebCore::CSSPrimitiveValue::getStringValue):
+        (WebCore::CSSPrimitiveValue::getCounterValue):
+        (WebCore::CSSPrimitiveValue::getRectValue):
+        (WebCore::CSSPrimitiveValue::getRGBColorValue):
+        (WebCore::CSSPrimitiveValue::getPairValue):
+        * css/CSSPrimitiveValue.h:
+        (WebCore::CSSPrimitiveValue::getFloatValue):
+        (WebCore::CSSPrimitiveValue::getIntValue):
+        (WebCore::CSSPrimitiveValue::getCounterValue):
+        (WebCore::CSSPrimitiveValue::getRectValue):
+        (WebCore::CSSPrimitiveValue::getDashboardRegionValue):
+        * css/CSSPrimitiveValue.idl:
+
 2008-01-04  Antti Koivisto  <antti@apple.com>
 
         Reviewed by Darin.
index c7d8418..b3d94ab 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * (C) 1999-2003 Lars Knoll (knoll@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -398,10 +398,34 @@ double scaleFactorForConversion(unsigned short unitType)
     return factor;
 }
 
+double CSSPrimitiveValue::getDoubleValue(unsigned short unitType, ExceptionCode& ec)
+{
+    ec = 0;
+    if (m_type < CSS_NUMBER || m_type > CSS_DIMENSION || unitType < CSS_NUMBER || unitType > CSS_DIMENSION) {
+        ec = INVALID_ACCESS_ERR;
+        return 0.0;
+    }
+
+    if (unitType == m_type || unitType < CSS_PX || unitType > CSS_PC)
+        return m_value.num;
+
+    double convertedValue = m_value.num;
+
+    // First convert the value from m_type into CSSPixels
+    double factor = scaleFactorForConversion(m_type);
+    convertedValue *= factor;
+
+    // Now convert from CSSPixels to the specified unitType
+    factor = scaleFactorForConversion(unitType);
+    convertedValue /= factor;
+
+    return convertedValue;
+}
+
 double CSSPrimitiveValue::getDoubleValue(unsigned short unitType)
 {
-    ASSERT(m_type <= CSS_DIMENSION);
-    ASSERT(unitType <= CSS_DIMENSION);
+    if (m_type < CSS_NUMBER || m_type > CSS_DIMENSION || unitType < CSS_NUMBER || unitType > CSS_DIMENSION)
+        return 0;
 
     if (unitType == m_type || unitType < CSS_PX || unitType > CSS_PC)
         return m_value.num;
@@ -419,6 +443,7 @@ double CSSPrimitiveValue::getDoubleValue(unsigned short unitType)
     return convertedValue;
 }
 
+
 void CSSPrimitiveValue::setStringValue(unsigned short stringType, const String& stringValue, ExceptionCode& ec)
 {
     ec = 0;
@@ -440,6 +465,24 @@ void CSSPrimitiveValue::setStringValue(unsigned short stringType, const String&
     // FIXME: parse ident
 }
 
+String CSSPrimitiveValue::getStringValue(ExceptionCode& ec) const
+{
+    ec = 0;
+    switch (m_type) {
+        case CSS_STRING:
+        case CSS_ATTR:
+        case CSS_URI:
+            return m_value.string;
+        case CSS_IDENT:
+            return getValueName(m_value.ident);
+        default:
+            ec = INVALID_ACCESS_ERR;
+            break;
+    }
+
+    return String();
+}
+
 String CSSPrimitiveValue::getStringValue() const
 {
     switch (m_type) {
@@ -450,13 +493,56 @@ String CSSPrimitiveValue::getStringValue() const
         case CSS_IDENT:
             return getValueName(m_value.ident);
         default:
-            // FIXME: The CSS 2.1 spec says you should throw an exception here.
             break;
     }
 
     return String();
 }
 
+Counter* CSSPrimitiveValue::getCounterValue(ExceptionCode& ec) const
+{
+    ec = 0;
+    if (m_type != CSS_COUNTER) {
+        ec = INVALID_ACCESS_ERR;
+        return 0;
+    }
+
+    return m_value.counter;
+}
+
+Rect* CSSPrimitiveValue::getRectValue(ExceptionCode& ec) const
+{
+    ec = 0;
+    if (m_type != CSS_RECT) {
+        ec = INVALID_ACCESS_ERR;
+        return 0;
+    }
+
+    return m_value.rect;
+}
+
+unsigned CSSPrimitiveValue::getRGBColorValue(ExceptionCode& ec) const
+{
+    ec = 0;
+    if (m_type != CSS_RGBCOLOR) {
+        ec = INVALID_ACCESS_ERR;
+        return 0;
+    }
+
+    return m_value.rgbcolor;
+}
+
+Pair* CSSPrimitiveValue::getPairValue(ExceptionCode& ec) const
+{
+    ec = 0;
+    if (m_type != CSS_PAIR) {
+        ec = INVALID_ACCESS_ERR;
+        return 0;
+    }
+
+    return m_value.pair;
+}
+
 unsigned short CSSPrimitiveValue::cssValueType() const
 {
     return CSS_PRIMITIVE_VALUE;
index 6d1f3a9..ab74af3 100644 (file)
@@ -1,8 +1,6 @@
 /*
- * This file is part of the DOM implementation for KDE.
- *
  * (C) 1999-2003 Lars Knoll (knoll@kde.org)
- * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
+ * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
  * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
  *
  * This library is free software; you can redistribute it and/or
@@ -111,24 +109,36 @@ public:
     // use with care!!!
     void setPrimitiveType(unsigned short type) { m_type = type; }
 
+    double getDoubleValue(unsigned short unitType, ExceptionCode&);
     double getDoubleValue(unsigned short unitType);
     double getDoubleValue() const { return m_value.num; }
 
     void setFloatValue(unsigned short unitType, double floatValue, ExceptionCode&);
+    float getFloatValue(unsigned short unitType, ExceptionCode& ec) { return static_cast<float>(getDoubleValue(unitType, ec)); }
     float getFloatValue(unsigned short unitType) { return static_cast<float>(getDoubleValue(unitType)); }
     float getFloatValue() const { return static_cast<float>(m_value.num); }
+
+    int getIntValue(unsigned short unitType, ExceptionCode& ec) { return static_cast<int>(getDoubleValue(unitType, ec)); }
     int getIntValue(unsigned short unitType) { return static_cast<int>(getDoubleValue(unitType)); }
     int getIntValue() const { return static_cast<int>(m_value.num); }
 
     void setStringValue(unsigned short stringType, const String& stringValue, ExceptionCode&);
+    String getStringValue(ExceptionCode&) const;
     String getStringValue() const;
 
-    Counter* getCounterValue () const { return m_type != CSS_COUNTER ? 0 : m_value.counter; }
-    Rect* getRectValue () const { return m_type != CSS_RECT ? 0 : m_value.rect; }
+    Counter* getCounterValue(ExceptionCode&) const;
+    Counter* getCounterValue() const { return m_type != CSS_COUNTER ? 0 : m_value.counter; }
+
+    Rect* getRectValue(ExceptionCode&) const;
+    Rect* getRectValue() const { return m_type != CSS_RECT ? 0 : m_value.rect; }
+
+    unsigned getRGBColorValue(ExceptionCode&) const;
     unsigned getRGBColorValue() const { return m_type != CSS_RGBCOLOR ? 0 : m_value.rgbcolor; }
+
+    Pair* getPairValue(ExceptionCode&) const;
     Pair* getPairValue() const { return m_type != CSS_PAIR ? 0 : m_value.pair; }
 
-    DashboardRegion* getDashboardRegionValue () const { return m_type != CSS_DASHBOARD_REGION ? 0 : m_value.region; }
+    DashboardRegion* getDashboardRegionValue() const { return m_type != CSS_DASHBOARD_REGION ? 0 : m_value.region; }
 
     virtual bool isPrimitiveValue() const { return true; }
 
index 996ab53..b049c29 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006 Apple Computer, Inc.
+ * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -58,15 +58,20 @@ module css {
         [OldStyleObjC] void setFloatValue(in unsigned short unitType,
                                           in float floatValue)
             raises(DOMException);
-        float getFloatValue(in unsigned short unitType);
+        float getFloatValue(in unsigned short unitType)
+            raises(DOMException);
         [OldStyleObjC] void setStringValue(in unsigned short stringType, 
                                            in DOMString stringValue)
             raises(DOMException);
-        DOMString getStringValue();
-        Counter getCounterValue();
-        Rect getRectValue();
+        DOMString getStringValue()
+            raises(DOMException);
+        Counter getCounterValue()
+            raises(DOMException);
+        Rect getRectValue()
+            raises(DOMException);
 #if !defined(LANGUAGE_COM)
-        RGBColor getRGBColorValue();
+        RGBColor getRGBColorValue()
+            raises(DOMException);
 #endif
 
     };