<!DOCTYPE html>
<html>
 <head>
  <title>CSS Test: getComputedStyle</title>
  <link rel="author" title="Bear Travis" href="mailto:betravis@adobe.com">
  <link rel="help" href="http://www.w3.org/TR/cssom-1/#extensions-to-the-window-interface">
  <link rel="help" href="http://www.w3.org/TR/cssom-1/#the-cssstyledeclaration-interface">
  <link rel="help" href="http://www.w3.org/TR/cssom-1/#resolved-values">
  <meta name="flags" content="dom">
  <meta name="assert" content="getComputedStyle returns a readonly CSSStyleDeclaration with resolved values">
  <script src="/resources/testharness.js" type="text/javascript"></script>
  <script src="/resources/testharnessreport.js" type="text/javascript"></script>
  <style>
    #outside {
        width: 200px;
        height: 200px;
    }
    #outside div {
        font-size: 100px;
    }
    #inside {
        width: 50%;
        height: 100px;
    }
  </style>
 </head>
 <body>
 <noscript>Test not run - javascript required.</noscript>
 <div id="log"></div>
 <div id="outside"><div id="inside"></div></div>
 <script type="text/javascript">
    var outer = document.getElementById("outside");
    var inner = document.getElementById("inside");
    var innerStyle;

    test(function() {
        innerStyle = window.getComputedStyle(inner);
        assert_throws(  "NO_MODIFICATION_ALLOWED_ERR",
                        function() { innerStyle.cssText = "color: blue;"; },
                        "do not allow setting cssText on a readonly CSSStyleDeclaration");
        assert_throws(  "NO_MODIFICATION_ALLOWED_ERR",
                        function() { innerStyle.setProperty("color", "blue"); },
                        "do not allow calling setProperty on a readonly CSSStyleDeclaration");
        assert_throws(  "NO_MODIFICATION_ALLOWED_ERR",
                        function() { innerStyle.color = "blue"; },
                        "do not allow setting a property on a readonly CSSStyleDeclaration");
    }, "read_only", {
        assert: "do not allow modifications to a computed CSSStyleDeclaration"
    });

    test(function() {
        assert_equals(innerStyle.getPropertyValue("height"), "100px");
    }, "property_values", {
        assert: "Directly set properties are resolved"
    });

    test(function() {
        assert_equals(innerStyle.getPropertyValue("font-size"), "100px");
    }, "inherited_property_values", {
        assert: "Inherited properties are resolved"
    });

    test(function() {
        assert_equals(innerStyle.getPropertyValue("width"), "100px");
    }, "relative_property_values", {
        assert: "Relative properties are resolved"
    });
 </script>
 </body>
</html>
