forked from mirrors/gecko-dev
		
	Differential Revision: https://phabricator.services.mozilla.com/D44149 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			79 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Any copyright is dedicated to the Public Domain.
 | 
						|
// http://creativecommons.org/publicdomain/zero/1.0/
 | 
						|
//
 | 
						|
// Worker-side wrapper script for the worker_driver.js helper code.  See
 | 
						|
// the comments at the top of worker_driver.js for more information.
 | 
						|
 | 
						|
function ok(a, msg) {
 | 
						|
  dump("OK: " + !!a + "  =>  " + a + ": " + msg + "\n");
 | 
						|
  postMessage({ type: "status", status: !!a, msg: a + ": " + msg });
 | 
						|
}
 | 
						|
 | 
						|
function is(a, b, msg) {
 | 
						|
  dump("IS: " + (a === b) + "  =>  " + a + " | " + b + ": " + msg + "\n");
 | 
						|
  postMessage({
 | 
						|
    type: "status",
 | 
						|
    status: a === b,
 | 
						|
    msg: a + " === " + b + ": " + msg,
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
function workerTestArrayEquals(a, b) {
 | 
						|
  if (!Array.isArray(a) || !Array.isArray(b) || a.length != b.length) {
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
  for (var i = 0, n = a.length; i < n; ++i) {
 | 
						|
    if (a[i] !== b[i]) {
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
function workerTestDone() {
 | 
						|
  postMessage({ type: "finish" });
 | 
						|
}
 | 
						|
 | 
						|
function workerTestGetPermissions(permissions, cb) {
 | 
						|
  addEventListener("message", function workerTestGetPermissionsCB(e) {
 | 
						|
    if (
 | 
						|
      e.data.type != "returnPermissions" ||
 | 
						|
      !workerTestArrayEquals(permissions, e.data.permissions)
 | 
						|
    ) {
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    removeEventListener("message", workerTestGetPermissionsCB);
 | 
						|
    cb(e.data.result);
 | 
						|
  });
 | 
						|
  postMessage({
 | 
						|
    type: "getPermissions",
 | 
						|
    permissions,
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
function workerTestGetHelperData(cb) {
 | 
						|
  addEventListener("message", function workerTestGetHelperDataCB(e) {
 | 
						|
    if (e.data.type !== "returnHelperData") {
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    removeEventListener("message", workerTestGetHelperDataCB);
 | 
						|
    cb(e.data.result);
 | 
						|
  });
 | 
						|
  postMessage({
 | 
						|
    type: "getHelperData",
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
addEventListener("message", function workerWrapperOnMessage(e) {
 | 
						|
  removeEventListener("message", workerWrapperOnMessage);
 | 
						|
  var data = e.data;
 | 
						|
  try {
 | 
						|
    importScripts(data.script);
 | 
						|
  } catch (ex) {
 | 
						|
    postMessage({
 | 
						|
      type: "status",
 | 
						|
      status: false,
 | 
						|
      msg: "worker failed to import " + data.script + "; error: " + ex.message,
 | 
						|
    });
 | 
						|
  }
 | 
						|
});
 |