Merge pull request #9917 from Snuffleupagus/Preference-getAll
Add a `BasePreferences.getAll` method and use it to fetch all Preferences at once in `PDFViewerApplication._readPreferences`; ensure that the `externalLinkTarget` option is correctly set when the viewer is embedded
This commit is contained in:
commit
3f4c2d6733
110
web/app.js
110
web/app.js
@ -142,6 +142,12 @@ let PDFViewerApplication = {
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
return this._initializeL10n();
|
return this._initializeL10n();
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
if (this.isViewerEmbedded &&
|
||||||
|
AppOptions.get('externalLinkTarget') === LinkTarget.NONE) {
|
||||||
|
// Prevent external links from "replacing" the viewer,
|
||||||
|
// when it's embedded in e.g. an <iframe> or an <object>.
|
||||||
|
AppOptions.set('externalLinkTarget', LinkTarget.TOP);
|
||||||
|
}
|
||||||
return this._initializeViewerComponents();
|
return this._initializeViewerComponents();
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// Bind the various event handlers *after* the viewer has been
|
// Bind the various event handlers *after* the viewer has been
|
||||||
@ -157,13 +163,6 @@ let PDFViewerApplication = {
|
|||||||
this.eventBus.dispatch('localized');
|
this.eventBus.dispatch('localized');
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.isViewerEmbedded &&
|
|
||||||
AppOptions.get('externalLinkTarget') === LinkTarget.NONE) {
|
|
||||||
// Prevent external links from "replacing" the viewer,
|
|
||||||
// when it's embedded in e.g. an iframe or an object.
|
|
||||||
AppOptions.set('externalLinkTarget', LinkTarget.TOP);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.initialized = true;
|
this.initialized = true;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -172,93 +171,30 @@ let PDFViewerApplication = {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
_readPreferences() {
|
_readPreferences() {
|
||||||
let { preferences, } = this;
|
// A subset of the Preferences that `AppOptions`, for compatibility reasons,
|
||||||
|
// is allowed to override if the `AppOptions` values matches the ones below.
|
||||||
|
const OVERRIDES = {
|
||||||
|
disableFontFace: true,
|
||||||
|
disableRange: true,
|
||||||
|
disableStream: true,
|
||||||
|
textLayerMode: TextLayerMode.DISABLE,
|
||||||
|
};
|
||||||
|
|
||||||
return Promise.all([
|
return this.preferences.getAll().then(function(prefs) {
|
||||||
preferences.get('enableWebGL').then(function resolved(value) {
|
for (let name in prefs) {
|
||||||
AppOptions.set('enableWebGL', value);
|
if ((name in OVERRIDES) && AppOptions.get(name) === OVERRIDES[name]) {
|
||||||
}),
|
continue;
|
||||||
preferences.get('sidebarViewOnLoad').then(function resolved(value) {
|
|
||||||
AppOptions.set('sidebarViewOnLoad', value);
|
|
||||||
}),
|
|
||||||
preferences.get('cursorToolOnLoad').then(function resolved(value) {
|
|
||||||
AppOptions.set('cursorToolOnLoad', value);
|
|
||||||
}),
|
|
||||||
preferences.get('pdfBugEnabled').then(function resolved(value) {
|
|
||||||
AppOptions.set('pdfBugEnabled', value);
|
|
||||||
}),
|
|
||||||
preferences.get('showPreviousViewOnLoad').then(function resolved(value) {
|
|
||||||
AppOptions.set('showPreviousViewOnLoad', value);
|
|
||||||
}),
|
|
||||||
preferences.get('defaultZoomValue').then(function resolved(value) {
|
|
||||||
AppOptions.set('defaultZoomValue', value);
|
|
||||||
}),
|
|
||||||
preferences.get('textLayerMode').then(function resolved(value) {
|
|
||||||
if (AppOptions.get('textLayerMode') === TextLayerMode.DISABLE) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
AppOptions.set('textLayerMode', value);
|
AppOptions.set(name, prefs[name]);
|
||||||
}),
|
}
|
||||||
preferences.get('disableRange').then(function resolved(value) {
|
}, function(reason) { });
|
||||||
if (AppOptions.get('disableRange') === true) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
AppOptions.set('disableRange', value);
|
|
||||||
}),
|
|
||||||
preferences.get('disableStream').then(function resolved(value) {
|
|
||||||
if (AppOptions.get('disableStream') === true) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
AppOptions.set('disableStream', value);
|
|
||||||
}),
|
|
||||||
preferences.get('disableAutoFetch').then(function resolved(value) {
|
|
||||||
AppOptions.set('disableAutoFetch', value);
|
|
||||||
}),
|
|
||||||
preferences.get('disableFontFace').then(function resolved(value) {
|
|
||||||
if (AppOptions.get('disableFontFace') === true) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
AppOptions.set('disableFontFace', value);
|
|
||||||
}),
|
|
||||||
preferences.get('useOnlyCssZoom').then(function resolved(value) {
|
|
||||||
AppOptions.set('useOnlyCssZoom', value);
|
|
||||||
}),
|
|
||||||
preferences.get('externalLinkTarget').then(function resolved(value) {
|
|
||||||
if (AppOptions.get('externalLinkTarget') !== LinkTarget.NONE) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
AppOptions.set('externalLinkTarget', value);
|
|
||||||
}),
|
|
||||||
preferences.get('renderer').then(function resolved(value) {
|
|
||||||
AppOptions.set('renderer', value);
|
|
||||||
}),
|
|
||||||
preferences.get('renderInteractiveForms').then(function resolved(value) {
|
|
||||||
AppOptions.set('renderInteractiveForms', value);
|
|
||||||
}),
|
|
||||||
preferences.get('disablePageMode').then(function resolved(value) {
|
|
||||||
AppOptions.set('disablePageMode', value);
|
|
||||||
}),
|
|
||||||
preferences.get('disablePageLabels').then(function resolved(value) {
|
|
||||||
AppOptions.set('disablePageLabels', value);
|
|
||||||
}),
|
|
||||||
preferences.get('enablePrintAutoRotate').then(function resolved(value) {
|
|
||||||
AppOptions.set('enablePrintAutoRotate', value);
|
|
||||||
}),
|
|
||||||
preferences.get('scrollModeOnLoad').then(function resolved(value) {
|
|
||||||
AppOptions.set('scrollModeOnLoad', value);
|
|
||||||
}),
|
|
||||||
preferences.get('spreadModeOnLoad').then(function resolved(value) {
|
|
||||||
AppOptions.set('spreadModeOnLoad', value);
|
|
||||||
}),
|
|
||||||
]).catch(function(reason) { });
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
_parseHashParameters() {
|
_parseHashParameters() {
|
||||||
let { appConfig, } = this;
|
const waitOn = [];
|
||||||
let waitOn = [];
|
|
||||||
|
|
||||||
if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION') ||
|
if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION') ||
|
||||||
AppOptions.get('pdfBugEnabled')) {
|
AppOptions.get('pdfBugEnabled')) {
|
||||||
@ -311,7 +247,7 @@ let PDFViewerApplication = {
|
|||||||
case 'visible':
|
case 'visible':
|
||||||
case 'shadow':
|
case 'shadow':
|
||||||
case 'hover':
|
case 'hover':
|
||||||
let viewer = appConfig.viewerContainer;
|
let viewer = this.appConfig.viewerContainer;
|
||||||
viewer.classList.add('textLayer-' + hashParams['textlayer']);
|
viewer.classList.add('textLayer-' + hashParams['textlayer']);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -170,6 +170,17 @@ class BasePreferences {
|
|||||||
return defaultValue;
|
return defaultValue;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the values of all preferences.
|
||||||
|
* @return {Promise} A promise that is resolved with an {Object} containing
|
||||||
|
* the values of all preferences.
|
||||||
|
*/
|
||||||
|
getAll() {
|
||||||
|
return this._initializedPromise.then(() => {
|
||||||
|
return Object.assign(Object.create(null), this.defaults, this.prefs);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user