<!DOCTYPE html>
<html>
    <head>
        <title>CSSOM: CSSStyleDeclaration is mutable and immutable in various settings</title>
        <link rel="author" title="Paul Irish" href="mailto:paul.irish@gmail.com">
        <link rel="reviewer" title="Ms2ger" href="mailto:ms2ger@gmail.com"> <!--  2012-06-17  -->
        <link rel="help" href="http://www.w3.org/TR/cssom-1/#the-cssstyledeclaration-interface">

        <meta name="flags" content="dom">

        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
    </head>

    <body>
        <div id="log"></div>
        <div id="box"></box>
        <div id="box2"></box>
        <style id="teststyles">
            #box2 { width: 15px; }
        </style>
        <script>

            test(function(){
                var elem = document.getElementById('box');

                elem.style.width = '10px';
                assert_equals(elem.style.width, '10px', 'setting via style property');
                elem.style.width = '';

                elem.style.cssText = 'width: 10px';
                assert_equals(elem.style.width, '10px', 'setting via cssText');
                elem.style.width = '';

            }, 'HTMLElement\'s CSSStyleDeclaration is mutable')


            test(function(){
                var elem = document.getElementById('box');
                var style = getComputedStyle(elem, 'width');

                assert_throws('NO_MODIFICATION_ALLOWED_ERR', function(){
                    style.width = '10px';
                });

            }, 'getComputedStyle\'s CSSStyleDeclaration is not mutable')


            test(function(){

                var style = document.getElementById('teststyles').sheet.cssRules[0].style;

                assert_equals(style.width, '15px', 'width value is correct');

                style.width = '25px';

                assert_equals(style.width, '25px', 'width value is mutable');

                var gCSstyle = getComputedStyle(document.getElementById('box2'));

                assert_equals(gCSstyle.width, '25px', 'styleSheet change is live and accesible via getComputedStyle');

            }, 'StyleSheet\'s CSSStyleDeclaration is mutable');


        </script>

    </body>
</html>
