Change to passing promises.
This commit is contained in:
parent
c2b91f1272
commit
d1f4e7c7d5
23
src/core.js
23
src/core.js
@ -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;
|
||||
|
@ -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];
|
||||
|
Loading…
x
Reference in New Issue
Block a user