<!DOCTYPE html>
<html>
 <head>
  <title>CSS Test: CSSOM Media Query Serialization</title>
  <link rel="author" title="Ben Sheldon" href="mailto:ben@codeforamerica.org">
  <link rel="author" title="Chapman Shoop" href="mailto:chapman.shoop@gmail.com">
  <link rel="help" href="http://www.w3.org/TR/cssom-1/#serializing-media-queries">
  <meta name="flags" content="dom">
  <meta name="assert" content="Media Queries are serialized according to the specification">
  <script src="/resources/testharness.js" type="text/javascript"></script>
  <script src="/resources/testharnessreport.js" type="text/javascript"></script>
 </head>
 <body>
  <noscript>Test not run - javascript required.</noscript>
  <div id="log"></div>
  <script type="text/javascript">

    var styleElement;
    var styleSheet;
    var mediaList;

    // Setup - accepts media value for style element, e.g. <style media=???">
    function setupMedia(media) {
      styleElement = document.getElementById("styleElement");

      if (styleElement) {
        // teardown
        document.getElementsByTagName("head")[0].removeChild(styleElement);
        styleElement = undefined;
        styleSheet = undefined;
        mediaList = undefined;
      }

      styleElement = document.createElement("style");
      styleElement.id = "styleElement";
      styleElement.type = "text/css";
      styleElement.media = media;
      document.getElementsByTagName("head")[0].appendChild(styleElement);
      styleSheet = styleElement.sheet;
      mediaList = styleSheet.media;
    }


    test(function() {
        setupMedia('not screen and (min-WIDTH:5px) AND (max-width:40px )');

        assert_equals(mediaList.mediaText, "not screen and (max-width: 40px) and (min-width: 5px)");

    }, "mediatest_mediaquery_serialize_1",
    {  assert: ["First explicit example input (first column) and output (second column) in specification."] });

    test(function() {
        setupMedia('all and (color) and (color)	');

        assert_equals(mediaList.mediaText, "(color)");

    }, "mediatest_mediaquery_serialize_2",
    { assert: ["Second explicit example input (first column) and output (second column) in specification."] });

  </script>
 </body>
</html>
