michael@0: this.EXPORTED_SYMBOLS = ["Test"]; michael@0: michael@0: this.Test = { michael@0: start: function(ok, is, finish) { michael@0: let worker = new ChromeWorker("jsm_url_worker.js"); michael@0: worker.onmessage = function(event) { michael@0: michael@0: if (event.data.type == 'finish') { michael@0: finish(); michael@0: } else if (event.data.type == 'status') { michael@0: ok(event.data.status, event.data.msg); michael@0: } else if (event.data.type == 'url') { michael@0: var xhr = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] michael@0: .createInstance(Components.interfaces.nsIXMLHttpRequest); michael@0: xhr.open('GET', event.data.url, false); michael@0: xhr.onreadystatechange = function() { michael@0: if (xhr.readyState == 4) { michael@0: ok(true, "Blob readable!"); michael@0: } michael@0: } michael@0: xhr.send(); michael@0: } michael@0: }; michael@0: michael@0: var self = this; michael@0: worker.onerror = function(event) { michael@0: is(event.target, worker); michael@0: ok(false, "Worker had an error: " + event.data); michael@0: self.worker.terminate(); michael@0: finish(); michael@0: }; michael@0: michael@0: worker.postMessage(0); michael@0: } michael@0: };