dom/workers/test/xhr_worker.js

changeset 0
6474c204b198
     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 +}

mercurial