<!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_js(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_dom("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_dom("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_js(TypeError,
function () { document.deleteMedium(); },
"Not enough arguments");
}, "Remove without argument");
</script>