diff --git a/js/util/browser/web_worker.js b/js/util/browser/web_worker.js index 7717220b6cf..c564ae830b1 100644 --- a/js/util/browser/web_worker.js +++ b/js/util/browser/web_worker.js @@ -1,6 +1,9 @@ 'use strict'; + var WebWorkify = require('webworkify'); +var window = require('../window'); +var workerURL = window.URL.createObjectURL(new WebWorkify(require('../../source/worker'), {bare: true})); module.exports = function () { - return new WebWorkify(require('../../source/worker')); + return new window.Worker(workerURL); }; diff --git a/js/util/worker_pool.js b/js/util/worker_pool.js index 8519940fa7d..84b276549b9 100644 --- a/js/util/worker_pool.js +++ b/js/util/worker_pool.js @@ -2,7 +2,6 @@ var assert = require('assert'); var WebWorker = require('./web_worker'); -var URL = require('./window').URL; module.exports = WorkerPool; @@ -37,7 +36,6 @@ WorkerPool.prototype = { delete this.active[mapId]; if (Object.keys(this.active).length === 0) { this.workers.forEach(function (w) { - URL.revokeObjectURL(w.objectURL); w.terminate(); }); this.workers = null; diff --git a/test/js/util/worker_pool.test.js b/test/js/util/worker_pool.test.js index 6db6c3cdbdb..6af4ef7328d 100644 --- a/test/js/util/worker_pool.test.js +++ b/test/js/util/worker_pool.test.js @@ -24,22 +24,15 @@ test('WorkerPool', function (t) { t.test('#release', function (t) { var workersTerminated = 0; - var objectUrlsRevoked = {}; var WorkerPool = proxyquire('../../../js/util/worker_pool', { - '../mapbox-gl': { workerCount: 4 }, - './window': { - URL: { - revokeObjectURL: function (url) { objectUrlsRevoked[url] = true; } - } - } + '../mapbox-gl': { workerCount: 4 } }); var pool = new WorkerPool(); pool.acquire('map-1'); var workers = pool.acquire('map-2'); - workers.forEach(function (w, i) { + workers.forEach(function (w) { w.terminate = function () { workersTerminated += 1; }; - w.objectURL = 'blob:worker-' + i; }); pool.release('map-2'); @@ -50,7 +43,6 @@ test('WorkerPool', function (t) { t.comment('terminates workers if no dispatchers are active'); pool.release('map-1'); t.equal(workersTerminated, 4); - t.equal(Object.keys(objectUrlsRevoked).length, 4); t.notOk(pool.workers); t.end();