Bug 1382925 - Part 4: Test origin iteration order by checking @font-face rule cascade. r=emilio
MozReview-Commit-ID: 7UzDKkKOEtw
--- a/layout/style/test/mochitest.ini
+++ b/layout/style/test/mochitest.ini
@@ -203,16 +203,17 @@ skip-if = toolkit == 'android' #bug 5366
[test_flexbox_flex_shorthand.html]
[test_flexbox_focus_order.html]
[test_flexbox_layout.html]
support-files = flexbox_layout_testcases.js
[test_flexbox_order.html]
[test_flexbox_order_abspos.html]
[test_flexbox_order_table.html]
[test_flexbox_reflow_counts.html]
+[test_font_face_cascade.html]
[test_font_face_parser.html]
[test_font_family_parsing.html]
[test_font_loading_api.html]
support-files =
BitPattern.woff
file_font_loading_api_vframe.html
[test_garbage_at_end_of_declarations.html]
[test_grid_container_shorthands.html]
new file mode 100644
--- /dev/null
+++ b/layout/style/test/test_font_face_cascade.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML>
+<title>Test that @font-face rules from different origins cascade correctly</title>
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+<script>
+let io = SpecialPowers.Cc["@mozilla.org/network/io-service;1"]
+ .getService(SpecialPowers.Ci.nsIIOService);
+
+let utils = SpecialPowers.wrap(window)
+ .QueryInterface(SpecialPowers.Ci.nsIInterfaceRequestor)
+ .getInterface(SpecialPowers.Ci.nsIDOMWindowUtils);
+
+function load_sheet(sheet_text, level) {
+ if (level != "AGENT_SHEET" && level != "USER_SHEET" && level != "AUTHOR_SHEET") {
+ throw "unknown level";
+ }
+
+ let uri = io.newURI("data:text/css," + encodeURI(sheet_text));
+ utils.loadSheet(uri, utils[level]);
+}
+
+load_sheet(
+ "@font-face { font-family: TestAgent; src: url(about:invalid); }",
+ "AGENT_SHEET");
+
+load_sheet(
+ "@font-face { font-family: TestAuthor; src: url(about:invalid); }",
+ "AUTHOR_SHEET");
+
+load_sheet(
+ "@font-face { font-family: TestUser; src: url(about:invalid); }",
+ "USER_SHEET");
+
+is([...document.fonts].map(f => f.family).join(" "),
+ '"TestAuthor" "TestUser" "TestAgent"',
+ "@font-face rules are returned in correct cascade order");
+</script>