Merge pull request #13804 from Snuffleupagus/move-viewer-compatibilityParams
Move the `compatibilityParams` into the `web/app_options.js` file
This commit is contained in:
commit
d3dffa7fa3
@ -684,7 +684,7 @@ function buildDefaultPreferences(defines, dir) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const inputStream = merge([
|
const inputStream = merge([
|
||||||
gulp.src(["web/{app_options,viewer_compatibility}.js"], {
|
gulp.src(["web/app_options.js"], {
|
||||||
base: ".",
|
base: ".",
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
|
@ -37,7 +37,7 @@ import {
|
|||||||
SpreadMode,
|
SpreadMode,
|
||||||
TextLayerMode,
|
TextLayerMode,
|
||||||
} from "./ui_utils.js";
|
} from "./ui_utils.js";
|
||||||
import { AppOptions, OptionKind } from "./app_options.js";
|
import { AppOptions, compatibilityParams, OptionKind } from "./app_options.js";
|
||||||
import {
|
import {
|
||||||
build,
|
build,
|
||||||
createPromiseCapability,
|
createPromiseCapability,
|
||||||
@ -78,7 +78,6 @@ import { PDFThumbnailViewer } from "./pdf_thumbnail_viewer.js";
|
|||||||
import { PDFViewer } from "./pdf_viewer.js";
|
import { PDFViewer } from "./pdf_viewer.js";
|
||||||
import { SecondaryToolbar } from "./secondary_toolbar.js";
|
import { SecondaryToolbar } from "./secondary_toolbar.js";
|
||||||
import { Toolbar } from "./toolbar.js";
|
import { Toolbar } from "./toolbar.js";
|
||||||
import { viewerCompatibilityParams } from "./viewer_compatibility.js";
|
|
||||||
import { ViewHistory } from "./view_history.js";
|
import { ViewHistory } from "./view_history.js";
|
||||||
|
|
||||||
const DEFAULT_SCALE_DELTA = 1.1;
|
const DEFAULT_SCALE_DELTA = 1.1;
|
||||||
@ -2484,7 +2483,7 @@ if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
|
|||||||
}
|
}
|
||||||
const file = evt.fileInput.files[0];
|
const file = evt.fileInput.files[0];
|
||||||
|
|
||||||
if (!viewerCompatibilityParams.disableCreateObjectURL) {
|
if (!compatibilityParams.disableCreateObjectURL) {
|
||||||
let url = URL.createObjectURL(file);
|
let url = URL.createObjectURL(file);
|
||||||
if (file.name) {
|
if (file.name) {
|
||||||
url = { url, originalUrl: file.name };
|
url = { url, originalUrl: file.name };
|
||||||
|
@ -13,7 +13,39 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { viewerCompatibilityParams } from "./viewer_compatibility.js";
|
const compatibilityParams = Object.create(null);
|
||||||
|
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
|
||||||
|
const userAgent =
|
||||||
|
(typeof navigator !== "undefined" && navigator.userAgent) || "";
|
||||||
|
const platform =
|
||||||
|
(typeof navigator !== "undefined" && navigator.platform) || "";
|
||||||
|
const maxTouchPoints =
|
||||||
|
(typeof navigator !== "undefined" && navigator.maxTouchPoints) || 1;
|
||||||
|
|
||||||
|
const isAndroid = /Android/.test(userAgent);
|
||||||
|
const isIOS =
|
||||||
|
/\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||
|
||||||
|
(platform === "MacIntel" && maxTouchPoints > 1);
|
||||||
|
const isIOSChrome = /CriOS/.test(userAgent);
|
||||||
|
|
||||||
|
// Disables URL.createObjectURL() usage in some environments.
|
||||||
|
// Support: Chrome on iOS
|
||||||
|
(function checkOnBlobSupport() {
|
||||||
|
// Sometimes Chrome on iOS loses data created with createObjectURL(),
|
||||||
|
// see issue 8081.
|
||||||
|
if (isIOSChrome) {
|
||||||
|
compatibilityParams.disableCreateObjectURL = true;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
// Limit canvas size to 5 mega-pixels on mobile.
|
||||||
|
// Support: Android, iOS
|
||||||
|
(function checkCanvasSizeLimitation() {
|
||||||
|
if (isIOS || isAndroid) {
|
||||||
|
compatibilityParams.maxCanvasPixels = 5242880;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
|
||||||
const OptionKind = {
|
const OptionKind = {
|
||||||
VIEWER: 0x02,
|
VIEWER: 0x02,
|
||||||
@ -95,7 +127,7 @@ const defaultOptions = {
|
|||||||
maxCanvasPixels: {
|
maxCanvasPixels: {
|
||||||
/** @type {number} */
|
/** @type {number} */
|
||||||
value: 16777216,
|
value: 16777216,
|
||||||
compatibility: viewerCompatibilityParams.maxCanvasPixels,
|
compatibility: compatibilityParams.maxCanvasPixels,
|
||||||
kind: OptionKind.VIEWER,
|
kind: OptionKind.VIEWER,
|
||||||
},
|
},
|
||||||
pdfBugEnabled: {
|
pdfBugEnabled: {
|
||||||
@ -348,4 +380,4 @@ class AppOptions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { AppOptions, OptionKind };
|
export { AppOptions, compatibilityParams, OptionKind };
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { createObjectURL, createValidAbsoluteUrl, isPdfFile } from "pdfjs-lib";
|
import { createObjectURL, createValidAbsoluteUrl, isPdfFile } from "pdfjs-lib";
|
||||||
import { viewerCompatibilityParams } from "./viewer_compatibility.js";
|
import { compatibilityParams } from "./app_options.js";
|
||||||
|
|
||||||
if (typeof PDFJSDev !== "undefined" && !PDFJSDev.test("CHROME || GENERIC")) {
|
if (typeof PDFJSDev !== "undefined" && !PDFJSDev.test("CHROME || GENERIC")) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
@ -58,7 +58,7 @@ class DownloadManager {
|
|||||||
const blobUrl = createObjectURL(
|
const blobUrl = createObjectURL(
|
||||||
data,
|
data,
|
||||||
contentType,
|
contentType,
|
||||||
viewerCompatibilityParams.disableCreateObjectURL
|
compatibilityParams.disableCreateObjectURL
|
||||||
);
|
);
|
||||||
download(blobUrl, filename);
|
download(blobUrl, filename);
|
||||||
}
|
}
|
||||||
@ -70,7 +70,7 @@ class DownloadManager {
|
|||||||
const isPdfData = isPdfFile(filename);
|
const isPdfData = isPdfFile(filename);
|
||||||
const contentType = isPdfData ? "application/pdf" : "";
|
const contentType = isPdfData ? "application/pdf" : "";
|
||||||
|
|
||||||
if (isPdfData && !viewerCompatibilityParams.disableCreateObjectURL) {
|
if (isPdfData && !compatibilityParams.disableCreateObjectURL) {
|
||||||
let blobUrl = this._openBlobUrls.get(element);
|
let blobUrl = this._openBlobUrls.get(element);
|
||||||
if (!blobUrl) {
|
if (!blobUrl) {
|
||||||
blobUrl = URL.createObjectURL(new Blob([data], { type: contentType }));
|
blobUrl = URL.createObjectURL(new Blob([data], { type: contentType }));
|
||||||
@ -113,7 +113,7 @@ class DownloadManager {
|
|||||||
* the "open with" dialog.
|
* the "open with" dialog.
|
||||||
*/
|
*/
|
||||||
download(blob, url, filename, sourceEventType = "download") {
|
download(blob, url, filename, sourceEventType = "download") {
|
||||||
if (viewerCompatibilityParams.disableCreateObjectURL) {
|
if (compatibilityParams.disableCreateObjectURL) {
|
||||||
// URL.createObjectURL is not supported
|
// URL.createObjectURL is not supported
|
||||||
this.downloadUrl(url, filename);
|
this.downloadUrl(url, filename);
|
||||||
return;
|
return;
|
||||||
|
@ -27,9 +27,9 @@ import {
|
|||||||
RenderingCancelledException,
|
RenderingCancelledException,
|
||||||
SVGGraphics,
|
SVGGraphics,
|
||||||
} from "pdfjs-lib";
|
} from "pdfjs-lib";
|
||||||
|
import { compatibilityParams } from "./app_options.js";
|
||||||
import { NullL10n } from "./l10n_utils.js";
|
import { NullL10n } from "./l10n_utils.js";
|
||||||
import { RenderingStates } from "./pdf_rendering_queue.js";
|
import { RenderingStates } from "./pdf_rendering_queue.js";
|
||||||
import { viewerCompatibilityParams } from "./viewer_compatibility.js";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} PDFPageViewOptions
|
* @typedef {Object} PDFPageViewOptions
|
||||||
@ -63,7 +63,7 @@ import { viewerCompatibilityParams } from "./viewer_compatibility.js";
|
|||||||
* @property {IL10n} l10n - Localization service.
|
* @property {IL10n} l10n - Localization service.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const MAX_CANVAS_PIXELS = viewerCompatibilityParams.maxCanvasPixels || 16777216;
|
const MAX_CANVAS_PIXELS = compatibilityParams.maxCanvasPixels || 16777216;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @implements {IRenderableView}
|
* @implements {IRenderableView}
|
||||||
@ -819,7 +819,7 @@ class PDFPageView {
|
|||||||
const svgGfx = new SVGGraphics(
|
const svgGfx = new SVGGraphics(
|
||||||
pdfPage.commonObjs,
|
pdfPage.commonObjs,
|
||||||
pdfPage.objs,
|
pdfPage.objs,
|
||||||
/* forceDataSchema = */ viewerCompatibilityParams.disableCreateObjectURL
|
/* forceDataSchema = */ compatibilityParams.disableCreateObjectURL
|
||||||
);
|
);
|
||||||
return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {
|
return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {
|
||||||
ensureNotCancelled();
|
ensureNotCancelled();
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { PDFPrintServiceFactory, PDFViewerApplication } from "./app.js";
|
import { PDFPrintServiceFactory, PDFViewerApplication } from "./app.js";
|
||||||
|
import { compatibilityParams } from "./app_options.js";
|
||||||
import { getXfaHtmlForPrinting } from "./print_utils.js";
|
import { getXfaHtmlForPrinting } from "./print_utils.js";
|
||||||
import { viewerCompatibilityParams } from "./viewer_compatibility.js";
|
|
||||||
|
|
||||||
let activeService = null;
|
let activeService = null;
|
||||||
let overlayManager = null;
|
let overlayManager = null;
|
||||||
@ -177,7 +177,7 @@ PDFPrintService.prototype = {
|
|||||||
const scratchCanvas = this.scratchCanvas;
|
const scratchCanvas = this.scratchCanvas;
|
||||||
if (
|
if (
|
||||||
"toBlob" in scratchCanvas &&
|
"toBlob" in scratchCanvas &&
|
||||||
!viewerCompatibilityParams.disableCreateObjectURL
|
!compatibilityParams.disableCreateObjectURL
|
||||||
) {
|
) {
|
||||||
scratchCanvas.toBlob(function (blob) {
|
scratchCanvas.toBlob(function (blob) {
|
||||||
img.src = URL.createObjectURL(blob);
|
img.src = URL.createObjectURL(blob);
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
/* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const compatibilityParams = Object.create(null);
|
|
||||||
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) {
|
|
||||||
const userAgent =
|
|
||||||
(typeof navigator !== "undefined" && navigator.userAgent) || "";
|
|
||||||
const platform =
|
|
||||||
(typeof navigator !== "undefined" && navigator.platform) || "";
|
|
||||||
const maxTouchPoints =
|
|
||||||
(typeof navigator !== "undefined" && navigator.maxTouchPoints) || 1;
|
|
||||||
|
|
||||||
const isAndroid = /Android/.test(userAgent);
|
|
||||||
const isIOS =
|
|
||||||
/\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||
|
|
||||||
(platform === "MacIntel" && maxTouchPoints > 1);
|
|
||||||
const isIOSChrome = /CriOS/.test(userAgent);
|
|
||||||
|
|
||||||
// Checks if possible to use URL.createObjectURL()
|
|
||||||
// Support: IE, Chrome on iOS
|
|
||||||
(function checkOnBlobSupport() {
|
|
||||||
// Sometimes Chrome on iOS loses data created with createObjectURL(),
|
|
||||||
// see issue #8081.
|
|
||||||
if (isIOSChrome) {
|
|
||||||
compatibilityParams.disableCreateObjectURL = 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 };
|
|
Loading…
Reference in New Issue
Block a user