Index: LayoutTests/http/tests/serviceworker/registration.html |
diff --git a/LayoutTests/http/tests/serviceworker/registration.html b/LayoutTests/http/tests/serviceworker/registration.html |
index 34821c8a84628d4742ec39a124303085b7931630..6e13e0320259a5817552efc8fc78bf2265e8510f 100644 |
--- a/LayoutTests/http/tests/serviceworker/registration.html |
+++ b/LayoutTests/http/tests/serviceworker/registration.html |
@@ -8,7 +8,7 @@ |
promise_test(function(t) { |
var script = 'resources/registration-worker.js'; |
- var scope = '/registration/'; |
+ var scope = 'resources/registration/'; |
return navigator.serviceWorker.register(script, {scope: scope}) |
.then(function(registration) { |
assert_true(registration instanceof ServiceWorkerRegistration, |
@@ -19,6 +19,37 @@ promise_test(function(t) { |
promise_test(function(t) { |
var script = 'resources/registration-worker.js'; |
+ var scope = 'resources/'; |
+ return navigator.serviceWorker.register(script, {scope: scope}) |
+ .then(function(registration) { |
+ assert_true(registration instanceof ServiceWorkerRegistration, |
+ 'Successfully registered.'); |
+ service_worker_unregister_and_done(t, scope); |
+ }) |
+ }, 'Registering same scope as the script directory'); |
+ |
+promise_test(function(t) { |
+ var script = 'resources/registration-worker.js'; |
+ var scope = 'resources'; |
+ return assert_promise_rejects( |
+ navigator.serviceWorker.register(script, {scope: scope}), |
+ 'SecurityError', |
+ 'Registering same scope as the script directory without the last ' + |
+ 'slash should fail with SecurityError.'); |
+ }, 'Registering same scope as the script directory without the last slash'); |
+ |
+promise_test(function(t) { |
+ var script = 'resources/registration-worker.js'; |
+ var scope = 'different-directory/'; |
+ return assert_promise_rejects( |
+ navigator.serviceWorker.register(script, {scope: scope}), |
+ 'SecurityError', |
+ 'Registration scope outside the script directory should fail ' + |
+ 'with SecurityError.'); |
+ }, 'Registration scope outside the script directory'); |
+ |
+promise_test(function(t) { |
+ var script = 'resources/registration-worker.js'; |
var scope = 'http://example.com/'; |
return assert_promise_rejects( |
navigator.serviceWorker.register(script, {scope: scope}), |
@@ -28,40 +59,45 @@ promise_test(function(t) { |
promise_test(function(t) { |
var script = 'http://example.com/worker.js'; |
+ var scope = 'http://example.com/scope/'; |
return assert_promise_rejects( |
- navigator.serviceWorker.register(script), |
+ navigator.serviceWorker.register(script, {scope: scope}), |
'SecurityError', |
'Registration script outside domain should fail with SecurityError.'); |
}, 'Registering script outside domain'); |
promise_test(function(t) { |
- var script = 'no-such-worker.js'; |
+ var script = 'resources/no-such-worker.js'; |
+ var scope = 'resources/scope/no-such-worker'; |
return assert_promise_rejects( |
- navigator.serviceWorker.register(script), |
+ navigator.serviceWorker.register(script, {scope: scope}), |
'NetworkError', |
'Registration of non-existent script should fail.'); |
}, 'Registering non-existent script'); |
promise_test(function(t) { |
var script = 'resources/invalid-chunked-encoding.php'; |
+ var scope = 'resources/scope/invalid-chunked-encoding/'; |
return assert_promise_rejects( |
- navigator.serviceWorker.register(script), |
+ navigator.serviceWorker.register(script, {scope: scope}), |
'NetworkError', |
'Registration of invalid chunked encoding script should fail.'); |
}, 'Registering invalid chunked encoding script'); |
promise_test(function(t) { |
var script = 'resources/invalid-chunked-encoding-with-flush.php'; |
+ var scope = 'resources/scope/invalid-chunked-encoding-with-flush/'; |
return assert_promise_rejects( |
- navigator.serviceWorker.register(script), |
+ navigator.serviceWorker.register(script, {scope: scope}), |
'NetworkError', |
'Registration of invalid chunked encoding script should fail.'); |
}, 'Registering invalid chunked encoding script with flush'); |
promise_test(function(t) { |
var script = 'resources/plain-text-worker.php'; |
+ var scope = 'resources/scope/plain-text-worker/'; |
return assert_promise_rejects( |
- navigator.serviceWorker.register(script), |
+ navigator.serviceWorker.register(script, {scope: scope}), |
'SecurityError', |
'Registration of plain text script should fail.'); |
}, 'Registering script without correct MIME type'); |
@@ -69,8 +105,9 @@ promise_test(function(t) { |
promise_test(function(t) { |
var script = 'resources/redirect.php?Redirect=' + |
encodeURIComponent('/resources/registration-worker.js'); |
+ var scope = 'resources/sope/redirect/'; |
return assert_promise_rejects( |
- navigator.serviceWorker.register(script), |
+ navigator.serviceWorker.register(script, {scope: scope}), |
'SecurityError', |
'Registration of redirected script should fail.'); |
}, 'Registering redirected script'); |