From a0639f950675a657166aa2cdefc35d9427bbf9e3 Mon Sep 17 00:00:00 2001 From: Nao Iizuka Date: Mon, 12 Dec 2011 13:49:03 +0900 Subject: [PATCH] pass Buffer variable to worker context --- lib/webworker-child.js | 1 + test/test-globals.js | 29 +++++++++++++++++++++++++++++ test/workers/globals.js | 19 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 test/test-globals.js create mode 100644 test/workers/globals.js diff --git a/lib/webworker-child.js b/lib/webworker-child.js index 34b3c9f..040c484 100644 --- a/lib/webworker-child.js +++ b/lib/webworker-child.js @@ -160,6 +160,7 @@ workerCtx.setTimeout = setTimeout; workerCtx.clearTimeout = clearTimeout; workerCtx.setInterval = setInterval; workerCtx.clearInterval = clearInterval; +workerCtx.Buffer = Buffer; // Context elements required by the WebWorkers API spec workerCtx.postMessage = function(msg, fd) { diff --git a/test/test-globals.js b/test/test-globals.js new file mode 100644 index 0000000..9d4b1d5 --- /dev/null +++ b/test/test-globals.js @@ -0,0 +1,29 @@ +// Verify that the worker has all global variables. + +var assert = require('assert'); +var path = require('path'); +var sys = require('sys'); +var Worker = require('../lib/webworker'); + +var receivedMsg = false; + +var w = new Worker(path.join(__dirname, 'workers', 'globals.js')); + +w.onmessage = function(e) { + assert.ok('data' in e); + assert.equal(e.data.result, 'ok'); + + receivedMsg = true; + + w.terminate(); +}; + +w.onerror = function(e) { + console.dir(e); + + w.terminate(); +}; + +process.addListener('exit', function() { + assert.equal(receivedMsg, true); +}); diff --git a/test/workers/globals.js b/test/workers/globals.js new file mode 100644 index 0000000..d6a23f6 --- /dev/null +++ b/test/workers/globals.js @@ -0,0 +1,19 @@ +var assert = require('assert'); + +assert.equal(typeof global, 'object'); +assert.equal(typeof process, 'object'); +assert.equal(typeof console, 'object'); +assert.equal(typeof Buffer, 'function'); +assert.equal(typeof require, 'function'); +assert.equal(typeof require.resolve, 'function'); +assert.equal(typeof require.cache, 'object'); +assert.equal(typeof __filename, 'string'); +assert.equal(typeof __dirname, 'string'); +assert.equal(typeof setTimeout, 'function'); +assert.equal(typeof clearTimeout, 'function'); +assert.equal(typeof setInterval, 'function'); +assert.equal(typeof clearInterval, 'function'); + +assert.equal(typeof postMessage, 'function'); + +postMessage({ result: 'ok' });