Bug 1264792 - Update web platform tests of fetch and serviceworker draft
authorThomas Nguyen <tnguyen@mozilla.com>
Thu, 27 Oct 2016 18:19:14 +0800
changeset 430229 0cfc2907dd918ca831967d685de0729be7670502
parent 430228 7b328afb0e9731ed82f6477d3ff0fe084a5a09be
child 535160 146340822c88cd730a9afc1a05372f12333fdb0b
push id33776
push usertnguyen@mozilla.com
push dateThu, 27 Oct 2016 10:19:45 +0000
bugs1264792
milestone52.0a1
Bug 1264792 - Update web platform tests of fetch and serviceworker MozReview-Commit-ID: 2DNydORIOn3
testing/web-platform/tests/fetch/api/request/request-idl.html
testing/web-platform/tests/fetch/api/request/request-init-001.sub.html
testing/web-platform/tests/service-workers/service-worker/fetch-event.https.html
--- a/testing/web-platform/tests/fetch/api/request/request-idl.html
+++ b/testing/web-platform/tests/fetch/api/request/request-idl.html
@@ -65,17 +65,21 @@
       };
 
       enum RequestType { "", "audio", "font", "image", "script", "style", "track", "video" };
       enum RequestDestination { "", "document", "sharedworker", "subresource", "unknown", "worker" };
       enum RequestMode { "navigate", "same-origin", "no-cors", "cors" };
       enum RequestCredentials { "omit", "same-origin", "include" };
       enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" };
       enum RequestRedirect { "follow", "error", "manual" };
-      enum ReferrerPolicy { "", "no-referrer", "no-referrer-when-downgrade", "origin-only", "origin-when-cross-origin", "unsafe-url" };
+      enum ReferrerPolicy {
+        "", "no-referrer", "no-referrer-when-downgrade", "origin",
+        "origin-when-cross-origin", "unsafe-url", "same-origin", "strict-origin",
+        "strict-origin-when-cross-origin"
+      };
     </script>
     <script>
       var idlsArray = new IdlArray();
       var idl = document.getElementById("body-idl").innerHTML
       idl += document.getElementById("request-idl").innerHTML
 
       idlsArray.add_idls(idl);
       idlsArray.add_untested_idls("interface Headers {};");
--- a/testing/web-platform/tests/fetch/api/request/request-init-001.sub.html
+++ b/testing/web-platform/tests/fetch/api/request/request-init-001.sub.html
@@ -26,24 +26,30 @@
                                            ""
                                           ]
       };
       var referrerPolicies = {"givenValues" : [ "",
                                                 "no-referrer",
                                                 "no-referrer-when-downgrade",
                                                 "origin",
                                                 "origin-when-cross-origin",
-                                                "unsafe-url"
+                                                "unsafe-url",
+                                                "same-origin",
+                                                "strict-origin",
+                                                "strict-origin-when-cross-origin"
                                               ],
                               "expectedValues" : ["",
                                                   "no-referrer",
                                                   "no-referrer-when-downgrade",
                                                   "origin",
                                                   "origin-when-cross-origin",
-                                                  "unsafe-url"
+                                                  "unsafe-url",
+                                                  "same-origin",
+                                                  "strict-origin",
+                                                  "strict-origin-when-cross-origin"
                                                   ]
       };
       var modes = {"givenValues" : ["same-origin", "no-cors", "cors"],
                    "expectedValues" : ["same-origin", "no-cors", "cors"]
       };
       var credentials = {"givenValues" : ["omit", "same-origin", "include"],
                           "expectedValues" : ["omit", "same-origin", "include"]
       };
