diff --git a/web/app.js b/web/app.js index 2c5a120aa..920c95bde 100644 --- a/web/app.js +++ b/web/app.js @@ -685,7 +685,9 @@ const PDFViewerApplication = { this._hideViewBookmark(); } } else if (PDFJSDev.test("MOZCENTRAL || CHROME")) { - this.initPassiveLoading(file); + this.setTitleUsingUrl(file, /* downloadUrl = */ file); + + this.externalServices.initPassiveLoading(); } else { throw new Error("Not implemented: run"); } @@ -815,37 +817,6 @@ const PDFViewerApplication = { this._caretBrowsing.moveCaret(isUp, select); }, - initPassiveLoading(file) { - if ( - typeof PDFJSDev === "undefined" || - !PDFJSDev.test("MOZCENTRAL || CHROME") - ) { - throw new Error("Not implemented: initPassiveLoading"); - } - this.setTitleUsingUrl(file, /* downloadUrl = */ file); - - this.externalServices.initPassiveLoading({ - onOpenWithTransport: range => { - this.open({ range }); - }, - onOpenWithData: (data, contentDispositionFilename) => { - if (isPdfFile(contentDispositionFilename)) { - this._contentDispositionFilename = contentDispositionFilename; - } - this.open({ data }); - }, - onOpenWithURL: (url, length, originalUrl) => { - this.open({ url, length, originalUrl }); - }, - onError: err => { - this._documentError("pdfjs-loading-error", err); - }, - onProgress: (loaded, total) => { - this.progress(loaded / total); - }, - }); - }, - setTitleUsingUrl(url = "", downloadUrl = null) { this.url = url; this.baseUrl = url.split("#", 1)[0]; @@ -987,10 +958,11 @@ const PDFViewerApplication = { const workerParams = AppOptions.getAll(OptionKind.WORKER); Object.assign(GlobalWorkerOptions, workerParams); - if ( - (typeof PDFJSDev === "undefined" || !PDFJSDev.test("MOZCENTRAL")) && - args.url - ) { + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { + if (args.data && isPdfFile(args.filename)) { + this._contentDispositionFilename = args.filename; + } + } else if (args.url) { // The Firefox built-in viewer always calls `setTitleUsingUrl`, before // `initPassiveLoading`, and it never provides an `originalUrl` here. this.setTitleUsingUrl( diff --git a/web/chromecom.js b/web/chromecom.js index 5a4ebfbf5..7f26b70db 100644 --- a/web/chromecom.js +++ b/web/chromecom.js @@ -417,12 +417,11 @@ class Preferences extends BasePreferences { } class ExternalServices extends BaseExternalServices { - initPassiveLoading(callbacks) { - // defaultUrl is set in viewer.js + initPassiveLoading() { ChromeCom.resolvePDFFile( AppOptions.get("defaultUrl"), function (url, length, originalUrl) { - callbacks.onOpenWithURL(url, length, originalUrl); + viewerApp.open({ url, length, originalUrl }); } ); } diff --git a/web/external_services.js b/web/external_services.js index 1fa42cd43..509e08470 100644 --- a/web/external_services.js +++ b/web/external_services.js @@ -24,7 +24,7 @@ class BaseExternalServices { updateFindMatchesCount(data) {} - initPassiveLoading(callbacks) {} + initPassiveLoading() {} reportTelemetry(data) {} diff --git a/web/firefoxcom.js b/web/firefoxcom.js index ecced7836..bb1b5f46f 100644 --- a/web/firefoxcom.js +++ b/web/firefoxcom.js @@ -323,7 +323,7 @@ class ExternalServices extends BaseExternalServices { FirefoxCom.request("updateFindMatchesCount", data); } - initPassiveLoading(callbacks) { + initPassiveLoading() { let pdfDataRangeTransport; window.addEventListener("message", function windowMessage(e) { @@ -340,7 +340,7 @@ class ExternalServices extends BaseExternalServices { switch (args.pdfjsLoadAction) { case "supportsRangedLoading": if (args.done && !args.data) { - callbacks.onError(); + viewerApp._documentError(null); break; } pdfDataRangeTransport = new FirefoxComDataRangeTransport( @@ -350,7 +350,7 @@ class ExternalServices extends BaseExternalServices { args.filename ); - callbacks.onOpenWithTransport(pdfDataRangeTransport); + viewerApp.open({ range: pdfDataRangeTransport }); break; case "range": pdfDataRangeTransport.onDataRange(args.begin, args.chunk); @@ -369,14 +369,14 @@ class ExternalServices extends BaseExternalServices { pdfDataRangeTransport?.onDataProgressiveDone(); break; case "progress": - callbacks.onProgress(args.loaded, args.total); + viewerApp.progress(args.loaded / args.total); break; case "complete": if (!args.data) { - callbacks.onError(args.errorCode); + viewerApp._documentError(null, { message: args.errorCode }); break; } - callbacks.onOpenWithData(args.data, args.filename); + viewerApp.open({ data: args.data, filename: args.filename }); break; } });