Bug 1330487 - Add more referrer policy css tests. draft
authorThomas Nguyen <tnguyen@mozilla.com>
Mon, 23 Oct 2017 15:20:03 +0800
changeset 689143 3a4bb44e65ad984c2d4332cf58c716f67f3802e3
parent 689142 9ba290dd5c205870d7b65ec8705894de38a23e33
child 738236 bb555474b320445ca5e038bd3367a5002bababa7
push id86930
push userbmo:tnguyen@mozilla.com
push dateTue, 31 Oct 2017 04:27:08 +0000
bugs1330487
milestone58.0a1
Bug 1330487 - Add more referrer policy css tests. MozReview-Commit-ID: GZjLrlmoK4C
testing/web-platform/meta/MANIFEST.json
testing/web-platform/meta/referrer-policy/css-integration/external-import-stylesheet.html.ini
testing/web-platform/meta/referrer-policy/css-integration/external-stylesheet.html.ini
testing/web-platform/meta/referrer-policy/css-integration/internal-import-stylesheet.html.ini
testing/web-platform/meta/referrer-policy/css-integration/processing-instruction.html.ini
testing/web-platform/tests/referrer-policy/css-integration/README.md
testing/web-platform/tests/referrer-policy/css-integration/child-css/external-import-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/child-css/internal-import-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/external-import-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/external-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/font-face/external-import-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/font-face/external-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/font-face/internal-import-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/font-face/internal-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/font-face/processing-instruction.html
testing/web-platform/tests/referrer-policy/css-integration/image/README.md
testing/web-platform/tests/referrer-policy/css-integration/image/external-import-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/image/external-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/image/inline-style.html
testing/web-platform/tests/referrer-policy/css-integration/image/internal-import-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/image/internal-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/image/presentation-attribute.html
testing/web-platform/tests/referrer-policy/css-integration/image/processing-instruction.html
testing/web-platform/tests/referrer-policy/css-integration/inline-style.html
testing/web-platform/tests/referrer-policy/css-integration/internal-import-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/internal-stylesheet.html
testing/web-platform/tests/referrer-policy/css-integration/presentation-attribute.html
testing/web-platform/tests/referrer-policy/css-integration/processing-instruction.html
testing/web-platform/tests/referrer-policy/generic/subresource/font.py
testing/web-platform/tests/referrer-policy/generic/subresource/stylesheet.py
testing/web-platform/tests/referrer-policy/generic/template/stylesheet.css.template
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -303730,17 +303730,17 @@
      {}
     ]
    ],
    "referrer-policy/README.md": [
     [
      {}
     ]
    ],
-   "referrer-policy/css-integration/README.md": [
+   "referrer-policy/css-integration/image/README.md": [
     [
      {}
     ]
    ],
    "referrer-policy/generic/common.js": [
     [
      {}
     ]
@@ -303760,16 +303760,21 @@
      {}
     ]
    ],
    "referrer-policy/generic/subresource/document.py": [
     [
      {}
     ]
    ],
+   "referrer-policy/generic/subresource/font.py": [
+    [
+     {}
+    ]
+   ],
    "referrer-policy/generic/subresource/image.py": [
     [
      {}
     ]
    ],
    "referrer-policy/generic/subresource/script.py": [
     [
      {}
@@ -367541,55 +367546,97 @@
     ]
    ],
    "quirks-mode/unitless-length.html": [
     [
      "/quirks-mode/unitless-length.html",
      {}
     ]
    ],
