Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Unified Diff: LayoutTests/http/tests/serviceworker/fetch-access-control.html

Issue 333423004: moved to https://codereview.chromium.org/399543002/ (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: cleanup test Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | LayoutTests/http/tests/serviceworker/fetch-access-control-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: LayoutTests/http/tests/serviceworker/fetch-access-control.html
diff --git a/LayoutTests/http/tests/serviceworker/fetch-access-control.html b/LayoutTests/http/tests/serviceworker/fetch-access-control.html
new file mode 100644
index 0000000000000000000000000000000000000000..64d1fbc41017c73e1cdbd6e7694bc1c28ce6ded5
--- /dev/null
+++ b/LayoutTests/http/tests/serviceworker/fetch-access-control.html
@@ -0,0 +1,518 @@
+<!DOCTYPE html>
+<title>Service Worker: fetch()</title>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.js"></script>
+<script>
+var test = async_test('Verify access control of fetch() in a Service Worker');
+test.step(function() {
+ window.addEventListener('message', test.step_func(onMessage), false);
+ var scope = 'resources/fetch-access-control-iframe.html';
+ service_worker_unregister_and_register(
+ test, 'resources/fetch-access-control-worker.js', scope).then(test.step_func(onRegister));
+
+ var kBaseUrl = 'http://127.0.0.1:8000/serviceworker/resources/fetch-access-control.php?';
+ var kCorsBaseUrl = 'http://localhost:8000/serviceworker/resources/fetch-access-control.php?';
+ var kBaseRedirectUrl = 'http://127.0.0.1:8000/serviceworker/resources/redirect.php?Redirect=';
+ var kIframeUrl = 'http://127.0.0.1:8000/serviceworker/resources/fetch-access-control-iframe.html';
+ var kWorkerUrl = 'http://127.0.0.1:8000/serviceworker/resources/fetch-access-control-worker.js';
+
+ var checkFetchResult = function (expected, url, data) {
+ assert_equals(data.fetchResult, expected, url + ' should be ' + expected);
+ };
+ var checkFetchResponseBody = function (hasBody, url, data) {
+ assert_equals(data.fetchResult, 'resolved', 'fetchResult must be resolved. url = ' + url);
+ assert_equals(data.hasBody, hasBody, 'hasBody must match. url = ' + url);
+ };
+ var checkFetchResponseHeader = function (name, expected, url, data) {
+ assert_equals(data.fetchResult, 'resolved', 'fetchResult must be resolved. url = ' + url);
+ var exist = false;
+ for (var i = 0; i < data.headers.length; ++i) {
+ if (data.headers[i][0] == name) {
+ exist = true;
+ }
+ }
+ assert_equals(exist, expected, 'checkFetchResponseHeader failed url:' + url + ' name:' + name);
+ };
+ var checkFetchResponseType = function (type, url, data) {
+ assert_equals(data.fetchResult, 'resolved', 'fetchResult must be resolved. url = ' + url);
+ assert_equals(data.type, type, 'type must match. url = ' + url);
+ };
+ var fetchResolved = checkFetchResult.bind(this, 'resolved');
+ var fetchRejected = checkFetchResult.bind(this, 'rejected');
+ var fetchError = checkFetchResult.bind(this, 'error');
+ var hasBody = checkFetchResponseBody.bind(this, true);
+ var noBody = checkFetchResponseBody.bind(this, false);
+ var hasContentLength = checkFetchResponseHeader.bind(this, 'content-length', true);
+ var noContentLength = checkFetchResponseHeader.bind(this, 'content-length', false);
+ var hasCustomServerHeader = checkFetchResponseHeader.bind(this, 'x-serviceworker-serverheader', true);
+ var noCustomServerHeader = checkFetchResponseHeader.bind(this, 'x-serviceworker-serverheader', false);
+ var typeBasic = checkFetchResponseType.bind(this, 'basic');
+ var typeCors = checkFetchResponseType.bind(this, 'cors');
+ var typeDefault = checkFetchResponseType.bind(this, 'default');
+ var typeError = checkFetchResponseType.bind(this, 'error');
+ var typeOpaque = checkFetchResponseType.bind(this, 'opaque');
+
+ var checkJsonpResult = function (expected, url, data) {
+ assert_equals(data.jsonpResult, expected, url + ' jsonpResult should match');
+ };
+ var checkJsonpHeader = function (name, value, url, data) {
+ assert_equals(data.jsonpResult, 'success', url + ' jsonpResult must be success');
+ assert_equals(data.headers[name], value,
+ 'Request header to ' + url + ' which name is ' + name + ' should be ' + value);
+ };
+ var checkJsonpMethod = function (method, url, data) {
+ assert_equals(data.jsonpResult, 'success', url + ' jsonpResult must be success');
+ assert_equals(data.method, method, 'Method must match url:' + url);
+ };
+ var checkJsonpAuth = function (username, password, url, data) {
+ assert_equals(data.jsonpResult, 'success', url + ' jsonpResult must be success');
+ assert_equals(data.username, username, 'Username must match. url = ' + url);
+ assert_equals(data.password, password, 'Password must match. url = ' + url);
+ };
+ var checkJsonpError = checkJsonpResult.bind(this, 'error');
+ var checkJsonpSuccess = checkJsonpResult.bind(this, 'success');
+ var hasCustomHeader = checkJsonpHeader.bind(this, 'x-serviceworker-test', 'test');
+ var noCustomHeader = checkJsonpHeader.bind(this, 'x-serviceworker-test', undefined);
+ var methodIsGET = checkJsonpMethod.bind(this, 'GET');
+ var methodIsPOST = checkJsonpMethod.bind(this, 'POST');
+ var methodIsPUT = checkJsonpMethod.bind(this, 'PUT');
+ var methodIsXXX = checkJsonpMethod.bind(this, 'XXX');
+ var authCheck1 = checkJsonpAuth.bind(this, 'username1', 'password1');
+ var authCheck2 = checkJsonpAuth.bind(this, 'username2', 'password2');
+
+ var testTargets = [];
+ testTargets.push([kBaseUrl + 'method=GET',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET]]);
+ testTargets.push([kBaseUrl + 'method=GET&headers={}',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET]]);
+ testTargets.push([kBaseUrl + 'method=GET&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET, noCustomHeader]]);
+ testTargets.push([kBaseUrl + 'method=POST&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsPOST, noCustomHeader]]);
+ testTargets.push([kBaseUrl + 'method=PUT',
+ [fetchError]]);
+ testTargets.push([kBaseUrl + 'method=XXX',
+ [fetchError]]);
+
+ testTargets.push([kBaseUrl + 'mode=same-origin&method=GET',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET]]);
+ testTargets.push([kBaseUrl + 'mode=same-origin&method=GET&headers={}',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET]]);
+ testTargets.push([kBaseUrl + 'mode=same-origin&method=GET&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET, hasCustomHeader]]);
+ testTargets.push([kBaseUrl + 'mode=same-origin&method=POST&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsPOST, hasCustomHeader]]);
+ testTargets.push([kBaseUrl + 'mode=same-origin&method=PUT&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kBaseUrl + 'mode=same-origin&method=XXX&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsXXX, hasCustomHeader]]);
+
+ testTargets.push([kBaseUrl + 'mode=no-cors&method=GET',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET]]);
+ testTargets.push([kBaseUrl + 'mode=no-cors&method=GET&headers={}',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET]]);
+ testTargets.push([kBaseUrl + 'mode=no-cors&method=GET&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET, noCustomHeader]]);
+ testTargets.push([kBaseUrl + 'mode=no-cors&method=POST&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsPOST, noCustomHeader]]);
+ testTargets.push([kBaseUrl + 'mode=no-cors&method=PUT',
+ [fetchError]]);
+ testTargets.push([kBaseUrl + 'mode=no-cors&method=XXX',
+ [fetchError]]);
+
+ testTargets.push([kBaseUrl + 'mode=cors&method=GET',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET]]);
+ testTargets.push([kBaseUrl + 'mode=cors&method=GET&headers={}',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET]]);
+ testTargets.push([kBaseUrl + 'mode=cors&method=GET&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsGET, hasCustomHeader]]);
+ testTargets.push([kBaseUrl + 'mode=cors&method=POST&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsPOST, hasCustomHeader]]);
+ testTargets.push([kBaseUrl + 'mode=cors&method=PUT&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kBaseUrl + 'mode=cors&method=XXX&headers=CUSTOM',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeBasic],
+ [methodIsXXX, hasCustomHeader]]);
+
+ // CORS test
+ testTargets.push([kCorsBaseUrl + 'method=GET&headers=CUSTOM',
+ [fetchResolved, noContentLength, noCustomServerHeader, noBody, typeOpaque],
+ [methodIsGET, noCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'method=POST&headers=CUSTOM',
+ [fetchResolved, noContentLength, noCustomServerHeader, noBody, typeOpaque],
+ [methodIsPOST, noCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'method=PUT&headers=CUSTOM',
+ [fetchError]]);
+ testTargets.push([kCorsBaseUrl + 'method=XXX&headers=CUSTOM',
+ [fetchError]]);
+
+ testTargets.push([kCorsBaseUrl + 'mode=same-origin&method=GET', [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=same-origin&method=POST', [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=same-origin&method=PUT', [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=same-origin&method=XXX', [fetchRejected]]);
+
+ testTargets.push([kCorsBaseUrl + 'mode=no-cors&method=GET&headers=CUSTOM',
+ [fetchResolved, noContentLength, noCustomServerHeader, noBody, typeOpaque],
+ [methodIsGET, noCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=no-cors&method=POST&headers=CUSTOM',
+ [fetchResolved, noContentLength, noCustomServerHeader, noBody, typeOpaque],
+ [methodIsPOST, noCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=no-cors&method=PUT&headers=CUSTOM',
+ [fetchError]]);
+ testTargets.push([kCorsBaseUrl + 'mode=no-cors&method=XXX&headers=CUSTOM',
+ [fetchError]]);
+
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&ACAOrigin=*',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsGET]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&ACAOrigin=http://127.0.0.1:8000',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsGET]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&ACAOrigin=http://127.0.0.1:8000,http://www.example.com',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&ACAOrigin=http://www.example.com',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&ACAOrigin=*&ACEHeaders=X-ServiceWorker-ServerHeader',
+ [fetchResolved, noContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsGET]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&ACAOrigin=http://127.0.0.1:8000&ACEHeaders=X-ServiceWorker-ServerHeader',
+ [fetchResolved, noContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsGET]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&ACAOrigin=*&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsGET]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&ACAOrigin=http://127.0.0.1:8000&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsGET]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&headers=CUSTOM',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&headers=CUSTOM&ACAOrigin=*',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&headers=CUSTOM&ACAOrigin=http://127.0.0.1:8000',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&headers=CUSTOM&ACAOrigin=*&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsGET, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&headers=CUSTOM&ACAOrigin=http://127.0.0.1:8000&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsGET, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&headers=CUSTOM&ACAOrigin=*&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsGET, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=GET&headers=CUSTOM&ACAOrigin=http://127.0.0.1:8000&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsGET, hasCustomHeader]]);
+
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&ACAOrigin=*',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&ACAOrigin=http://127.0.0.1:8000',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&ACAOrigin=http://127.0.0.1:8000,http://www.example.com',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&ACAOrigin=http://www.example.com',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&ACAOrigin=*&ACEHeaders=X-ServiceWorker-ServerHeader',
+ [fetchResolved, noContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&ACAOrigin=http://127.0.0.1:8000&ACEHeaders=X-ServiceWorker-ServerHeader',
+ [fetchResolved, noContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&ACAOrigin=*&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&ACAOrigin=http://127.0.0.1:8000&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&headers=CUSTOM',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&headers=CUSTOM&ACAOrigin=*',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&headers=CUSTOM&ACAOrigin=*&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&headers=CUSTOM&ACAOrigin=*&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&headers=CUSTOM&ACAOrigin=http://127.0.0.1:8000',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&headers=CUSTOM&ACAOrigin=http://127.0.0.1:8000&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=POST&headers=CUSTOM&ACAOrigin=http://127.0.0.1:8000&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPOST, hasCustomHeader]]);
+
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAMethods=PUT',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=*',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=*&ACAMethods=PUT',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=http://127.0.0.1:8000',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=http://127.0.0.1:8000&ACAMethods=PUT',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT, XXX',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=PUT&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsPUT, hasCustomHeader]]);
+
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAMethods=XXX',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=*',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=*&ACAMethods=XXX',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=*&headers=CUSTOM&ACAMethods=XXX',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=*&headers=CUSTOM&ACAMethods=XXX&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=*&headers=CUSTOM&ACAMethods=XXX&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=http://127.0.0.1:8000',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=http://127.0.0.1:8000&ACAMethods=XXX',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=XXX',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=XXX&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=XXX&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT, XXX',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test',
+ [fetchResolved, noContentLength, noCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX, hasCustomHeader]]);
+ testTargets.push([kCorsBaseUrl + 'mode=cors&method=XXX&ACAOrigin=http://127.0.0.1:8000&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader',
+ [fetchResolved, hasContentLength, hasCustomServerHeader, hasBody, typeCors],
+ [methodIsXXX, hasCustomHeader]]);
+
+ // Referer check
+ testTargets.push([kBaseUrl + 'ignore=true',
+ [],
+ [checkJsonpHeader.bind(this, 'Referer', kIframeUrl)]]);
+ testTargets.push([kBaseUrl + 'noChange=true',
+ [fetchResolved],
+ [checkJsonpHeader.bind(this, 'Referer', kWorkerUrl)]]);
+ testTargets.push([kBaseUrl ,
+ [fetchResolved],
+ [checkJsonpHeader.bind(this, 'Referer', kWorkerUrl)]]);
+
+ // Auth check
+ testTargets.push([kBaseUrl + 'Auth',
+ [fetchResolved, hasBody], [checkJsonpError]]);
+ testTargets.push([kBaseUrl + 'Auth&credentials=ommit',
+ [fetchResolved, hasBody], [checkJsonpError]]);
+ testTargets.push([kBaseUrl + 'Auth&credentials=include',
+ [fetchResolved, hasBody], [authCheck1]]);
+ testTargets.push([kBaseUrl + 'Auth&credentials=same-origin',
+ [fetchResolved, hasBody], [authCheck1]]);
+
+ testTargets.push([kBaseUrl + 'Auth&mode=no-cors&credentials=ommit',
+ [fetchResolved, hasBody], [checkJsonpError]]);
+ testTargets.push([kBaseUrl + 'Auth&mode=no-cors&credentials=include',
+ [fetchResolved, hasBody], [authCheck1]]);
+ testTargets.push([kBaseUrl + 'Auth&mode=no-cors&credentials=same-origin',
+ [fetchResolved, hasBody], [authCheck1]]);
+
+ testTargets.push([kBaseUrl + 'Auth&mode=same-origin&credentials=ommit',
+ [fetchResolved, hasBody], [checkJsonpError]]);
+ testTargets.push([kBaseUrl + 'Auth&mode=same-origin&credentials=include',
+ [fetchResolved, hasBody], [authCheck1]]);
+ testTargets.push([kBaseUrl + 'Auth&mode=same-origin&credentials=same-origin',
+ [fetchResolved, hasBody], [authCheck1]]);
+
+ testTargets.push([kBaseUrl + 'Auth&mode=cors&credentials=ommit',
+ [fetchResolved, hasBody], [checkJsonpError]]);
+ testTargets.push([kBaseUrl + 'Auth&mode=cors&credentials=include',
+ [fetchResolved, hasBody], [authCheck1]]);
+ testTargets.push([kBaseUrl + 'Auth&mode=cors&credentials=same-origin',
+ [fetchResolved, hasBody], [authCheck1]]);
+
+ testTargets.push([kCorsBaseUrl + 'Auth',
+ [fetchResolved, noBody], [checkJsonpError]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&credentials=ommit',
+ [fetchResolved, noBody], [checkJsonpError]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&credentials=include',
+ [fetchResolved, noBody], [authCheck2]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&credentials=same-origin',
+ [fetchResolved, noBody], [authCheck2]]);
+
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=no-cors&credentials=ommit',
+ [fetchResolved, noBody], [checkJsonpError]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=no-cors&credentials=include',
+ [fetchResolved, noBody], [authCheck2]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=no-cors&credentials=same-origin',
+ [fetchResolved, noBody], [authCheck2]]);
+
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=same-origin&credentials=ommit',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=same-origin&credentials=include',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=same-origin&credentials=same-origin',
+ [fetchRejected]]);
+
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=cors&credentials=ommit',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=cors&credentials=include',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=cors&credentials=same-origin',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=cors&credentials=include&ACAOrigin=*',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=cors&credentials=include&ACAOrigin=http://127.0.0.1:8000',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=cors&credentials=include&ACAOrigin=*&ACACredentials=true',
+ [fetchRejected]]);
+ testTargets.push([kCorsBaseUrl + 'Auth&mode=cors&credentials=include&ACAOrigin=http://127.0.0.1:8000&ACACredentials=true',
+ [fetchResolved, hasBody], [authCheck2]]);
+
+
+
+ // Redirect
+ testTargets.push([kBaseRedirectUrl + encodeURIComponent(kBaseUrl),
+ [fetchRejected]]);
+ testTargets.push([kBaseRedirectUrl + encodeURIComponent(kCorsBaseUrl),
+ [fetchRejected]]);
+
+ function onRegister(worker) {
+ worker.addEventListener('statechange', test.step_func(onStateChange));
+ var messageChannel = new MessageChannel();
+ messageChannel.port1.onmessage = test.step_func(onWorkerMessage);
+ worker.postMessage({port: messageChannel.port2}, [messageChannel.port2]);
+ }
+
+ var jsonpResultCount = 0;
+
+ function onWorkerMessage(e) {
+ var message = e.data;
+ if (message.fetchResult == "resolved" && message.originalURL != testTargets[jsonpResultCount][0]) {
+ // Ignored redirected fetch.
+ return;
+ }
+ testTargets[jsonpResultCount][1].forEach(function(checkFunc){
+ checkFunc.call(this, testTargets[jsonpResultCount][0], message);
+ });
+ }
+
+ function onMessage(e) {
+ if (e.origin == 'http://localhost:8000') {
+ loadNext();
+ return;
+ }
+ var message = e.data;
+ if (testTargets[jsonpResultCount][2]) {
+ testTargets[jsonpResultCount][2].forEach(function(checkFunc){
+ checkFunc.call(this, testTargets[jsonpResultCount][0], message);
+ });
+ }
+ ++jsonpResultCount;
+ if (jsonpResultCount == testTargets.length) {
+ service_worker_unregister_and_done(test, scope);
+ } else {
+ loadNext();
+ }
+ }
+ var frameWindow = {};
+ function loadNext() {
+ frameWindow.postMessage(
+ {url: testTargets[jsonpResultCount][0]},
+ kIframeUrl);
+ }
+ function onStateChange(event) {
+ if (event.target.state != 'activated')
+ return;
+ with_iframe('resources/fetch-access-control-iframe.html')
+ .then(function(frame) {
+ frameWindow = frame.contentWindow;
+ login1();
+ });
+ }
+ function login1() {
+ var xhr = new XMLHttpRequest();
+ xhr.addEventListener('load', test.step_func(login2), false);
+ xhr.open('GET',
+ 'http://127.0.0.1:8000/serviceworker/resources/fetch-access-control.php?Auth',
+ true, 'username1', 'password1');
+ xhr.send();
+ }
+ function login2() {
+ with_iframe('http://localhost:8000/serviceworker/resources/fetch-access-control-login.html')
+ }
+});
+</script>
« no previous file with comments | « no previous file | LayoutTests/http/tests/serviceworker/fetch-access-control-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698