From: Artur Adib Date: Wed, 11 Jan 2012 16:47:41 +0000 (-0500) Subject: Merge branch 'refs/heads/master' into fix-worker-loader X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=7611a766c7ba185f4da46de427ffe368911414ff;p=pdf.js.git Merge branch 'refs/heads/master' into fix-worker-loader Conflicts: src/core.js --- 7611a766c7ba185f4da46de427ffe368911414ff diff --cc src/core.js index 96e0c9f,765a239..13d9158 --- a/src/core.js +++ b/src/core.js @@@ -569,33 -620,35 +620,34 @@@ var PDFDoc = (function PDFDocClosure() throw 'No PDFJS.workerSrc specified'; } - var worker; try { - worker = new Worker(workerSrc); - } catch (e) { // Some versions of FF can't create a worker on localhost, see: // https://bugzilla.mozilla.org/show_bug.cgi?id=683280 - globalScope.PDFJS.disableWorker = true; - this.setupFakeWorker(); - return; - } + var worker = new Worker(workerSrc); - var messageHandler = new MessageHandler('main', worker); + var messageHandler = new MessageHandler('main', worker); - // Tell the worker the file it was created from. - messageHandler.send('workerSrc', workerSrc); + - messageHandler.on('test', function pdfDocTest(supportTypedArray) { - if (supportTypedArray) { - this.worker = worker; - this.setupMessageHandler(messageHandler); - } else { - this.setupFakeWorker(); - } - }.bind(this)); + messageHandler.on('test', function pdfDocTest(supportTypedArray) { + if (supportTypedArray) { + this.worker = worker; + this.setupMessageHandler(messageHandler); + } else { + globalScope.PDFJS.disableWorker = true; + this.setupFakeWorker(); + } + }.bind(this)); - var testObj = new Uint8Array(1); - messageHandler.send('test', testObj); - } else { - this.setupFakeWorker(); + var testObj = new Uint8Array(1); + // Some versions of Opera throw a DATA_CLONE_ERR on + // serializing the typed array. + messageHandler.send('test', testObj); + return; + } catch (e) {} } + // Either workers are disabled, not supported or have thrown an exception. + // Thus, we fallback to a faked worker. + globalScope.PDFJS.disableWorker = true; + this.setupFakeWorker(); } PDFDoc.prototype = {