summaryrefslogtreecommitdiffstats
path: root/browser/components/originattributes/test/browser/blobify.worker.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/originattributes/test/browser/blobify.worker.js')
-rw-r--r--browser/components/originattributes/test/browser/blobify.worker.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/browser/components/originattributes/test/browser/blobify.worker.js b/browser/components/originattributes/test/browser/blobify.worker.js
new file mode 100644
index 0000000000..0bac973a15
--- /dev/null
+++ b/browser/components/originattributes/test/browser/blobify.worker.js
@@ -0,0 +1,47 @@
+// Wait for a string to be posted to this worker.
+// Create a blob containing this string, and then
+// post back a blob URL pointing to the blob.
+
+var postStringInBlob = function (blobObject) {
+ var fileReader = new FileReaderSync();
+ var result = fileReader.readAsText(blobObject);
+ postMessage(result);
+};
+
+self.addEventListener("message", e => {
+ if (e.data.what === "blobify") {
+ try {
+ let blobURL = URL.createObjectURL(new Blob([e.data.message]));
+ postMessage({ blobURL });
+ } catch (ex) {
+ postMessage({ error: ex.message });
+ }
+ return;
+ }
+
+ if (e.data.what === "deblobify") {
+ if ("error" in e.data.message) {
+ postMessage(e.data.message);
+ return;
+ }
+ let blobURL = e.data.message.blobURL,
+ xhr = new XMLHttpRequest();
+ try {
+ xhr.open("GET", blobURL, true);
+ xhr.onload = function () {
+ postStringInBlob(xhr.response);
+ };
+ xhr.onerror = function () {
+ postMessage({ error: "xhr error" });
+ };
+ xhr.responseType = "blob";
+ xhr.send();
+ } catch (ex) {
+ postMessage({ error: ex.message });
+ }
+
+ return;
+ }
+
+ postMessage("Invalid operation!");
+});