From fdcc4ca590d3ec14222c6e61548ea59c52e5c437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20M=C3=A4rcker?= Date: Wed, 28 Dec 2011 09:10:06 +0100 Subject: [PATCH 1/5] Added fallback to fake worker if serialization of typed array fails. This happens e.g. in Opera 11.60. --- src/core.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/core.js b/src/core.js index 93cbc72ac..bf221b4b1 100644 --- a/src/core.js +++ b/src/core.js @@ -605,7 +605,13 @@ var PDFDoc = (function PDFDocClosure() { }.bind(this)); var testObj = new Uint8Array(1); - messageHandler.send('test', testObj); + // Some versions of Opera throw a DATA_CLONE_ERR on serializing the typed array. + // If such an error occurs, we fallback to a faked worker. + try { + messageHandler.send('test', testObj); + } catch (e) { + this.setupFakeWorker(); + } } else { this.setupFakeWorker(); } From c2b42b1cfc967a29ed3c52005e8f1bd646b5c0a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Ma=CC=88rcker?= Date: Wed, 28 Dec 2011 15:21:32 +0100 Subject: [PATCH 2/5] Small refactoring of fallback code to fake worker. --- src/core.js | 52 ++++++++++++++++++++++------------------------------ 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/src/core.js b/src/core.js index bf221b4b1..be8b6ba27 100644 --- a/src/core.js +++ b/src/core.js @@ -579,42 +579,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); + // 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 { + globalScope.PDFJS.disableWorker = true; + this.setupFakeWorker(); + } + }.bind(this)); - 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)); - - var testObj = new Uint8Array(1); - // Some versions of Opera throw a DATA_CLONE_ERR on serializing the typed array. - // If such an error occurs, we fallback to a faked worker. - try { + var testObj = new Uint8Array(1); + // Some versions of Opera throw a DATA_CLONE_ERR on serializing the typed array. messageHandler.send('test', testObj); - } catch (e) { - this.setupFakeWorker(); - } - } else { - this.setupFakeWorker(); + return; + } catch (e) {} } + // Either workers are disabled, not suppored or have thrown an exception. + // Thus, we fallback to a faked worker. + globalScope.PDFJS.disableWorker = true; + this.setupFakeWorker(); } PDFDoc.prototype = { From 9fcd303519e6d04e5e1cd637da2989f32272337c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Ma=CC=88rcker?= Date: Wed, 28 Dec 2011 15:23:39 +0100 Subject: [PATCH 3/5] fixed typo --- src/core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core.js b/src/core.js index be8b6ba27..3532c0937 100644 --- a/src/core.js +++ b/src/core.js @@ -603,7 +603,7 @@ var PDFDoc = (function PDFDocClosure() { return; } catch (e) {} } - // Either workers are disabled, not suppored or have thrown an exception. + // Either workers are disabled, not supported or have thrown an exception. // Thus, we fallback to a faked worker. globalScope.PDFJS.disableWorker = true; this.setupFakeWorker(); From b506bc7f44eca7cc8c31d375d422e9545dc0d2b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Ma=CC=88rcker?= Date: Wed, 28 Dec 2011 17:32:54 +0100 Subject: [PATCH 4/5] fixed lint errors --- src/core.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core.js b/src/core.js index 3532c0937..8c55d4d06 100644 --- a/src/core.js +++ b/src/core.js @@ -583,7 +583,7 @@ var PDFDoc = (function PDFDocClosure() { // Some versions of FF can't create a worker on localhost, see: // https://bugzilla.mozilla.org/show_bug.cgi?id=683280 var worker = new Worker(workerSrc); - + var messageHandler = new MessageHandler('main', worker); // Tell the worker the file it was created from. messageHandler.send('workerSrc', workerSrc); @@ -598,7 +598,8 @@ var PDFDoc = (function PDFDocClosure() { }.bind(this)); var testObj = new Uint8Array(1); - // Some versions of Opera throw a DATA_CLONE_ERR on serializing the typed array. + // Some versions of Opera throw a DATA_CLONE_ERR on + // serializing the typed array. messageHandler.send('test', testObj); return; } catch (e) {} From d769535beece350eb70f188b4e167f76aa49fb69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Ma=CC=88rcker?= Date: Wed, 28 Dec 2011 19:57:12 +0100 Subject: [PATCH 5/5] fixed the remaining style error --- src/core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core.js b/src/core.js index 8c55d4d06..26e376327 100644 --- a/src/core.js +++ b/src/core.js @@ -598,7 +598,7 @@ var PDFDoc = (function PDFDocClosure() { }.bind(this)); var testObj = new Uint8Array(1); - // Some versions of Opera throw a DATA_CLONE_ERR on + // Some versions of Opera throw a DATA_CLONE_ERR on // serializing the typed array. messageHandler.send('test', testObj); return;