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

Unified Diff: LayoutTests/http/tests/fetch/script-tests/fetch.js

Issue 1283163003: [Fetch][WIP] Support blob:, about:, and data: URLs. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Cleanup. Created 5 years, 3 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
Index: LayoutTests/http/tests/fetch/script-tests/fetch.js
diff --git a/LayoutTests/http/tests/fetch/script-tests/fetch.js b/LayoutTests/http/tests/fetch/script-tests/fetch.js
index 60974662b01e9fcf195a5b93bcbff316afe1fe4c..cdec19146dc44063899c728552d1abf48b77fa79 100644
--- a/LayoutTests/http/tests/fetch/script-tests/fetch.js
+++ b/LayoutTests/http/tests/fetch/script-tests/fetch.js
@@ -20,6 +20,77 @@ promise_test(function(t) {
function() {});
}, 'fetch non-HTTP(S) CORS');
+// Tests for non-HTTP(S) schemes.
+promise_test(function(t) {
+ var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'}));
+ return fetch(url)
+ .then(function(response) {
+ assert_equals(response.status, 200);
+ assert_equals(response.statusText, 'OK');
+ assert_equals(response.headers.get('Content-Type'), 'text/fox');
+ assert_equals(response.headers.get('Content-Length'), '3');
+ assert_equals(size(response.headers), 2);
+ return response.text();
+ })
+ .then(function(text) {
+ assert_equals(text, 'fox');
+ });
+ }, 'fetch blob: URL');
+
+promise_test(function(t) {
+ var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'}));
+ return fetch(url + 'invalid')
+ .then(
+ t.unreached_func('fetching non-existent blob: URL must fail'),
+ function() {});
+ }, 'fetch non-existent blob: URL');
+
+promise_test(function(t) {
+ return fetch('data:,Foobar')
+ .then(function(response) {
+ assert_equals(response.status, 200);
+ assert_equals(response.statusText, 'OK');
+ assert_equals(response.headers.get('Content-Type'),
+ 'text/plain;charset=US-ASCII');
+ assert_equals(size(response.headers), 1);
+ return response.text();
+ })
+ .then(function(text) {
+ assert_equals(text, 'Foobar');
+ });
+ }, 'fetch data: URL');
+
+promise_test(function(t) {
+ return fetch('data:text/html;charset=utf-8;base64,5paH5a2X')
+ .then(function(response) {
+ assert_equals(response.status, 200);
+ assert_equals(response.statusText, 'OK');
+ assert_equals(response.headers.get('Content-Type'),
+ 'text/html;charset=utf-8');
+ assert_equals(size(response.headers), 1);
+ return response.text();
+ })
+ .then(function(text) {
+ assert_equals(text, '\u6587\u5b57');
+ });
+ }, 'fetch data: URL with non-ASCII characters');
+
+promise_test(function(t) {
+ return fetch('data:text/html;base64,***')
+ .then(
+ t.unreached_func('fetching invalid data: URL must fail'),
+ function() {});
+ }, 'fetch invalid data: URL');
+
+// +disable all cors route
+// +allow first data: and all about:
+// data: all OK
+// Redirect -> data: same-origin: NG / no-cors: OK / cors: NG
+// about: all OK
+// Redirect -> about: all OK
+// blob: same-origin: check / no-cors: check-OK / cors: check-NG
+// Redirect -> blob: same-origin: NG / no-cors: OK / cors: NG
+
// https://fetch.spec.whatwg.org/#concept-basic-fetch
// The last statement:
// Otherwise

Powered by Google App Engine
This is Rietveld 408576698