Split out prefetch test from fetch-destination.https.html, and disable for Firefox.

Differential Revision: https://phabricator.services.mozilla.com/D12944

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1503852
gecko-commit: d534baf412772ee14e0d89f651267cb4dc2a3f6c
gecko-integration-branch: autoland
gecko-reviewers: jgraham
diff --git a/fetch/api/request/destination/fetch-destination-prefetch.https.html b/fetch/api/request/destination/fetch-destination-prefetch.https.html
new file mode 100644
index 0000000..db99202
--- /dev/null
+++ b/fetch/api/request/destination/fetch-destination-prefetch.https.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<title>Fetch destination test for prefetching</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/common/media.js"></script>
+<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
+<script>
+let frame;
+
+// Set up the service worker and the frame.
+promise_test(t => {
+    const kScope = 'resources/empty.https.html';
+    const kScript = 'resources/fetch-destination-worker.js';
+    return service_worker_unregister_and_register(t, kScript, kScope)
+      .then(registration => {
+          add_completion_callback(() => {
+              registration.unregister();
+            });
+
+          return wait_for_state(t, registration.installing, 'activated');
+        })
+      .then(() => {
+          return with_iframe(kScope);
+        })
+      .then(f => {
+          frame = f;
+          add_completion_callback(() => { f.remove(); });
+        });
+  }, 'Initialize global state');
+
+// HTMLLinkElement with rel=prefetch - empty string destination
+promise_test(async t => {
+  await new Promise((resolve, reject) => {
+      let node = frame.contentWindow.document.createElement("link");
+      node.rel = "prefetch";
+      node.onload = resolve;
+      node.onerror = reject;
+      node.href = "dummy?dest=";
+      frame.contentWindow.document.body.appendChild(node);
+  }).catch(() => {
+      assert_unreached("Fetch errored.");
+  });
+}, 'HTMLLinkElement with rel=prefetch fetches with an empty string Request.destination');
+
+</script>
diff --git a/fetch/api/request/destination/fetch-destination.https.html b/fetch/api/request/destination/fetch-destination.https.html
index 5d9f717..27b5102 100644
--- a/fetch/api/request/destination/fetch-destination.https.html
+++ b/fetch/api/request/destination/fetch-destination.https.html
@@ -425,18 +425,4 @@
   });
 }, 'HTMLLinkElement with rel=preload and as=manifest fetches with a "manifest" Request.destination');
 
-// HTMLLinkElement with rel=prefetch - empty string destination
-promise_test(async t => {
-  await new Promise((resolve, reject) => {
-      let node = frame.contentWindow.document.createElement("link");
-      node.rel = "prefetch";
-      node.onload = resolve;
-      node.onerror = reject;
-      node.href = "dummy?dest=";
-      frame.contentWindow.document.body.appendChild(node);
-  }).catch(() => {
-      assert_unreached("Fetch errored.");
-  });
-}, 'HTMLLinkElement with rel=prefetch fetches with an empty string Request.destination');
-
 </script>