forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			2.5 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: permissions
 | |
|   });
 | |
| }
 | |
| 
 | |
| function workerTestGetVersion(cb) {
 | |
|   addEventListener('message', function workerTestGetVersionCB(e) {
 | |
|     if (e.data.type !== 'returnVersion') {
 | |
|       return;
 | |
|     }
 | |
|     removeEventListener('message', workerTestGetVersionCB);
 | |
|     cb(e.data.result);
 | |
|   });
 | |
|   postMessage({
 | |
|     type: 'getVersion'
 | |
|   });
 | |
| }
 | |
| 
 | |
| function workerTestGetUserAgent(cb) {
 | |
|   addEventListener('message', function workerTestGetUserAgentCB(e) {
 | |
|     if (e.data.type !== 'returnUserAgent') {
 | |
|       return;
 | |
|     }
 | |
|     removeEventListener('message', workerTestGetUserAgentCB);
 | |
|     cb(e.data.result);
 | |
|   });
 | |
|   postMessage({
 | |
|     type: 'getUserAgent'
 | |
|   });
 | |
| }
 | |
| 
 | |
| function workerTestGetOSCPU(cb) {
 | |
|   addEventListener('message', function workerTestGetOSCPUCB(e) {
 | |
|     if (e.data.type !== 'returnOSCPU') {
 | |
|       return;
 | |
|     }
 | |
|     removeEventListener('message', workerTestGetOSCPUCB);
 | |
|     cb(e.data.result);
 | |
|   });
 | |
|   postMessage({
 | |
|     type: 'getOSCPU'
 | |
|   });
 | |
| }
 | |
| 
 | |
| addEventListener('message', function workerWrapperOnMessage(e) {
 | |
|   removeEventListener('message', workerWrapperOnMessage);
 | |
|   var data = e.data;
 | |
|   try {
 | |
|     importScripts(data.script);
 | |
|   } catch(e) {
 | |
|     postMessage({
 | |
|       type: 'status',
 | |
|       status: false,
 | |
|       msg: 'worker failed to import ' + data.script + "; error: " + e.message
 | |
|     });
 | |
|   }
 | |
| });
 | 
