| Index: third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/client-navigate-worker.js
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/client-navigate-worker.js b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/client-navigate-worker.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3f24240788126ff2c57aab1402b7de37a8d8c3ce
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/client-navigate-worker.js
|
| @@ -0,0 +1,71 @@
|
| +importScripts("worker-testharness.js");
|
| +importScripts("test-helpers.sub.js");
|
| +importScripts("get-host-info.sub.js")
|
| +importScripts("testharness-helpers.js")
|
| +
|
| +self.onfetch = function(e) {
|
| + if (e.request.url.indexOf("client-navigate-frame.html") >= 0) {
|
| + if (e.clientId === null) {
|
| + e.respondWith(fetch(e.request));
|
| + } else {
|
| + e.respondWith(Response.error());
|
| + }
|
| + return;
|
| + }
|
| + e.respondWith(new Response(e.clientId));
|
| +};
|
| +
|
| +function pass(test, url) {
|
| + return { result: test,
|
| + url: url };
|
| +}
|
| +
|
| +function fail(test, reason) {
|
| + return { result: "FAILED " + test + " " + reason }
|
| +}
|
| +
|
| +self.onmessage = function(e) {
|
| + var port = e.data.port;
|
| + var test = e.data.test;
|
| + var clientId = e.data.clientId;
|
| + var clientUrl = "";
|
| + if (test === "test_client_navigate_success") {
|
| + promise_test(function(t) {
|
| + this.add_cleanup(() => port.postMessage(pass(test, clientUrl)));
|
| + return self.clients.get(clientId)
|
| + .then(client => client.navigate("client-navigated-frame.html"))
|
| + .then(client => {
|
| + clientUrl = client.url;
|
| + assert_true(client instanceof WindowClient);
|
| + })
|
| + .catch(unreached_rejection(t));
|
| + }, "Return value should be instance of WindowClient");
|
| + } else if (test === "test_client_navigate_failure") {
|
| + promise_test(function(t) {
|
| + return self.clients.get(clientId)
|
| + .then(client => assert_promise_rejects(client.navigate("http://example.com")))
|
| + .catch(unreached_rejection(t));
|
| + }, "Navigating to different origin should reject");
|
| +
|
| + promise_test(function(t) {
|
| + this.add_cleanup(function() { port.postMessage(pass(test, "")); });
|
| + return self.clients.get(clientId)
|
| + .then(client => promise_rejects(t, new TypeError(), client.navigate("about:blank")))
|
| + .catch(unreached_rejection(t));
|
| + }, "Navigating to about:blank should reject with TypeError")
|
| + } else if (test === "test_client_navigate_redirect") {
|
| + var host_info = get_host_info();
|
| + var url = new URL(host_info['HTTPS_REMOTE_ORIGIN']).toString() +
|
| + new URL("client-navigated-frame.html", location).pathname.substring(1);
|
| + promise_test(function(t) {
|
| + this.add_cleanup(() => port.postMessage(pass(test, clientUrl)));
|
| + return self.clients.get(clientId)
|
| + .then(client => client.navigate("redirect.py?Redirect=" + url))
|
| + .then(client => {
|
| + clientUrl = (client && client.url) || ""
|
| + assert_true(client === null);
|
| + })
|
| + .catch(unreached_rejection(t));
|
| + }, "Redirecting to another origin should resolve with null");
|
| + }
|
| +};
|
|
|