test_keep_file_open.worker.js (993B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/. */ 3 4 /* import-globals-from /toolkit/components/workerloader/require.js */ 5 importScripts("resource://gre/modules/workers/require.js"); 6 7 const PromiseWorker = require("resource://gre/modules/workers/PromiseWorker.js"); 8 9 /** 10 * For keeping a file open in a worker while a test runs. 11 */ 12 class OpenFileWorker extends PromiseWorker.AbstractWorker { 13 constructor() { 14 super(); 15 16 this._file = null; 17 } 18 19 postMessage(message, ...transfers) { 20 self.postMessage(message, transfers); 21 } 22 23 dispatch(method, args) { 24 return this[method](...args); 25 } 26 27 open(path) { 28 this._file = IOUtils.openFileForSyncReading(path); 29 } 30 31 close() { 32 if (this._file) { 33 this._file.close(); 34 } 35 } 36 } 37 38 const worker = new OpenFileWorker(); 39 40 self.addEventListener("message", msg => worker.handleMessage(msg)); 41 self.addEventListener("unhandledrejection", err => { 42 throw err.reason; 43 });