]> git.parisson.com Git - pdf.js.git/commitdiff
Merge branch 'refs/heads/master' into fix-worker-loader
authorArtur Adib <arturadib@gmail.com>
Wed, 11 Jan 2012 16:47:41 +0000 (11:47 -0500)
committerArtur Adib <arturadib@gmail.com>
Wed, 11 Jan 2012 16:47:41 +0000 (11:47 -0500)
Conflicts:
src/core.js

1  2 
src/core.js

diff --cc src/core.js
index 96e0c9fcc09af3931433b2d9f13b2e41c7e4155e,765a239b740b0a9d9eee3a45d316c9a2f6f5bb53..13d9158e0c9f6b9308cd5375bc012411ceef8514
@@@ -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 = {