Refactor the DownloadManager initialization in GENERIC/CHROME builds, to avoid issues when converting the code to ES6 modules

This commit is contained in:
Jonas Jenwald 2017-03-27 23:37:14 +02:00
parent d6dfc26d4e
commit 313060aff5
4 changed files with 31 additions and 18 deletions

View File

@ -19,7 +19,7 @@
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define('pdfjs-web/app', ['exports', 'pdfjs-web/ui_utils',
'pdfjs-web/download_manager', 'pdfjs-web/pdf_history',
'pdfjs-web/pdf_history',
'pdfjs-web/preferences', 'pdfjs-web/pdf_sidebar',
'pdfjs-web/view_history', 'pdfjs-web/pdf_thumbnail_viewer',
'pdfjs-web/toolbar', 'pdfjs-web/secondary_toolbar',
@ -32,7 +32,7 @@
'pdfjs-web/dom_events', 'pdfjs-web/pdfjs'],
factory);
} else if (typeof exports !== 'undefined') {
factory(exports, require('./ui_utils.js'), require('./download_manager.js'),
factory(exports, require('./ui_utils.js'),
require('./pdf_history.js'), require('./preferences.js'),
require('./pdf_sidebar.js'), require('./view_history.js'),
require('./pdf_thumbnail_viewer.js'), require('./toolbar.js'),
@ -46,7 +46,7 @@
require('./dom_events.js'), require('./pdfjs.js'));
} else {
factory((root.pdfjsWebApp = {}), root.pdfjsWebUIUtils,
root.pdfjsWebDownloadManager, root.pdfjsWebPDFHistory,
root.pdfjsWebPDFHistory,
root.pdfjsWebPreferences, root.pdfjsWebPDFSidebar,
root.pdfjsWebViewHistory, root.pdfjsWebPDFThumbnailViewer,
root.pdfjsWebToolbar, root.pdfjsWebSecondaryToolbar,
@ -58,7 +58,7 @@
root.pdfjsWebPDFFindController, root.pdfjsWebPDFFindBar,
root.pdfjsWebDOMEvents, root.pdfjsWebPDFJS);
}
}(this, function (exports, uiUtilsLib, downloadManagerLib, pdfHistoryLib,
}(this, function (exports, uiUtilsLib, pdfHistoryLib,
preferencesLib, pdfSidebarLib, viewHistoryLib,
pdfThumbnailViewerLib, toolbarLib, secondaryToolbarLib,
passwordPromptLib, pdfPresentationModeLib,
@ -124,13 +124,13 @@ function configure(PDFJS) {
}
}
var DefaultExernalServices = {
var DefaultExternalServices = {
updateFindControlState: function (data) {},
initPassiveLoading: function (callbacks) {},
fallback: function (data, callback) {},
reportTelemetry: function (data) {},
createDownloadManager: function () {
return new downloadManagerLib.DownloadManager();
throw new Error('Not implemented: createDownloadManager');
},
supportsIntegratedFind: false,
supportsDocumentFonts: true,
@ -196,7 +196,7 @@ var PDFViewerApplication = {
isViewerEmbedded: (window.parent !== window),
url: '',
baseUrl: '',
externalServices: DefaultExernalServices,
externalServices: DefaultExternalServices,
// called once when the document is loaded
initialize: function pdfViewInitialize(appConfig) {
@ -2270,6 +2270,6 @@ var PDFPrintServiceFactory = {
};
exports.PDFViewerApplication = PDFViewerApplication;
exports.DefaultExernalServices = DefaultExernalServices;
exports.DefaultExternalServices = DefaultExternalServices;
exports.PDFPrintServiceFactory = PDFPrintServiceFactory;
}));

View File

@ -36,7 +36,7 @@
}
var PDFViewerApplication = app.PDFViewerApplication;
var DefaultExernalServices = app.DefaultExernalServices;
var DefaultExternalServices = app.DefaultExternalServices;
var OverlayManager = overlayManager.OverlayManager;
var Preferences = preferences.Preferences;
@ -349,7 +349,7 @@
});
};
var ChromeExternalServices = Object.create(DefaultExernalServices);
var ChromeExternalServices = Object.create(DefaultExternalServices);
ChromeExternalServices.initPassiveLoading = function (callbacks) {
var appConfig = PDFViewerApplication.appConfig;
ChromeCom.resolvePDFFile(appConfig.defaultUrl,

View File

@ -17,18 +17,23 @@
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define('pdfjs-web/download_manager', ['exports', 'pdfjs-web/pdfjs'],
factory);
define('pdfjs-web/download_manager', ['exports', 'pdfjs-web/app',
'pdfjs-web/pdfjs'], factory);
} else if (typeof exports !== 'undefined') {
factory(exports, require('./pdfjs.js'));
factory(exports, require('./app.js'), require('./pdfjs.js'));
} else {
factory((root.pdfjsWebDownloadManager = {}), root.pdfjsWebPDFJS);
factory((root.pdfjsWebDownloadManager = {}), root.pdfjsWebApp,
root.pdfjsWebPDFJS);
}
}(this, function (exports, pdfjsLib) {
if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) {
return;
}(this, function (exports, app, pdfjsLib) {
if (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('CHROME || GENERIC')) {
throw new Error('Module "pdfjs-web/download_manager" shall not be used ' +
'outside CHROME and GENERIC builds.');
}
var PDFViewerApplication = app.PDFViewerApplication;
var DefaultExternalServices = app.DefaultExternalServices;
function download(blobUrl, filename) {
var a = document.createElement('a');
if (a.click) {
@ -107,5 +112,11 @@ DownloadManager.prototype = {
}
};
var GenericExternalServices = Object.create(DefaultExternalServices);
GenericExternalServices.createDownloadManager = function () {
return new DownloadManager();
};
PDFViewerApplication.externalServices = GenericExternalServices;
exports.DownloadManager = DownloadManager;
}));

View File

@ -50,6 +50,7 @@ if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {
}
if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME || GENERIC')) {
require('./pdf_print_service.js');
require('./download_manager.js');
}
function getViewerConfiguration() {
@ -172,7 +173,8 @@ function webViewerLoad() {
var config = getViewerConfiguration();
if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {
Promise.all([SystemJS.import('pdfjs-web/app'),
SystemJS.import('pdfjs-web/pdf_print_service')])
SystemJS.import('pdfjs-web/pdf_print_service'),
SystemJS.import('pdfjs-web/download_manager')])
.then(function (modules) {
var app = modules[0];
window.PDFViewerApplication = app.PDFViewerApplication;