Index: LayoutTests/fast/media/mq-append-delete.html |
diff --git a/LayoutTests/fast/media/mq-append-delete.html b/LayoutTests/fast/media/mq-append-delete.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c855e7d6c081cacc6ec23999ae9108d4016f9881 |
--- /dev/null |
+++ b/LayoutTests/fast/media/mq-append-delete.html |
@@ -0,0 +1,144 @@ |
+<!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"); |
+ // 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'"); |
+ |
+// - deleteMedium() |
+ |
+test(function () { |
+ mediaList.mediaText = "screen, tv, not all"; |
+ mediaList.deleteMedium("&invalid"); |
+ // Ignored; terminate steps. |
+ assert_equals(mediaList.mediaText, "screen, tv, not all"); |
+}, "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'"); |
+</script> |