| Index: LayoutTests/http/tests/serviceworker/chromium/register-error-messages.html
|
| diff --git a/LayoutTests/http/tests/serviceworker/chromium/register-error-messages.html b/LayoutTests/http/tests/serviceworker/chromium/register-error-messages.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ea35b503c2c16afe7f4ef3f6ad766242d8d08a68
|
| --- /dev/null
|
| +++ b/LayoutTests/http/tests/serviceworker/chromium/register-error-messages.html
|
| @@ -0,0 +1,159 @@
|
| +<!DOCTYPE html>
|
| +<!-- This file tests JavaScript error messages of some of the
|
| +failure cases from http/tests/serviceworker/registration.html. It
|
| +should not be upstreamed to web platform tests since error messages
|
| +are not defined by the specification. -->
|
| +<title>Service Worker: Error messages for register()</title>
|
| +<script src="../../resources/testharness.js"></script>
|
| +<script src="../../resources/testharnessreport.js"></script>
|
| +<script>
|
| +
|
| +function assert_register_fails(script, scope, message) {
|
| + return navigator.serviceWorker.getRegistration(scope)
|
| + .then(function(registration) {
|
| + if (registration)
|
| + return registration.unregister();
|
| + return Promise.resolve();
|
| + })
|
| + .then(function() {
|
| + return navigator.serviceWorker.register(script, { scope: scope});
|
| + })
|
| + .then(
|
| + function() { assert_unreached('register should fail'); },
|
| + function(error) { assert_equals(error.message, message); });
|
| +}
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/registration-worker.js';
|
| + var scope = '../resources';
|
| + var message = 'Failed to register a ServiceWorker: The path of the ' +
|
| + 'provided scope (\'/serviceworker/resources\') is not under the max ' +
|
| + 'scope allowed (\'/serviceworker/resources/\'). Adjust the scope, ' +
|
| + 'move the Service Worker script, or use the Service-Worker-Allowed ' +
|
| + 'HTTP header to allow the scope.';
|
| + return assert_register_fails(script, scope, message);
|
| + }, '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/';
|
| + var message = 'Failed to register a ServiceWorker: The path of the ' +
|
| + 'provided scope (\'/serviceworker/different-directory/\') is not ' +
|
| + 'under the max scope allowed (\'/serviceworker/resources/\'). ' +
|
| + 'Adjust the scope, move the Service Worker script, or use the ' +
|
| + 'Service-Worker-Allowed HTTP header to allow the scope.';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registration scope outside the script directory');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/registration-worker.js';
|
| + var scope = 'http://example.com';
|
| + var message = 'Failed to get a ServiceWorkerRegistration: The origin of ' +
|
| + 'the provided documentURL (\'http://example.com\') does not match ' +
|
| + 'the current origin (\'http://127.0.0.1:8000\').';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registration scope outside domain');
|
| +
|
| +promise_test(function(t) {
|
| + var script = 'http://example.com/worker.js';
|
| + var scope = 'http://example.com/scope/';
|
| + var message = 'Failed to get a ServiceWorkerRegistration: The origin of ' +
|
| + 'the provided documentURL (\'http://example.com\') does not match ' +
|
| + 'the current origin (\'http://127.0.0.1:8000\').';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering script outside domain');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/no-such-worker.js';
|
| + var scope = '../resources/scope/no-such-worker';
|
| + var message = 'Failed to register a ServiceWorker: A bad HTTP response ' +
|
| + 'code (404) was received when fetching the script.';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering non-existent script');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/invalid-chunked-encoding.php';
|
| + var scope = '../resources/scope/invalid-chunked-encoding/';
|
| + var message = 'Failed to register a ServiceWorker: An unknown error ' +
|
| + 'occurred when fetching the script.';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering invalid chunked encoding script');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/mime-type-worker.php';
|
| + var scope = '../resources/scope/no-mime-type-worker/';
|
| + var message = 'Failed to register a ServiceWorker: The script does not ' +
|
| + 'have a MIME type.';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering script with no MIME type');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/mime-type-worker.php?mime=text/plain';
|
| + var scope = '../resources/scope/bad-mime-type-worker/';
|
| + var message = 'Failed to register a ServiceWorker: The script has an ' +
|
| + 'unsupported MIME type (\'text/plain\').';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering script with bad MIME type');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/redirect.php?Redirect=' +
|
| + encodeURIComponent('..//resources/registration-worker.js');
|
| + var scope = '../resources/scope/redirect/';
|
| + var message = 'Failed to register a ServiceWorker: The script resource ' +
|
| + 'is behind a redirect, which is disallowed.';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering redirected script');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/malformed-worker.php?parse-error';
|
| + var scope = '../resources/scope/parse-error';
|
| + var message = 'Failed to register a ServiceWorker: ServiceWorker script ' +
|
| + 'evaluation failed';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering script including parse error');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/malformed-worker.php?undefined-error';
|
| + var scope = '../resources/scope/undefined-error';
|
| + var message = 'Failed to register a ServiceWorker: ServiceWorker script ' +
|
| + 'evaluation failed';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering script including undefined error');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/malformed-worker.php?uncaught-exception';
|
| + var scope = '../resources/scope/uncaught-exception';
|
| + var message = 'Failed to register a ServiceWorker: ServiceWorker script ' +
|
| + 'evaluation failed';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering script including uncaught exception');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/malformed-worker.php?import-malformed-script';
|
| + var scope = '../resources/scope/import-malformed-script';
|
| + var message = 'Failed to register a ServiceWorker: ServiceWorker script ' +
|
| + 'evaluation failed';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering script importing malformed script');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources/malformed-worker.php?import-no-such-script';
|
| + var scope = '../resources/scope/import-no-such-script';
|
| + var message = 'Failed to register a ServiceWorker: ServiceWorker script ' +
|
| + 'evaluation failed';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Registering script importing non-existent script');
|
| +
|
| +promise_test(function(t) {
|
| + var script = '../resources%2fempty-worker.js';
|
| + var scope = '../resources/scope/encoded-slash-in-script-url';
|
| + var message = 'Failed to register a ServiceWorker: The provided scope ' +
|
| + '(\'http://127.0.0.1:8000/serviceworker/resources/scope/' +
|
| + 'encoded-slash-in-script-url\') or scriptURL ' +
|
| + '(\'http://127.0.0.1:8000/serviceworker/' +
|
| + 'resources%2fempty-worker.js\') ' +
|
| + 'includes a disallowed escape character.';
|
| + return assert_register_fails(script, scope, message);
|
| + }, 'Script URL including URL-encoded slash');
|
| +
|
| +</script>
|
|
|