Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / files / resources / apply-blob-url-to-xhr.js
blob463704be76b1f352b2e914b0e2d2bf5420a2a5ec
1 function log(message)
3 if (self.importScripts) {
4 postMessage(message);
5 } else {
6 document.getElementById('console').appendChild(document.createTextNode(message + "\n"));
10 var uuidRegex = new RegExp('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}');
12 function replaceUUID(s)
14 return s.replace(uuidRegex, 'UUID');
17 function sendXMLHttpRequestSync(method, url)
19 var xhr = new XMLHttpRequest();
20 xhr.open(method, url, false);
21 try {
22 xhr.send();
23 log("Status: " + xhr.status);
24 log("Response: " + xhr.responseText);
25 } catch (error) {
26 log("Received exception, code: " + error.code + ", name: " + error.name + ", message: " + replaceUUID(error.message));
30 function sendXMLHttpRequestAsync(method, url)
32 return new Promise(function (resolve) {
33 var xhr = new XMLHttpRequest();
35 xhr.onload = function()
37 log("Status: " + xhr.status);
38 log("Response: " + xhr.responseText);
40 xhr.onerror = function()
42 log("Error event is dispatched");
44 xhr.onloadend = function()
46 resolve();
49 xhr.open(method, url, true);
50 try {
51 xhr.send();
52 } catch (error) {
53 log("Received exception, code: " + error.code + ", name: " + error.name + ", message: " + replaceUUID(error.message));
55 });
58 function runXHRs(file)
60 var fileURL = URL.createObjectURL(file);
62 log("Test that sync XMLHttpRequest GET succeeds.");
63 sendXMLHttpRequestSync("GET", fileURL);
65 log("Test that sync XMLHttpRequest POST fails.");
66 sendXMLHttpRequestSync("POST", fileURL);
68 log("Test that sync XMLHttpRequest GET fails after the blob URL is revoked.");
69 URL.revokeObjectURL(fileURL);
70 sendXMLHttpRequestSync("GET", fileURL);
72 fileURL = URL.createObjectURL(file);
74 log("Test that async XMLHttpRequest GET succeeds.");
75 sendXMLHttpRequestAsync("GET", fileURL).then(function()
77 log("Test that async XMLHttpRequest POST fails.");
78 return sendXMLHttpRequestAsync("POST", fileURL);
79 }).then(function()
81 log("Test that async XMLHttpRequest GET fails after the blob URL is revoked.");
82 URL.revokeObjectURL(fileURL);
83 return sendXMLHttpRequestAsync("GET", fileURL);
84 }).then(function()
86 log("DONE");
87 if (!self.importScripts && testRunner.notifyDone)
88 testRunner.notifyDone();
89 });
92 if (self.importScripts) {
93 onmessage = function(event)
95 runXHRs(event.data);