--- a/testing/web-platform/tests/service-workers/service-worker/fetch-event.https.html
+++ b/testing/web-platform/tests/service-workers/service-worker/fetch-event.https.html
@@ -195,16 +195,106 @@ function run_referrer_policy_tests(frame
         })
       .then(function(response) { return response.text(); })
       .then(function(response_text) {
           assert_equals(
             response_text,
             'Referrer: about:client\n' +
             'ReferrerPolicy: no-referrer',
             'Service Worker should respond to fetch with no referrer URL with "no-referrer"');
+          return frame.contentWindow.fetch('resources/simple.html?referrerFull',
+                                           {referrerPolicy: "same-origin", referrer: referrer});
+        })
+      .then(function(response) { return response.text(); })
+      .then(function(response_text) {
+          assert_equals(
+            response_text,
+            'Referrer: ' + href + '\n' +
+            'ReferrerPolicy: same-origin',
+            'Service Worker should respond to fetch with referrer URL with "same-origin" and a same origin request');
+          var http_url = get_host_info()['HTTPS_REMOTE_ORIGIN'] + base_path() +
+                         '/resources/simple.html?referrerFull';
+          return frame.contentWindow.fetch(http_url,
+                                           {referrerPolicy: "same-origin", referrer: referrer});
+        })
+      .then(function(response) { return response.text(); })
+      .then(function(response_text) {
+          assert_equals(
+            response_text,
+            'Referrer: about:client\n' +
+            'ReferrerPolicy: same-origin',
+            'Service Worker should respond to fetch with no referrer with "same-origin" and cross origin request');
+          var http_url = get_host_info()['HTTPS_REMOTE_ORIGIN'] + base_path() +
+                         '/resources/simple.html?referrerFull';
+          return frame.contentWindow.fetch(http_url,
+                                           {referrerPolicy: "strict-origin", referrer: referrer});
+        })
+      .then(function(response) { return response.text(); })
+      .then(function(response_text) {
+          assert_equals(
+            response_text,
+            'Referrer: ' + origin + '/' + '\n' +
+            'ReferrerPolicy: strict-origin',
+            'Service Worker should respond to fetch with the referrer origin  with "strict-origin" and a HTTPS cross origin request');
+          return frame.contentWindow.fetch('resources/simple.html?referrerFull',
+                                           {referrerPolicy: "strict-origin", referrer: referrer});
+        })
+      .then(function(response) { return response.text(); })
+      .then(function(response_text) {
+          assert_equals(
+            response_text,
+            'Referrer: ' + origin + '/' + '\n' +
+            'ReferrerPolicy: strict-origin',
+            'Service Worker should respond to fetch with the referrer origin with "strict-origin" and a same origin request');
+          var http_url = get_host_info()['HTTP_ORIGIN'] + base_path() +
+                         '/resources/simple.html?referrerFull';
+          return frame.contentWindow.fetch(http_url,
+                                           {referrerPolicy: "strict-origin", referrer: referrer});
+        })
+      .then(function(response) { return response.text(); })
+      .then(function(response_text) {
+          assert_equals(
+            response_text,
+            'Referrer: about:client\n' +
+            'ReferrerPolicy: strict-origin',
+            'Service Worker should respond to fetch with no referrer with "strict-origin" and a HTTP request');
+          return frame.contentWindow.fetch('resources/simple.html?referrerFull',
+                                           {referrerPolicy: "strict-origin-when-cross-origin", referrer: referrer});
+        })
+      .then(function(response) { return response.text(); })
+      .then(function(response_text) {
+          assert_equals(
+            response_text,
+            'Referrer: ' + href + '\n' +
+            'ReferrerPolicy: strict-origin-when-cross-origin',
+            'Service Worker should respond to fetch with the referrer URL with "strict-origin-when-cross-origin" and a same origin request');
+          var http_url = get_host_info()['HTTPS_REMOTE_ORIGIN'] + base_path() +
+                         '/resources/simple.html?referrerFull';
+          return frame.contentWindow.fetch(http_url,
+                                           {referrerPolicy: "strict-origin-when-cross-origin", referrer: referrer});
+        })
+      .then(function(response) { return response.text(); })
+      .then(function(response_text) {
+          assert_equals(
+            response_text,
+            'Referrer: ' + origin + '/' + '\n' +
+            'ReferrerPolicy: strict-origin-when-cross-origin',
+            'Service Worker should respond to fetch with the referrer origin with "strict-origin-when-cross-origin" and a HTTPS cross origin request');
+          var http_url = get_host_info()['HTTP_ORIGIN'] + base_path() +
+                         '/resources/simple.html?referrerFull';
+          return frame.contentWindow.fetch(http_url,
+                                           {referrerPolicy: "strict-origin-when-cross-origin", referrer: referrer});
+        })
+      .then(function(response) { return response.text(); })
+      .then(function(response_text) {
+          assert_equals(
+            response_text,
+            'Referrer: about:client\n' +
+            'ReferrerPolicy: strict-origin-when-cross-origin',
+            'Service Worker should respond to fetch with no referrer with "strict-origin-when-cross-origin" and a HTTP request');
         });
 }
 
 async_test(function(t) {
     var scope = 'resources/simple.html?referrerPolicy';
     var frame;
     service_worker_unregister_and_register(t, worker, scope)
       .then(function(reg) {