mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-19 22:58:07 +02:00
Refactors getDocument and adds PDFDataRangeTransport.
This commit is contained in:
parent
31811b619f
commit
3a61edfcae
2 changed files with 247 additions and 125 deletions
|
@ -373,67 +373,18 @@ var PDFViewerApplication = {
|
|||
|
||||
//#if (FIREFOX || MOZCENTRAL)
|
||||
initPassiveLoading: function pdfViewInitPassiveLoading() {
|
||||
var pdfDataRangeTransportReadyResolve;
|
||||
var pdfDataRangeTransportReady = new Promise(function (resolve) {
|
||||
pdfDataRangeTransportReadyResolve = resolve;
|
||||
});
|
||||
var pdfDataRangeTransport = {
|
||||
rangeListeners: [],
|
||||
progressListeners: [],
|
||||
progressiveReadListeners: [],
|
||||
ready: pdfDataRangeTransportReady,
|
||||
|
||||
addRangeListener: function PdfDataRangeTransport_addRangeListener(
|
||||
listener) {
|
||||
this.rangeListeners.push(listener);
|
||||
},
|
||||
|
||||
addProgressListener: function PdfDataRangeTransport_addProgressListener(
|
||||
listener) {
|
||||
this.progressListeners.push(listener);
|
||||
},
|
||||
|
||||
addProgressiveReadListener:
|
||||
function PdfDataRangeTransport_addProgressiveReadListener(listener) {
|
||||
this.progressiveReadListeners.push(listener);
|
||||
},
|
||||
|
||||
onDataRange: function PdfDataRangeTransport_onDataRange(begin, chunk) {
|
||||
var listeners = this.rangeListeners;
|
||||
for (var i = 0, n = listeners.length; i < n; ++i) {
|
||||
listeners[i](begin, chunk);
|
||||
}
|
||||
},
|
||||
|
||||
onDataProgress: function PdfDataRangeTransport_onDataProgress(loaded) {
|
||||
this.ready.then(function () {
|
||||
var listeners = this.progressListeners;
|
||||
for (var i = 0, n = listeners.length; i < n; ++i) {
|
||||
listeners[i](loaded);
|
||||
}
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
onDataProgressiveRead:
|
||||
function PdfDataRangeTransport_onDataProgress(chunk) {
|
||||
this.ready.then(function () {
|
||||
var listeners = this.progressiveReadListeners;
|
||||
for (var i = 0, n = listeners.length; i < n; ++i) {
|
||||
listeners[i](chunk);
|
||||
}
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
transportReady: function PdfDataRangeTransport_transportReady() {
|
||||
pdfDataRangeTransportReadyResolve();
|
||||
},
|
||||
|
||||
requestDataRange: function PdfDataRangeTransport_requestDataRange(
|
||||
begin, end) {
|
||||
FirefoxCom.request('requestDataRange', { begin: begin, end: end });
|
||||
}
|
||||
function FirefoxComDataRangeTransport(length, initialData) {
|
||||
PDFJS.PDFDataRangeTransport.call(this, length, initialData);
|
||||
}
|
||||
FirefoxComDataRangeTransport.prototype =
|
||||
Object.create(PDFJS.PDFDataRangeTransport.prototype);
|
||||
FirefoxComDataRangeTransport.prototype.requestDataRange =
|
||||
function FirefoxComDataRangeTransport_requestDataRange(begin, end) {
|
||||
FirefoxCom.request('requestDataRange', { begin: begin, end: end });
|
||||
};
|
||||
|
||||
var pdfDataRangeTransport;
|
||||
|
||||
window.addEventListener('message', function windowMessage(e) {
|
||||
if (e.source !== null) {
|
||||
// The message MUST originate from Chrome code.
|
||||
|
@ -447,11 +398,11 @@ var PDFViewerApplication = {
|
|||
}
|
||||
switch (args.pdfjsLoadAction) {
|
||||
case 'supportsRangedLoading':
|
||||
pdfDataRangeTransport =
|
||||
new FirefoxComDataRangeTransport(args.length, args.data);
|
||||
|
||||
PDFViewerApplication.open(args.pdfUrl, 0, undefined,
|
||||
pdfDataRangeTransport, {
|
||||
length: args.length,
|
||||
initialData: args.data
|
||||
});
|
||||
pdfDataRangeTransport);
|
||||
break;
|
||||
case 'range':
|
||||
pdfDataRangeTransport.onDataRange(args.begin, args.chunk);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue