1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/workers/test/xhr_worker.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,84 @@ 1.4 +/** 1.5 + * Any copyright is dedicated to the Public Domain. 1.6 + * http://creativecommons.org/publicdomain/zero/1.0/ 1.7 + */ 1.8 +var xhr = new XMLHttpRequest(); 1.9 + 1.10 +function onload(event) { 1.11 + if (event.target != xhr) { 1.12 + throw "onload event.target != xhr"; 1.13 + } 1.14 + 1.15 + if (event.target.status != 200) { 1.16 + var message = { type: "error", 1.17 + error: event.target.status }; 1.18 + postMessage(message); 1.19 + } 1.20 + 1.21 + var message = { type: "load", 1.22 + data: xhr.responseText }; 1.23 + postMessage(message); 1.24 +} 1.25 + 1.26 +xhr.onload = onload; 1.27 +xhr.addEventListener("load", onload, false); 1.28 +xhr.removeEventListener("load", onload, false); 1.29 +if (!xhr.onload) { 1.30 + var message = { type: "error", 1.31 + error: "Lost message listener!" }; 1.32 + postMessage(message); 1.33 +} 1.34 + 1.35 +xhr.onerror = function(event) { 1.36 + if (event.target != xhr) { 1.37 + throw "onerror event.target != xhr"; 1.38 + } 1.39 + var message = { type: "error", 1.40 + error: event.target.status }; 1.41 + postMessage(message); 1.42 +}; 1.43 +xhr.onerror = xhr.onerror; 1.44 +if (!xhr.onerror || xhr.onerror != xhr.onerror) { 1.45 + throw "onerror wasn't set properly"; 1.46 +} 1.47 + 1.48 +function onprogress(event) { 1.49 + if (event.target != xhr) { 1.50 + throw "onprogress event.target != xhr"; 1.51 + } 1.52 + var message = { type: "progress", 1.53 + current: event.loaded, 1.54 + total: event.total }; 1.55 + postMessage(message); 1.56 +} 1.57 +xhr.addEventListener("progress", onprogress, false); 1.58 + 1.59 +xhr.addEventListener("foopety", function(event) {}, false); 1.60 +xhr.removeEventListener("doopety", function(event) {}, false); 1.61 + 1.62 +xhr.onloadend = function(event) { 1.63 + var message = { type: "loadend" }; 1.64 + postMessage(message); 1.65 +} 1.66 + 1.67 +var upload = xhr.upload; 1.68 +upload.onprogress = function(event) { }; 1.69 +upload.addEventListener("foo", function(event) { }, false); 1.70 +upload.removeEventListener("foo", function(event) { }, false); 1.71 +upload.addEventListener("load", function(event) { }, false); 1.72 +upload.removeEventListener("foo", function(event) { }, false); 1.73 +upload.onload = function(event) { 1.74 + var message = { type: "upload.load" }; 1.75 + postMessage(message); 1.76 +} 1.77 + 1.78 +onmessage = function(event) { 1.79 + if (xhr.DONE != 4 || XMLHttpRequest.DONE != 4) { 1.80 + throw "xhr constants not correct!"; 1.81 + } 1.82 + if (xhr.readystate > xhr.UNSENT) { 1.83 + throw "XHR already running!"; 1.84 + } 1.85 + xhr.open("POST", event.data); 1.86 + xhr.send("Data to send"); 1.87 +}