]> git.parisson.com Git - pdf.js.git/commitdiff
Address review comments. Use only one PDFJS.workerSrc variable to specify the worker...
authorJulian Viereck <julian.viereck@gmail.com>
Tue, 1 Nov 2011 18:32:20 +0000 (19:32 +0100)
committerJulian Viereck <julian.viereck@gmail.com>
Tue, 1 Nov 2011 18:32:20 +0000 (19:32 +0100)
examples/helloworld/hello.js
examples/helloworld/index.html
src/core.js
src/pdf.js
src/worker.js
src/worker_loader.js
test/test_slave.html
web/viewer-snippet.html
web/viewer.html

index c97b53c6664138a3567fe07c8bc0543271a53d17..45e61eb6fad91721f305f47dd6efb16aba6143d6 100644 (file)
@@ -7,7 +7,7 @@
 
 'use strict';
 
-getPdf('helloworld.pdf', function getPdfHelloWorld(data) {
+PDFJS.getPdf('helloworld.pdf', function getPdfHelloWorld(data) {
   //
   // Instantiate PDFDoc with PDF data
   //
index 0fa711fe49278fad6b701c19d2cb405e26e3ccce..a48e3705bebb2cb6122d23d1dfa70af1198155c5 100644 (file)
@@ -3,6 +3,7 @@
 
 <head>
   <!-- In production, only one script (pdf.js) is necessary -->
+  <!-- In production, change the content of PDFJS.workerSrc below -->
   <script type="text/javascript" src="../../src/core.js"></script>
   <script type="text/javascript" src="../../src/util.js"></script>
   <script type="text/javascript" src="../../src/canvas.js"></script>
@@ -23,9 +24,9 @@
   <script type="text/javascript" src="../../src/worker.js"></script>
 
   <script type="text/javascript">
-    // Specify the directory of the source files, such that the web worker
-    // knows where to load them.
-    var PDFJS_WORKER_DIR = '../../src/';
+    // Specify the main script used to create a new PDF.JS web worker.
+    // In production, change this to point to the combined `pdf.js` file.
+    PDFJS.workerSrc = '../../src/worker_loader.js';
   </script>
   <script type="text/javascript" src="hello.js"></script>
 </head>
index 8d3d6d434cf720bf9baab4058f068dbeb8404c3a..48b1d0591a6d5ed2fa44e340dc9bc49039baaa2e 100644 (file)
@@ -471,26 +471,18 @@ var PDFDoc = (function() {
     this.pageCache = [];
 
     if (useWorker) {
-      var worker;
-      if (typeof PDFJS_WORKER_DIR !== 'undefined') {
-        // If `PDFJS_WORKER_DIR` is specified, we assume the pdf.js files
-        // located all in that directory. Create a new worker and tell him
-        // the directory, such that he can load the scripts from there.
-        worker = new Worker(PDFJS_WORKER_DIR + 'worker_loader.js');
-        console.log('main: post dir');
-
-        worker.postMessage(PDFJS_WORKER_DIR);
-      } else if (typeof PDFJS_WORKER_FILE !== 'undefined') {
-        // If we build the worker using a worker file, then we assume, that
-        // everything the worker needs is already included in that file.
-        // Therefore the worker doesn't have to call `importScripts` to load
-        // all the single files and therefore it's not necessary to tell the
-        // worker a directory to laod the js files from.
-        // (Which is different from the PDFJS_WORKER_DIR case above.)
-        worker = new Worker(PDFJS_WORKER_FILE);
-      } else {
-        throw 'No worker file or directory specified.';
+      var workerSrc = PDFJS.workerSrc;
+      if (typeof workerSrc === 'undefined') {
+        throw 'No PDFJS.workerSrc specified';
       }
+
+      var worker = new Worker(workerSrc);
+
+      // Tell the worker the file it was created from.
+      worker.postMessage({
+        action: 'workerSrc',
+        data: workerSrc
+      });
     } else {
       // If we don't use a worker, just post/sendMessage to the main thread.
       var worker = {
index 2ecd2fddcf8ab5e9268a8e0fe39075ad55dcd5c1..51f606548613fefa50d9654a60ad09e70e098365 100644 (file)
@@ -10,5 +10,5 @@ var PDFJS = {};
   // Files are inserted below - see Makefile
   /* PDFJSSCRIPT_INCLUDE_ALL */
 
-})();
+}).call((typeof window === 'undefined') ? this : window);
 
index 5545fc4590585d672e19b911da05a73500153703..d46364f603cc507c31f090843dbbec6a6b415274 100644 (file)
@@ -47,6 +47,13 @@ var WorkerProcessorHandler = {
   setup: function(handler) {
     var pdfDoc = null;
 
+    handler.on('workerSrc', function(data) {
+      // In development, the `workerSrc` message is handled in the
+      // `worker_loader.js` file. In production the workerProcessHandler is
+      // called for this. This servers as a dummy to prevent calling an
+      // undefined action `workerSrc`.
+    });
+
     handler.on('doc', function(data) {
       // Create only the model of the PDFDoc, which is enough for
       // processing the content of the pdf.
@@ -174,7 +181,7 @@ var workerConsole = {
 
 // Worker thread?
 if (typeof window === 'undefined') {
-  this.console = workerConsole;
+  globalScope.console = workerConsole;
 
   var handler = new MessageHandler('worker_processor', this);
   WorkerProcessorHandler.setup(handler);
index 69f7d55baa6cbe448c10d08144d0a96e164fed7c..8eb1da7b2086c050f97f8655ed8d4cbefd78c95b 100644 (file)
@@ -7,11 +7,19 @@ this.onmessage = function(evt) {
   // Reset the `onmessage` function as it was only set to call
   // this function the first time a message is passed to the worker
   // but shouldn't get called anytime afterwards.
-  delete this.onmessage;
+  this.onmessage = null;
 
-  // Directory the include files are contained is send as the
-  // first message to the worker.
-  var dir = evt.data;
+  if (evt.data.action !== 'workerSrc') {
+    throw 'Worker expects first message to be `workerSrc`';
+  }
+
+  // Content of `PDFJS.workerSrc` as defined on the main thread.
+  var workerSrc = evt.data.data;
+
+  // Extract the directory that contains the source files to load.
+  // Assuming the source files have the same relative possition as the
+  // `workerSrc` file.
+  var dir = workerSrc.substring(0, workerSrc.lastIndexOf('/') + 1);
 
   // List of files to include;
   var files = [
index 7ac886769b24a11fb20b7f0dd32fba3e34d494aa..91852d5a56405aaf79f2149a3abc41d05c85442d 100644 (file)
@@ -3,25 +3,29 @@
   <head>
     <title>pdf.js test slave</title>
     <style type="text/css"></style>
-    <script type="text/javascript" src="/src/core.js"></script> 
-    <script type="text/javascript" src="/src/util.js"></script>  
-    <script type="text/javascript" src="/src/canvas.js"></script>  
-    <script type="text/javascript" src="/src/obj.js"></script>  
-    <script type="text/javascript" src="/src/function.js"></script> 
-    <script type="text/javascript" src="/src/charsets.js"></script>  
-    <script type="text/javascript" src="/src/cidmaps.js"></script>  
-    <script type="text/javascript" src="/src/colorspace.js"></script>  
-    <script type="text/javascript" src="/src/crypto.js"></script>  
-    <script type="text/javascript" src="/src/evaluator.js"></script>  
-    <script type="text/javascript" src="/src/fonts.js"></script>  
-    <script type="text/javascript" src="/src/glyphlist.js"></script>  
-    <script type="text/javascript" src="/src/image.js"></script>  
-    <script type="text/javascript" src="/src/metrics.js"></script>  
-    <script type="text/javascript" src="/src/parser.js"></script>  
-    <script type="text/javascript" src="/src/pattern.js"></script>  
-    <script type="text/javascript" src="/src/stream.js"></script>  
-    <script type="text/javascript" src="/src/worker.js"></script>  
+    <script type="text/javascript" src="/src/core.js"></script>
+    <script type="text/javascript" src="/src/util.js"></script>
+    <script type="text/javascript" src="/src/canvas.js"></script>
+    <script type="text/javascript" src="/src/obj.js"></script>
+    <script type="text/javascript" src="/src/function.js"></script>
+    <script type="text/javascript" src="/src/charsets.js"></script>
+    <script type="text/javascript" src="/src/cidmaps.js"></script>
+    <script type="text/javascript" src="/src/colorspace.js"></script>
+    <script type="text/javascript" src="/src/crypto.js"></script>
+    <script type="text/javascript" src="/src/evaluator.js"></script>
+    <script type="text/javascript" src="/src/fonts.js"></script>
+    <script type="text/javascript" src="/src/glyphlist.js"></script>
+    <script type="text/javascript" src="/src/image.js"></script>
+    <script type="text/javascript" src="/src/metrics.js"></script>
+    <script type="text/javascript" src="/src/parser.js"></script>
+    <script type="text/javascript" src="/src/pattern.js"></script>
+    <script type="text/javascript" src="/src/stream.js"></script>
+    <script type="text/javascript" src="/src/worker.js"></script>
     <script type="text/javascript" src="driver.js"></script>
+
+    <script type="text/javascript">
+      PDFJS.workerSrc = '/src/worker_loader.js';
+    </script>
   </head>
 
   <body>
index 4d2a4f7b76cef0549d364d06c47f4c891158b7e1..6b0c8821b514c2a8b22ff30895e0f69c9c45c14a 100644 (file)
@@ -1,7 +1,6 @@
 <!-- This snippet is used in production, see Makefile -->
 <script type="text/javascript" src="../build/pdf.js"></script>
 <script type="text/javascript">
-  // This specifies the location of the pdf.js file. This is necessary to
-  // spawn the web worker.
-  var PDFJS_WORKER_FILE = "../build/pdf.js";
+  // This specifies the location of the pdf.js file.
+  PDFJS.workerSrc = "../build/pdf.js";
 </script>
index 4505331d6723aa96389f69a3a29c6e1d348881fe..7dd81e0af3c5428e00a14f4b3aa6c712e7200de9 100644 (file)
@@ -5,7 +5,6 @@
         <link rel="stylesheet" href="viewer.css"/>
 
         <!-- PDFJSSCRIPT_INCLUDE_BUILD -->
-        <script type="text/javascript">var PDFJS_WORKER_DIR = "../src/"</script> <!-- PDFJSSCRIPT_REMOVE -->
         <script type="text/javascript" src="../src/core.js"></script> <!-- PDFJSSCRIPT_REMOVE -->
         <script type="text/javascript" src="../src/util.js"></script>  <!-- PDFJSSCRIPT_REMOVE -->
         <script type="text/javascript" src="../src/canvas.js"></script>  <!-- PDFJSSCRIPT_REMOVE -->
@@ -25,6 +24,8 @@
         <script type="text/javascript" src="../src/stream.js"></script>  <!-- PDFJSSCRIPT_REMOVE -->
         <script type="text/javascript" src="../src/worker.js"></script>  <!-- PDFJSSCRIPT_REMOVE -->
 
+        <script type="text/javascript">PDFJS.workerSrc = '../../src/worker_loader.js';</script> <!-- PDFJSSCRIPT_REMOVE -->
+
         <script type="text/javascript" src="compatibility.js"></script>
         <script type="text/javascript" src="viewer.js"></script>
   </head>