diff --git a/src/shared/compatibility.js b/src/shared/compatibility.js index 3b2221f6f..86ec6e1d2 100644 --- a/src/shared/compatibility.js +++ b/src/shared/compatibility.js @@ -26,12 +26,10 @@ if ((typeof PDFJSDev === 'undefined' || // users - https://github.com/mozilla/pdf.js/issues/9397 if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('CHROME')) { -var globalScope = require('./global_scope'); - +const globalScope = require('./global_scope'); const isNodeJS = require('./is_node'); var userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || ''; -var isAndroid = /Android/.test(userAgent); var isIOSChrome = userAgent.indexOf('CriOS') >= 0; var isIE = userAgent.indexOf('Trident') >= 0; var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent); @@ -80,18 +78,6 @@ PDFJS.compatibilityChecked = true; } })(); -// Checks if navigator.language is supported -// Support: IE<11 -(function checkNavigatorLanguage() { - if (typeof navigator === 'undefined') { - return; - } - if ('language' in navigator) { - return; - } - PDFJS.locale = navigator.userLanguage || 'en-US'; -})(); - // Support: Safari 6.0+, iOS (function checkRangeRequests() { // Safari has issues with cached range requests see: @@ -103,25 +89,6 @@ PDFJS.compatibilityChecked = true; } })(); -// Support: Android, iOS -(function checkCanvasSizeLimitation() { - if (isIOS || isAndroid) { - // 5MP - PDFJS.maxCanvasPixels = 5242880; - } -})(); - -// Disable fullscreen support for certain problematic configurations. -// Support: IE11+ (when embedded). -(function checkFullscreenSupport() { - if (!hasDOM) { - return; - } - if (isIE && window.parent !== window) { - PDFJS.disableFullscreen = true; - } -})(); - // Provides document.currentScript support // Support: IE, Chrome<29. (function checkCurrentScript() { diff --git a/web/app.js b/web/app.js index e3128b118..a21b443f4 100644 --- a/web/app.js +++ b/web/app.js @@ -44,6 +44,7 @@ import { PDFThumbnailViewer } from './pdf_thumbnail_viewer'; import { PDFViewer } from './pdf_viewer'; import { SecondaryToolbar } from './secondary_toolbar'; import { Toolbar } from './toolbar'; +import { viewerCompatibilityParams } from './viewer_compatibility'; import { ViewHistory } from './view_history'; const DEFAULT_SCALE_DELTA = 1.1; @@ -561,7 +562,7 @@ let PDFViewerApplication = { support = false; } } - if (support && PDFJS.disableFullscreen === true) { + if (support && viewerCompatibilityParams['disableFullscreen'] === true) { support = false; } diff --git a/web/ui_utils.js b/web/ui_utils.js index bfff86ae5..9119147cb 100644 --- a/web/ui_utils.js +++ b/web/ui_utils.js @@ -65,14 +65,6 @@ let NullL10n = { }, }; -/** - * Disables fullscreen support, and by extension Presentation Mode, - * in browsers which support the fullscreen API. - * @var {boolean} - */ -PDFJS.disableFullscreen = (PDFJS.disableFullscreen === undefined ? - false : PDFJS.disableFullscreen); - /** * Enables CSS only zooming. * @var {boolean} @@ -110,7 +102,7 @@ if (typeof PDFJSDev === 'undefined' || */ PDFJS.locale = (PDFJS.locale === undefined && typeof navigator !== 'undefined' ? - navigator.language : PDFJS.locale); + navigator.language : PDFJS.locale) || 'en-US'; } /** diff --git a/web/viewer_compatibility.js b/web/viewer_compatibility.js new file mode 100644 index 000000000..e6aadea80 --- /dev/null +++ b/web/viewer_compatibility.js @@ -0,0 +1,44 @@ +/* Copyright 2018 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +let compatibilityParams = Object.create(null); +if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) { + const userAgent = + (typeof navigator !== 'undefined' && navigator.userAgent) || ''; + const isAndroid = /Android/.test(userAgent); + const isIE = /Trident/.test(userAgent); + const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent); + + // Disable fullscreen support for certain problematic configurations. + // Support: IE11+ (when embedded). + (function checkFullscreenSupport() { + if (isIE && window.parent !== window) { + compatibilityParams.disableFullscreen = true; + } + })(); + + // Limit canvas size to 5 mega-pixels on mobile. + // Support: Android, iOS + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + compatibilityParams.maxCanvasPixels = 5242880; + } + })(); +} +const viewerCompatibilityParams = Object.freeze(compatibilityParams); + +export { + viewerCompatibilityParams, +};