]> git.parisson.com Git - pdf.js.git/commitdiff
Change to passing promises.
authorBrendan Dahl <brendan.dahl@gmail.com>
Wed, 14 Dec 2011 22:02:00 +0000 (14:02 -0800)
committerBrendan Dahl <brendan.dahl@gmail.com>
Wed, 14 Dec 2011 22:02:00 +0000 (14:02 -0800)
src/core.js
src/worker.js

index dc44edb76cee16e41f3f38f8d716426f7e6cec64..a6effd2bd5acdf1777a045e13b19a03dc071eee5 100644 (file)
@@ -515,8 +515,7 @@ var PDFDoc = (function PDFDocClosure() {
       // Tell the worker the file it was created from.
       messageHandler.send('workerSrc', workerSrc);
 
-      messageHandler.on('test', function pdfDocTest(message) {
-        var supportTypedArray = message.data;
+      messageHandler.on('test', function pdfDocTest(supportTypedArray) {
         if (supportTypedArray) {
           this.worker = worker;
           this.setupMessageHandler(messageHandler);
@@ -554,8 +553,7 @@ var PDFDoc = (function PDFDocClosure() {
     setupMessageHandler: function(messageHandler) {
       this.messageHandler = messageHandler;
 
-      messageHandler.on('page', function pdfDocPage(message) {
-        var data = message.data;
+      messageHandler.on('page', function pdfDocPage(data) {
         var pageNum = data.pageNum;
         var page = this.pageCache[pageNum];
         var depFonts = data.depFonts;
@@ -563,8 +561,7 @@ var PDFDoc = (function PDFDocClosure() {
         page.startRenderingFromIRQueue(data.IRQueue, depFonts);
       }, this);
 
-      messageHandler.on('obj', function pdfDocObj(message) {
-        var data = message.data;
+      messageHandler.on('obj', function pdfDocObj(data) {
         var id = data[0];
         var type = data[1];
 
@@ -601,8 +598,7 @@ var PDFDoc = (function PDFDocClosure() {
         }
       }, this);
 
-      messageHandler.on('font_ready', function pdfDocFontReady(message) {
-        var data = message.data;
+      messageHandler.on('font_ready', function pdfDocFontReady(data) {
         var id = data[0];
         var font = new FontShape(data[1]);
 
@@ -614,8 +610,7 @@ var PDFDoc = (function PDFDocClosure() {
         }
       }.bind(this));
 
-      messageHandler.on('page_error', function pdfDocError(message) {
-        var data = message.data;
+      messageHandler.on('page_error', function pdfDocError(data) {
         var page = this.pageCache[data.pageNum];
         if (page.callback)
           page.callback(data.error);
@@ -623,9 +618,9 @@ var PDFDoc = (function PDFDocClosure() {
           throw data.error;
       }, this);
 
-      messageHandler.on('jpeg_decode', function(message) {
-        var imageData = message.data[0];
-        var components = message.data[1];
+      messageHandler.on('jpeg_decode', function(data, promise) {
+        var imageData = data[0];
+        var components = data[1];
         if (components != 3 && components != 1)
           error('Only 3 component or 1 component can be returned');
 
@@ -652,7 +647,7 @@ var PDFDoc = (function PDFDocClosure() {
               buf[j] = data[i];
             }
           }
-          message.reply({ data: buf, width: width, height: height});
+          promise.resolve({ data: buf, width: width, height: height});
         }).bind(this);
         var src = 'data:image/jpeg;base64,' + window.btoa(imageData);
         img.src = src;
index c0496015a624f75cc8cb9cd4d6fe35f96bb8a06e..c18de65ad05808fd6a705ed0116cda98b12a1605 100644 (file)
@@ -3,41 +3,6 @@
 
 'use strict';
 
-/**
- * A wrapper for data to facilitate adding functionality to messages.
- */
-function Message(data) {
-  this.data = data;
-  this.allowsReply = false;
-  this.combObj;
-  this.id;
-}
-Message.prototype = {
-  /**
-   * Reply to the action handler that sent the message.
-   */
-  reply: function messageReply(data) {
-    if (!this.allowsReply)
-      error('This message does not accept replies.');
-
-    this.combObj.postMessage({
-      isReply: true,
-      callbackId: this.id,
-      data: data
-    });
-  },
-  /**
-   * Setup the message to allow a reply.
-   * @param {Object} combObj The handler that has a postMessage function.
-   * @param {String} id The id to identify this message.
-   */
-  setupReply: function setupReply(combObj, id) {
-    this.allowsReply = true;
-    this.combObj = combObj;
-    this.id = id;
-  }
-};
-
 function MessageHandler(name, comObj) {
   this.name = name;
   this.comObj = comObj;
@@ -65,11 +30,19 @@ function MessageHandler(name, comObj) {
       }
     } else if (data.action in ah) {
       var action = ah[data.action];
-      var message = new Message(data.data);
-      if (data.callbackId)
-        message.setupReply(comObj, data.callbackId);
-
-      action[0].call(action[1], message);
+      if (data.callbackId) {
+        var promise = new Promise();
+        promise.then(function(resolvedData) {
+          comObj.postMessage({
+            isReply: true,
+            callbackId: data.callbackId,
+            data: resolvedData
+          });
+        });
+        action[0].call(action[1], data.data, promise);
+      } else {
+        action[0].call(action[1], data.data);
+      }
     } else {
       throw 'Unkown action from worker: ' + data.action;
     }
@@ -108,8 +81,7 @@ var WorkerMessageHandler = {
   setup: function wphSetup(handler) {
     var pdfDoc = null;
 
-    handler.on('test', function wphSetupTest(message) {
-      var data = message.data;
+    handler.on('test', function wphSetupTest(data) {
       handler.send('test', data instanceof Uint8Array);
     });
 
@@ -120,15 +92,13 @@ var WorkerMessageHandler = {
       // undefined action `workerSrc`.
     });
 
-    handler.on('doc', function wphSetupDoc(message) {
-      var data = message.data;
+    handler.on('doc', function wphSetupDoc(data) {
       // Create only the model of the PDFDoc, which is enough for
       // processing the content of the pdf.
       pdfDoc = new PDFDocModel(new Stream(data));
     });
 
-    handler.on('page_request', function wphSetupPageRequest(message) {
-      var pageNum = message.data;
+    handler.on('page_request', function wphSetupPageRequest(pageNum) {
       pageNum = parseInt(pageNum);
 
 
@@ -177,8 +147,7 @@ var WorkerMessageHandler = {
       });
     }, this);
 
-    handler.on('font', function wphSetupFont(message) {
-      var data = message.data;
+    handler.on('font', function wphSetupFont(data) {
       var objId = data[0];
       var name = data[1];
       var file = data[2];