<!doctype html> <style type="text/css">@media screen { }</style> <script src="../../resources/testharness.js"></script> <script src="../../resources/testharnessreport.js"></script> <div id=log></div> <script> var rules = document.styleSheets[0].cssRules; var mediaList = rules.item(0).media; // - appendMedium() test(function () { mediaList.mediaText = "screen"; mediaList.appendMedium("tv, screen"); assert_equals(mediaList.mediaText, "screen"); // CSSOM 4.1: Parsing media query returns none as // there are more than one; terminate steps. }, "Add 'tv, screen' to 'screen'"); test(function () { mediaList.mediaText = "screen"; mediaList.appendMedium("tv"); assert_equals(mediaList.mediaText, "screen, tv"); // The valid media query is appended. }, "Add 'tv' to 'screen'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.appendMedium("tv"); assert_equals(mediaList.mediaText, "screen, tv"); // CSSOM says to ignore if it exists, terminate steps. }, "Add 'tv' to 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.appendMedium("screen"); assert_equals(mediaList.mediaText, "screen, tv"); // CSSOM says to ignore if it exists, where as // CSS 2.1 says to remove existing and then add // it to the end. // http://dev.w3.org/csswg/cssom/#dom-medialist-appendmedium // http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/stylesheets.html }, "Add 'screen' to 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.appendMedium(" "); // Ignored; terminate steps. assert_equals(mediaList.mediaText, "screen, tv"); }, "Add ' ' to 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.appendMedium(""); // Ignored; terminate steps. assert_equals(mediaList.mediaText, "screen, tv"); }, "Add '' to 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.appendMedium(","); assert_equals(mediaList.mediaText, "screen, tv"); // CSSOM 4.1: Parsing media query returns none as // there are more than one; terminate steps. }, "Add ',' to 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.appendMedium("&invalid"); assert_equals(mediaList.mediaText, "screen, tv, not all"); // Ignored; terminate steps. }, "Add '&invalid' to 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.appendMedium("not all"); assert_equals(mediaList.mediaText, "screen, tv, not all"); }, "Add 'not all' to 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.appendMedium("#?:/"); assert_equals(mediaList.mediaText, "screen, tv, not all"); // Ignored; terminate steps. }, "Add '#?:/' to 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; assert_throws({ name: "TypeError" }, function () { document.appendMedium(); }, "Not enough arguments"); }, "Add without argument"); // - deleteMedium() test(function () { mediaList.mediaText = "screen, tv, not all"; mediaList.deleteMedium("&invalid"); // Ignored; terminate steps. assert_equals(mediaList.mediaText, "screen, tv"); }, "Remove '&invalid' from 'screen, tv, not all'"); test(function () { mediaList.mediaText = "screen, tv"; assert_throws("NOT_FOUND_ERR", function () { mediaList.deleteMedium("not all"); } ); // Not found; throw NotFoundError. }, "Remove 'not all' from 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv"; assert_throws("NOT_FOUND_ERR", function () { mediaList.deleteMedium("cow"); } ); // Not found; throw NotFoundError. }, "Remove 'cow' from 'screen, tv'"); test(function () { mediaList.mediaText = "screen, tv, not all"; mediaList.deleteMedium("not all"); assert_equals(mediaList.mediaText, "screen, tv"); // Remove any media query from the collection of media queries // for which comparing the media query returns true. }, "Remove 'not all' from 'screen, tv, not all'"); test(function () { mediaList.mediaText = "screen, tv"; mediaList.deleteMedium("tv"); assert_equals(mediaList.mediaText, "screen"); // Remove any media query from the collection of media queries // for which comparing the media query returns true. }, "Remove 'tv' from 'screen, tv'"); test(function () { mediaList.mediaText = "not all, not all, tv, not all"; mediaList.deleteMedium("not all"); assert_equals(mediaList.mediaText, "tv"); // Remove any media query from the collection of media queries // for which comparing the media query returns true. }, "Remove 'not all' from 'not all, not all, tv, not all'"); test(function () { mediaList.mediaText = "not all, not all, tv, not all"; mediaList.deleteMedium("tv"); assert_equals(mediaList.mediaText, "not all, not all, not all"); // Remove any media query from the collection of media queries // for which comparing the media query returns true. }, "Remove 'tv' from 'not all, not all, tv, not all'"); test(function () { mediaList.mediaText = "tv, print, screen"; mediaList.deleteMedium("tv, print"); assert_equals(mediaList.mediaText, "tv, print, screen"); // CSSOM 4.1: Parsing media query returns none as // there are more than one; terminate steps. }, "Remove 'tv, print' from 'screen, tv, screen'"); test(function () { mediaList.mediaText = "screen, tv, not all"; mediaList.deleteMedium("#?:/"); // Ignored; terminate steps. assert_equals(mediaList.mediaText, "screen, tv"); }, "Remove '#?:/' from 'screen, tv, not all'"); test(function () { mediaList.mediaText = "tv, print, screen"; assert_throws({ name: "TypeError" }, function () { document.deleteMedium(); }, "Not enough arguments"); }, "Remove without argument"); </script>