-   "referrer-policy/css-integration/external-import-stylesheet.html": [
-    [
-     "/referrer-policy/css-integration/external-import-stylesheet.html",
-     {}
-    ]
-   ],
-   "referrer-policy/css-integration/external-stylesheet.html": [
-    [
-     "/referrer-policy/css-integration/external-stylesheet.html",
-     {}
-    ]
-   ],
-   "referrer-policy/css-integration/inline-style.html": [
-    [
-     "/referrer-policy/css-integration/inline-style.html",
-     {}
-    ]
-   ],
-   "referrer-policy/css-integration/internal-import-stylesheet.html": [
-    [
-     "/referrer-policy/css-integration/internal-import-stylesheet.html",
-     {}
-    ]
-   ],
-   "referrer-policy/css-integration/internal-stylesheet.html": [
-    [
-     "/referrer-policy/css-integration/internal-stylesheet.html",
-     {}
-    ]
-   ],
-   "referrer-policy/css-integration/presentation-attribute.html": [
-    [
-     "/referrer-policy/css-integration/presentation-attribute.html",
-     {}
-    ]
-   ],
-   "referrer-policy/css-integration/processing-instruction.html": [
-    [
-     "/referrer-policy/css-integration/processing-instruction.html",
+   "referrer-policy/css-integration/child-css/external-import-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/child-css/external-import-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/child-css/internal-import-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/child-css/internal-import-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/font-face/external-import-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/font-face/external-import-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/font-face/external-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/font-face/external-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/font-face/internal-import-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/font-face/internal-import-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/font-face/internal-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/font-face/internal-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/font-face/processing-instruction.html": [
+    [
+     "/referrer-policy/css-integration/font-face/processing-instruction.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/image/external-import-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/image/external-import-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/image/external-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/image/external-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/image/inline-style.html": [
+    [
+     "/referrer-policy/css-integration/image/inline-style.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/image/internal-import-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/image/internal-import-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/image/internal-stylesheet.html": [
+    [
+     "/referrer-policy/css-integration/image/internal-stylesheet.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/image/presentation-attribute.html": [
+    [
+     "/referrer-policy/css-integration/image/presentation-attribute.html",
+     {}
+    ]
+   ],
+   "referrer-policy/css-integration/image/processing-instruction.html": [
+    [
+     "/referrer-policy/css-integration/image/processing-instruction.html",
      {}
     ]
    ],
    "referrer-policy/generic/link-rel-prefetch.html": [
     [
      "/referrer-policy/generic/link-rel-prefetch.html",
      {}
     ]
@@ -615202,45 +615249,73 @@
   "referrer-policy/OWNERS": [
    "f87103278641394f49c7e36acc9ff1ef60bacb79",
    "support"
   ],
   "referrer-policy/README.md": [
    "da67e3de754801ef0b51b7be9bebc7170769388c",
    "support"
   ],
-  "referrer-policy/css-integration/README.md": [
+  "referrer-policy/css-integration/child-css/external-import-stylesheet.html": [
+   "c53570411919971b4ddf9e64a23eb1732b27d4ba",
+   "testharness"
+  ],
+  "referrer-policy/css-integration/child-css/internal-import-stylesheet.html": [
+   "0ff6050c91056c3f177805d2b8e4c9ec41954e43",
+   "testharness"
+  ],
+  "referrer-policy/css-integration/font-face/external-import-stylesheet.html": [
+   "aa26a76bd6514b40e51602f738e1681bab3dca12",
+   "testharness"
+  ],
+  "referrer-policy/css-integration/font-face/external-stylesheet.html": [
+   "397e5f4d9eeb8706224cb51dc0f1e9e0fe3de827",
+   "testharness"
+  ],
+  "referrer-policy/css-integration/font-face/internal-import-stylesheet.html": [
+   "195b91ab9481a3ce91364f3841cdc5721a33c1fd",
+   "testharness"
+  ],
+  "referrer-policy/css-integration/font-face/internal-stylesheet.html": [
+   "a2a0f7394f2cde686c5a9aa354f7fd7f34ac656c",
+   "testharness"
+  ],
+  "referrer-policy/css-integration/font-face/processing-instruction.html": [
+   "11f4bed7bfdb5a39e9f22c7b2d0261671a90cb3c",
+   "testharness"
+  ],
+  "referrer-policy/css-integration/image/README.md": [
    "4723887022f00b8aaff113e8244708c0fe12b716",
    "support"
   ],
-  "referrer-policy/css-integration/external-import-stylesheet.html": [
+  "referrer-policy/css-integration/image/external-import-stylesheet.html": [
    "d5ee0ef7b717105e7aca8f3f688f1f41cec9bf2e",
    "testharness"
   ],
-  "referrer-policy/css-integration/external-stylesheet.html": [
+  "referrer-policy/css-integration/image/external-stylesheet.html": [
    "aa8ea066a194f5064d94d6e7c3a0794629fe2a81",
    "testharness"
   ],
-  "referrer-policy/css-integration/inline-style.html": [
+  "referrer-policy/css-integration/image/inline-style.html": [
    "cf40e253b38d0de5d968ad3b5920f1525ebe8547",
    "testharness"
   ],
-  "referrer-policy/css-integration/internal-import-stylesheet.html": [
+  "referrer-policy/css-integration/image/internal-import-stylesheet.html": [
    "9cdcc13fbc32bf0b5ed6e6aa9f6b3cd7cc45b694",
    "testharness"
   ],
-  "referrer-policy/css-integration/internal-stylesheet.html": [
+  "referrer-policy/css-integration/image/internal-stylesheet.html": [
    "af624204d829c4edc4f83654e5909cca606e6e71",
    "testharness"
   ],
-  "referrer-policy/css-integration/presentation-attribute.html": [
+  "referrer-policy/css-integration/image/presentation-attribute.html": [
    "ee846339f4196a496b90652bbfbdeb13ddab5884",
    "testharness"
   ],
-  "referrer-policy/css-integration/processing-instruction.html": [
+  "referrer-policy/css-integration/image/processing-instruction.html": [
    "cc6d82ccc48376e75c323711b61f6d013305c655",
    "testharness"
   ],
   "referrer-policy/generic/common.js": [
    "00233e7d4513c8e3c4b7f7fa60f313ef1b6dbddd",
    "support"
   ],
   "referrer-policy/generic/link-rel-prefetch.html": [
@@ -615298,26 +615373,30 @@
   "referrer-policy/generic/subresource/__init__.py": [
    "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "support"
   ],
   "referrer-policy/generic/subresource/document.py": [
    "5e6f4ccee23687229e4c98f3b11bc3815933d35b",
    "support"
   ],
+  "referrer-policy/generic/subresource/font.py": [
+   "0ce733d6b24202ee1d48d98b6f3f4eb24f7111ef",
+   "support"
+  ],
   "referrer-policy/generic/subresource/image.py": [
    "4870d70418b39eeae17073e5895c362c21712424",
    "support"
   ],
   "referrer-policy/generic/subresource/script.py": [
    "308bbb514ccc8eaa5536d24abd35608777353210",
    "support"
   ],
   "referrer-policy/generic/subresource/stylesheet.py": [
-   "7b3511a9de867ce8e69a071e5b79049ef4a7c6f9",
+   "8a62be3374426bc4c75a2cf931b69509f37c976f",
    "support"
   ],
   "referrer-policy/generic/subresource/subresource.py": [
    "0494e90005620bd954bd13547f7f332258f1691f",
    "support"
   ],
   "referrer-policy/generic/subresource/worker.py": [
    "54769321987cc0b91091d1ca7f26fd28cf35eb97",
@@ -615339,17 +615418,17 @@
    "c74911576588343260c74f995e672680628124a1",
    "support"
   ],
   "referrer-policy/generic/template/spec_json.js.template": [
    "a5e61678d2ee01e1d1852296ea1e49e0d933157c",
    "support"
   ],
   "referrer-policy/generic/template/stylesheet.css.template": [
-   "ac6de8fc5ec25a3675ae5000493168ab53aab2a9",
+   "f7ce48edb31b1df39371455b33d77e87e45330d2",
    "support"
   ],
   "referrer-policy/generic/template/test.debug.html.template": [
    "0feaa371c89191064f8aec23b24ddd7dfc4327c2",
    "support"
   ],
   "referrer-policy/generic/template/test.js.template": [
    "1064796b2cbd682a01d0bba9e96250746afd6ffe",
deleted file mode 100644
--- a/testing/web-platform/meta/referrer-policy/css-integration/external-import-stylesheet.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[external-import-stylesheet.html]
-  type: testharness
-  [Image from imported stylesheet (external).]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/referrer-policy/css-integration/external-stylesheet.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[external-stylesheet.html]
-  type: testharness
-  [Image from external stylesheet.]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/referrer-policy/css-integration/internal-import-stylesheet.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[internal-import-stylesheet.html]
-  type: testharness
-  [Image from imported stylesheet (internal).]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/referrer-policy/css-integration/processing-instruction.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[processing-instruction.html]
-  type: testharness
-  [Image from external stylesheet (from ProcessingInstruction).]
-    expected: FAIL
-
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/referrer-policy/css-integration/child-css/external-import-stylesheet.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS integration - Child css from external stylesheet</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/utils.js"></script>
+    <!-- Common global functions for referrer-policy tests. -->
+    <script src="/referrer-policy/generic/common.js"></script>
+    <meta name="referrer" content="never">
+  </head>
+  <body>
+    <p>Check that child css are loaded with the referrer and referrer policy
+    from the external stylesheet.</p>
+
+    <div class="styled"></div>
+
+    <script>
+      var css_test = async_test("Child css from external stylesheet.");
+      var id = token();
+      var url_prefix = location.protocol + "//www1." + location.hostname + ":" + location.port;
+      var css_url = url_prefix + "/referrer-policy/generic/subresource/stylesheet.py?id=" + id + "&import-rule";
+      var check_url = url_prefix + "/referrer-policy/generic/subresource/stylesheet.py" +
+                      "?id=" + id + "&report-headers";
+
+      var link = document.createElement("link");
+      link.href = css_url;
+      link.rel = "stylesheet";
+      link.onload = function() {
+        css_test.step_timeout(
+            queryXhr.bind(this, check_url,
+                          function(message) {
+                            css_test.step(function() {
+                              assert_own_property(message, "headers");
+                              assert_own_property(message, "referrer");
+                              assert_equals(message.referrer, css_url);
+                            });
+                            css_test.done();
+                          }),
+            1000);
+      };
+      document.head.appendChild(link);
+    </script>
+
+    <div id="log"></div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/referrer-policy/css-integration/child-css/internal-import-stylesheet.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS integration - Child css from internal stylesheet</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/utils.js"></script>
+    <!-- Common global functions for referrer-policy tests. -->
+    <script src="/referrer-policy/generic/common.js"></script>
+    <meta name="referrer" content="never">
+  </head>
+  <body>
+    <p>Check that child css are loaded with the referrer and referrer policy
+    from the internal stylesheet.</p>
+
+    <div class="styled"></div>
+
+    <script>
+      var css_test = async_test("Child css from internal stylesheet.");
+      var id = token();
+      var url_prefix = location.protocol + "//www1." + location.hostname + ":" + location.port;
+      var css_url = url_prefix + "/referrer-policy/generic/subresource/stylesheet.py?id=" + id + "&import-rule";
+      var check_url = url_prefix + "/referrer-policy/generic/subresource/stylesheet.py" +
+                      "?id=" + id + "&report-headers";
+
+      var style = document.createElement("style");
+      style.type = 'text/css';
+      style.appendChild(document.createTextNode("@import url('" + css_url + "');"));
+      document.head.appendChild(style);
+      css_test.step_timeout(
+        queryXhr.bind(this, check_url,
+                      function(message) {
+                        css_test.step(function() {
+                          assert_own_property(message, "headers");
+                          assert_own_property(message, "referrer");
+                          assert_equals(message.referrer, css_url);
+                        });
+                        css_test.done();
+                      }),
+        1000);
+    </script>
+
+    <div id="log"></div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/referrer-policy/css-integration/font-face/external-import-stylesheet.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS integration - Font from imported stylesheet (external)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/utils.js"></script>
+    <!-- Common global functions for referrer-policy tests. -->
+    <script src="/referrer-policy/generic/common.js"></script>
+    <meta name="referrer" content="never">
+  </head>
+  <body>
+    <p>Check that resources from imported stylesheets (loaded from external
+    stylesheets) are loaded with the referrer and referrer policy from the
+    external stylesheet.</p>
+
+    <div class="styled"></div>
+
+    <script>
+      var css_test = async_test("Font from imported stylesheet (external).");
+      var id = token();
+      var cross_origin_url_prefix = location.protocol + "//www1." + location.hostname + ":" + location.port;
+      var css_url = cross_origin_url_prefix + "/referrer-policy/generic/subresource/stylesheet.py?id=" + id + "&import-rule";
+      var url_prefix = location.protocol + "//" + location.hostname + ":" + location.port;
+      var css_referrer = url_prefix + "/referrer-policy/generic/subresource/stylesheet.py?id=" + id;
+      var font_url = url_prefix + "/referrer-policy/generic/subresource/font.py" +
+                     "?id=" + id + "&report-headers";
+
+      var link = document.createElement("link");
+      link.href = css_url;
+      link.rel = "stylesheet";
+      link.onload = function() {
+        css_test.step_timeout(
+            queryXhr.bind(this, font_url,
+                          function(message) {
+                            css_test.step(function() {
+                              assert_own_property(message, "headers");
+                              assert_own_property(message, "referrer");
+                              assert_equals(message.referrer, css_referrer);
+                            });
+                            css_test.done();
+                          }),
+            1000);
+      };
+      document.head.appendChild(link);
+    </script>
+
+    <div id="log"></div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/referrer-policy/css-integration/font-face/external-stylesheet.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS integration - Font from external stylesheet</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/utils.js"></script>
+    <!-- Common global functions for referrer-policy tests. -->
+    <script src="/referrer-policy/generic/common.js"></script>
+    <meta name="referrer" content="never">
+  </head>
+  <body>
+    <p>Check that resources from external stylesheets are loaded with
+    the referrer and referrer policy from the external stylesheet.</p>
+
+    <div class="styled"></div>
+
+    <script>
+      var css_test = async_test("Font from external stylesheet.");
+      var id = token();
+      var url_prefix = location.protocol + "//www1." + location.hostname + ":" + location.port;
+      var css_url = url_prefix + "/referrer-policy/generic/subresource/stylesheet.py?id=" + id;
+      var font_url = url_prefix + "/referrer-policy/generic/subresource/font.py" +
+                    "?id=" + id + "&report-headers";
+
+      var link = document.createElement("link");
+      link.href = css_url;
+      link.rel = "stylesheet";
+      link.onload = function() {
+        css_test.step_timeout(
+            queryXhr.bind(this, font_url,
+                          function(message) {
+                            css_test.step(function() {
+                              assert_own_property(message, "headers");
+                              assert_own_property(message, "referrer");
+                              assert_equals(message.referrer, css_url);
+                            });
+                            css_test.done();
+                          }),
+            1000);
+      };
+      document.head.appendChild(link);
+    </script>
+
+    <div id="log"></div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/referrer-policy/css-integration/font-face/internal-import-stylesheet.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS integration - Font from imported stylesheet (internal)</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/utils.js"></script>
+    <!-- Common global functions for referrer-policy tests. -->
+    <script src="/referrer-policy/generic/common.js"></script>
+    <meta name="referrer" content="origin">
+  </head>
+  <body>
+    <p>Check that resources from stylesheets (imported from internal
+    stylesheets) are loaded with the referrer and referrer policy from the
+    document.</p>
+
+    <div class="styled"></div>
+
+    <script>
+      var css_test = async_test("Font from imported stylesheet (internal).");
+      var id = token();
+      var url_prefix =  location.protocol + "//www1." + location.hostname + ":" + location.port + "/referrer-policy/generic/subresource/";
+      var css_url = url_prefix + "stylesheet.py?id=" + id;
+      var font_url = url_prefix + "font.py?report-headers&id=" + id;
+
+      var style = document.createElement("style");
+      style.type = 'text/css';
+      style.appendChild(document.createTextNode("@import url('" + css_url + "');"));
+      document.head.appendChild(style);
+      css_test.step_timeout(
+          queryXhr.bind(this, font_url,
+                        function(message) {
+                          css_test.step(function() {
+                            assert_own_property(message, "headers");
+                            assert_own_property(message, "referrer");
+                            assert_equals(message.referrer, css_url);
+                          });
+                          css_test.done();
+                        }),
+          1000);
+      </script>
+
+    <div id="log"></div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/referrer-policy/css-integration/font-face/internal-stylesheet.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS integration - Font from internal stylesheet</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/utils.js"></script>
+    <!-- Common global functions for referrer-policy tests. -->
+    <script src="/referrer-policy/generic/common.js"></script>
+    <meta name="referrer" content="origin">
+  </head>
+  <body>
+    <p>Check that resources from internal stylesheets are loaded with
+    the referrer and referrer policy from the document.</p>
+
+    <div class="styled"></div>
+
+    <script>
+      var css_test = async_test("Font from internal stylesheet.");
+      var id = token();
+      var css_url = location.protocol + "//www1." + location.hostname + ":" + location.port + "/referrer-policy/generic/subresource/font.py" + "?id=" + id;
+      var font_url = css_url + "&report-headers";
+
+      var style = document.createElement("style");
+      style.type = 'text/css';
+      style.appendChild(document.createTextNode( "@font-face { font-family: 'wpt'; font-style: normal; font-weight: normal; src: url(" + css_url + "); format('truetype'); } body { font-family: 'wpt';}"));
+      document.head.appendChild(style);
+      css_test.step_timeout(
+          queryXhr.bind(this, font_url,
+                        function(message) {
+                          css_test.step(function() {
+                            assert_own_property(message, "headers");
+                            assert_own_property(message, "referrer");
+                            assert_equals(message.referrer, location.origin + "/");
+                          });
+                          css_test.done();
+                        }),
+          1000);
+      </script>
+
+    <div id="log"></div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/referrer-policy/css-integration/font-face/processing-instruction.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>CSS integration - Font from external stylesheet inserted via a ProcessingInstruction</title>
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <script src="/common/utils.js"></script>
+    <!-- Common global functions for referrer-policy tests. -->
+    <script src="/referrer-policy/generic/common.js"></script>
+    <meta name="referrer" content="never">
+  </head>
+  <body>
+    <p>Check that resources from external stylesheets (referenced from a
+    ProcessingInstruction) are loaded with the referrer and referrer policy
+    from the external stylesheet.</p>
+
+    <div class="styled"></div>
+
+    <script>
+      var css_test = async_test("Font from external stylesheet (from ProcessingInstruction).");
+      var id = token();
+      var url_prefix = location.protocol + "//www1." + location.hostname + ":" + location.port;
+      var css_url = url_prefix + "/referrer-policy/generic/subresource/stylesheet.py?id=" + id;
+      var font_url = url_prefix + "/referrer-policy/generic/subresource/font.py" +
+                     "?id=" + id + "&report-headers";
+
+      var processingInstruction = document.createProcessingInstruction("xml-stylesheet", "href=\"" + css_url + "\" type=\"text/css\"");
+      css_test.step_timeout(
+          queryXhr.bind(this, font_url,
+                        function(message) {
+                          css_test.step(function() {
+                            assert_own_property(message, "headers");
+                            assert_own_property(message, "referrer");
+                            assert_equals(message.referrer, css_url);
+                          });
+                          css_test.done();
+                        }),
+          1000);
+      document.insertBefore(processingInstruction, document.firstChild);
+    </script>
+
+    <div id="log"></div>
+  </body>
+</html>
rename from testing/web-platform/tests/referrer-policy/css-integration/README.md
rename to testing/web-platform/tests/referrer-policy/css-integration/image/README.md
rename from testing/web-platform/tests/referrer-policy/css-integration/external-import-stylesheet.html
rename to testing/web-platform/tests/referrer-policy/css-integration/image/external-import-stylesheet.html
rename from testing/web-platform/tests/referrer-policy/css-integration/external-stylesheet.html
rename to testing/web-platform/tests/referrer-policy/css-integration/image/external-stylesheet.html
rename from testing/web-platform/tests/referrer-policy/css-integration/inline-style.html
rename to testing/web-platform/tests/referrer-policy/css-integration/image/inline-style.html
rename from testing/web-platform/tests/referrer-policy/css-integration/internal-import-stylesheet.html
rename to testing/web-platform/tests/referrer-policy/css-integration/image/internal-import-stylesheet.html
rename from testing/web-platform/tests/referrer-policy/css-integration/internal-stylesheet.html
rename to testing/web-platform/tests/referrer-policy/css-integration/image/internal-stylesheet.html
rename from testing/web-platform/tests/referrer-policy/css-integration/presentation-attribute.html
rename to testing/web-platform/tests/referrer-policy/css-integration/image/presentation-attribute.html
rename from testing/web-platform/tests/referrer-policy/css-integration/processing-instruction.html
rename to testing/web-platform/tests/referrer-policy/css-integration/image/processing-instruction.html
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/referrer-policy/generic/subresource/font.py
@@ -0,0 +1,71 @@
+import os, sys, json, base64
+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
+import subresource
+
+def generate_payload(request, server_data):
+    data = ('{"headers": %(headers)s}') % server_data
+    if "id" in request.GET:
+        request.server.stash.put(request.GET["id"], data)
+    return base64.decodestring("AAEAAAANAIAAAwBQRkZUTU6u6MkAAAXcAAAAHE9TLzJWYW"
+                               "QKAAABWAAAAFZjbWFwAA8D7wAAAcAAAAFCY3Z0IAAhAnkA"
+                               "AAMEAAAABGdhc3D//wADAAAF1AAAAAhnbHlmCC6aTwAAAx"
+                               "QAAACMaGVhZO8ooBcAAADcAAAANmhoZWEIkAV9AAABFAAA"
+                               "ACRobXR4EZQAhQAAAbAAAAAQbG9jYQBwAFQAAAMIAAAACm"
+                               "1heHAASQA9AAABOAAAACBuYW1lehAVOgAAA6AAAAIHcG9z"
+                               "dP+uADUAAAWoAAAAKgABAAAAAQAAMhPyuV8PPPUACwPoAA"
+                               "AAAMU4Lm0AAAAAxTgubQAh/5wFeAK8AAAACAACAAAAAAAA"
+                               "AAEAAAK8/5wAWgXcAAAAAAV4AAEAAAAAAAAAAAAAAAAAAA"
+                               "AEAAEAAAAEAAwAAwAAAAAAAgAAAAEAAQAAAEAALgAAAAAA"
+                               "AQXcAfQABQAAAooCvAAAAIwCigK8AAAB4AAxAQIAAAIABg"
+                               "kAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZABAAEEAQQMg"
+                               "/zgAWgK8AGQAAAABAAAAAAAABdwAIQAAAAAF3AAABdwAZA"
+                               "AAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAA"
+                               "BAAEAAEAAABB//8AAABB////wgABAAAAAAAAAQYAAAEAAA"
+                               "AAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA"
+                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAA"
+                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+                               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+                               "AAAAAAAAAAAAAAAAAAAhAnkAAAAqACoAKgBGAAAAAgAhAA"
+                               "ABKgKaAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCx"
+                               "AwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIREnMxEjIQEJ6M"
+                               "fHApr9ZiECWAAAAwBk/5wFeAK8AAMABwALAAABNSEVATUh"
+                               "FQE1IRUB9AH0/UQDhPu0BRQB9MjI/tTIyP7UyMgAAAAAAA"
+                               "4ArgABAAAAAAAAACYATgABAAAAAAABAAUAgQABAAAAAAAC"
+                               "AAYAlQABAAAAAAADACEA4AABAAAAAAAEAAUBDgABAAAAAA"
+                               "AFABABNgABAAAAAAAGAAUBUwADAAEECQAAAEwAAAADAAEE"
+                               "CQABAAoAdQADAAEECQACAAwAhwADAAEECQADAEIAnAADAA"
+                               "EECQAEAAoBAgADAAEECQAFACABFAADAAEECQAGAAoBRwBD"
+                               "AG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADAAOA"
+                               "AgAE0AbwB6AGkAbABsAGEAIABDAG8AcgBwAG8AcgBhAHQA"
+                               "aQBvAG4AAENvcHlyaWdodCAoYykgMjAwOCBNb3ppbGxhIE"
+                               "NvcnBvcmF0aW9uAABNAGEAcgBrAEEAAE1hcmtBAABNAGUA"
+                               "ZABpAHUAbQAATWVkaXVtAABGAG8AbgB0AEYAbwByAGcAZQ"
+                               "AgADIALgAwACAAOgAgAE0AYQByAGsAQQAgADoAIAA1AC0A"
+                               "MQAxAC0AMgAwADAAOAAARm9udEZvcmdlIDIuMCA6IE1hcm"
+                               "tBIDogNS0xMS0yMDA4AABNAGEAcgBrAEEAAE1hcmtBAABW"
+                               "AGUAcgBzAGkAbwBuACAAMAAwADEALgAwADAAMAAgAABWZX"
+                               "JzaW9uIDAwMS4wMDAgAABNAGEAcgBrAEEAAE1hcmtBAAAA"
+                               "AgAAAAAAAP+DADIAAAABAAAAAAAAAAAAAAAAAAAAAAAEAA"
+                               "AAAQACACQAAAAAAAH//wACAAAAAQAAAADEPovuAAAAAMU4"
+                               "Lm0AAAAAxTgubQ==");
+
+def generate_report_headers_payload(request, server_data):
+    stashed_data = request.server.stash.take(request.GET["id"])
+    return stashed_data
+
+def main(request, response):
+    handler = lambda data: generate_payload(request, data)
+    content_type = 'application/x-font-truetype; charset=utf-8'
+
+    if "report-headers" in request.GET:
+        handler = lambda data: generate_report_headers_payload(request, data)
+        content_type = 'application/json'
+
+    subresource.respond(request,
+                        response,
+                        payload_generator = handler,
+                        content_type = content_type,
+                        access_control_allow_origin = "*")
--- a/testing/web-platform/tests/referrer-policy/generic/subresource/stylesheet.py
+++ b/testing/web-platform/tests/referrer-policy/generic/subresource/stylesheet.py
@@ -1,26 +1,38 @@
 import os, sys, json
 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
 import subresource
 
 def generate_payload(request, server_data):
+    data = ('{"headers": %(headers)s}') % server_data
+    if "id" in request.GET:
+        request.server.stash.put(request.GET["id"], data)
     return subresource.get_template("stylesheet.css.template") % {"id": request.GET["id"]}
 
 def generate_import_rule(request, server_data):
     data = "@import url('%(url)s?id=%(id)s');" % {
         "id": request.GET["id"],
         "url": subresource.create_redirect_url(request, cross_origin = True)
     }
     return data
 
+def generate_report_headers_payload(request, server_data):
+    stashed_data = request.server.stash.take(request.GET["id"])
+    return stashed_data
+
 def main(request, response):
     payload_generator = lambda data: generate_payload(request, data)
+    content_type = "text/css",
     if "import-rule" in request.GET:
         payload_generator = lambda data: generate_import_rule(request, data)
 
+    if "report-headers" in request.GET:
+        payload_generator = lambda data: generate_report_headers_payload(request, data)
+        content_type = 'application/json'
+
     subresource.respond(
         request,
         response,
         payload_generator = payload_generator,
-        content_type = "text/css",
+        content_type = content_type,
         maybe_additional_headers = { "Referrer-Policy": "unsafe-url" })
 
--- a/testing/web-platform/tests/referrer-policy/generic/template/stylesheet.css.template
+++ b/testing/web-platform/tests/referrer-policy/generic/template/stylesheet.css.template
@@ -1,3 +1,14 @@
 div.styled::before {
   content:url(/referrer-policy/generic/subresource/image.py?id=%(id)s)
 }
+
+@font-face {
+  font-family: 'wpt';
+  font-style: normal;
+  font-weight: normal;
+  src: url(/referrer-policy/generic/subresource/font.py?id=%(id)s) format('truetype');
+}
+
+body {
+  font-family: 'wpt' ;
+}