Browse Source

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

Jonas Jenwald 8 years ago
parent
commit
313060aff5
  1. 16
      web/app.js
  2. 4
      web/chromecom.js
  3. 25
      web/download_manager.js
  4. 4
      web/viewer.js

16
web/app.js

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

4
web/chromecom.js

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

25
web/download_manager.js

@ -17,18 +17,23 @@
(function (root, factory) { (function (root, factory) {
if (typeof define === 'function' && define.amd) { if (typeof define === 'function' && define.amd) {
define('pdfjs-web/download_manager', ['exports', 'pdfjs-web/pdfjs'], define('pdfjs-web/download_manager', ['exports', 'pdfjs-web/app',
factory); 'pdfjs-web/pdfjs'], factory);
} else if (typeof exports !== 'undefined') { } else if (typeof exports !== 'undefined') {
factory(exports, require('./pdfjs.js')); factory(exports, require('./app.js'), require('./pdfjs.js'));
} else { } else {
factory((root.pdfjsWebDownloadManager = {}), root.pdfjsWebPDFJS); factory((root.pdfjsWebDownloadManager = {}), root.pdfjsWebApp,
root.pdfjsWebPDFJS);
} }
}(this, function (exports, pdfjsLib) { }(this, function (exports, app, pdfjsLib) {
if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) { if (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('CHROME || GENERIC')) {
return; 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) { function download(blobUrl, filename) {
var a = document.createElement('a'); var a = document.createElement('a');
if (a.click) { 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; exports.DownloadManager = DownloadManager;
})); }));

4
web/viewer.js

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

Loading…
Cancel
Save