<!DOCTYPE html>
<html>
    <head>
    <title>CSS Test: cssom view window screen attribute</title>
    <link rel="author" title="jingke" href="mailto:jingkewhu@gmail.com">
    <link rel="help" href="http://www.w3.org/TR/cssom-view/#the-screen-interface">
    <meta name="flags" content="dom">
    <meta name="assert" content="window screen interface">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    </head>
    <body>
        <div id="myDiv"></div>
        <div id="log"></div>
        <script>
        /*test readonly*/
        test(function(){assert_readonly(window.screen, "availWidth");}, "Screen.availWidth is readonly");
        test(function(){assert_readonly(window.screen, "availHeight");}, "Screen.availHeight is readonly");
        test(function(){assert_readonly(window.screen, "width");}, "Screen.width is readonly");
        test(function(){assert_readonly(window.screen, "height");}, "Screen.height is readonly");
        test(function(){assert_readonly(window.screen, "colorDepth");}, "Screen.colorDepth is readonly");
        test(function(){assert_readonly(window.screen, "pixelDepth");}, "Screen.pixelDepth is readonly");


        test(function(){assert_true(window.screen.width >= 0 && window.screen.width < 6000000);},
            "window.screen.width >= 0 && window.screen.width < 6000000");
        test(function(){assert_true(window.screen.height >= 0 && window.screen.height < 6000000);},
            "window.screen.height >= 0 && window.screen.height < 6000000");
        test(function(){assert_true(window.screen.availWidth >= 0 && window.screen.availWidth <= window.screen.width);},
            "window.screen.availWidth >= 0 && window.screen.availWidth <= window.screen.width");
        test(function(){assert_true(window.screen.availHeight >= 0 && window.screen.availHeight <= window.screen.height);},
            "window.screen.availHeight >= 0 && window.screen.availHeight <= window.screen.height");
        test(function(){assert_true(window.screen.colorDepth == 0 || window.screen.colorDepth == 16 || window.screen.colorDepth == 24 || window.screen.colorDepth == 32);},
            "window.screen.colorDepth == 0 || window.screen.colorDepth == 16 || window.screen.colorDepth == 24 || window.screen.colorDepth == 32");
        test(function(){assert_equals(window.screen.pixelDepth, window.screen.colorDepth);},
            "window.screen.pixelDepth must return the value returned by window.screen.colorDepth");
        </script>

    </body>
</html>
