<!DOCTYPE html>
<html>
    <head>
        <title>CSS Test: CSSOM View matchMedia addListener</title>
        <link rel="author" title="Chris Wu" href="mailto:pwx.frontend@gmail.com" />
        <link rel="help" href="http://www.w3.org/TR/cssom-view/#the-mediaquerylist-interface" />
        <meta name="flags" content="dom" />
        <script src="../../../../../resources/testharness.js" type="text/javascript"></script>
        <script src="../../../../../resources/testharnessreport.js" type="text/javascript"></script>
        <style type="text/css">
            iframe { border: none; }
        </style>
    </head>
    <body>
        <div id="log"></div>
        <iframe width="200" height="100" id="iframe1"></iframe>
        <script>
            function reflow(doc) {
                doc.body.offsetWidth;
            }

            var iframe = document.querySelector("iframe");
            var iframe_window = window.frames[0];
            var iframe1 = document.getElementById("iframe1");
            reflow(iframe_window.document);

            var i = 0;
            var totalCount = 10;
            var count = 0;
            var divineCount = 10;
            var width_list = [201,199];
            var mq1 = iframe_window.matchMedia("(max-width:200px)");
            mq1.addListener(function(mql){

                count = count + 1;

            });

            var equalAssert = async_test("Check for the correct number of event triggers");

            var changeFrameWidth = function(iWidth) {
                iframe1.style.width = iWidth + "px";
                i = (i === 0) ? 1 : 0;
                totalCount = totalCount - 1;
                if(totalCount > 0)
                {
                    step_timeout(function(){
                        changeFrameWidth(width_list[i]);
                    }, 100);
                }
                else
                {
                    step_timeout(function(){
                        equalAssert.step(function(){
                            assert_equals(divineCount, count, "this will be 10 times of event triggers by change width");
                        });
                        equalAssert.done();
                    }, 100);
                }
            };

            changeFrameWidth(width_list[0]);
        </script>
    </body>
</html>
