Move the postMessageTransfers option from the global PDFJS object and into getDocument/PDFWorker instead

Given the purpose of this option, it doesn't seem necessary to make it available through `GlobalWorkerOptions`.
This commit is contained in:
Jonas Jenwald 2018-02-14 16:53:50 +01:00
parent 83d52518da
commit fdd2376170
3 changed files with 11 additions and 20 deletions

View File

@ -36,7 +36,6 @@ var DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536
let isWorkerDisabled = false; let isWorkerDisabled = false;
let workerSrc; let workerSrc;
var isPostMessageTransfersDisabled = false;
const pdfjsFilePath = const pdfjsFilePath =
typeof PDFJSDev !== 'undefined' && typeof PDFJSDev !== 'undefined' &&
@ -127,6 +126,8 @@ function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
* 2^16 = 65536. * 2^16 = 65536.
* @property {PDFWorker} worker - (optional) The worker that will be used for * @property {PDFWorker} worker - (optional) The worker that will be used for
* the loading and parsing of the PDF data. * the loading and parsing of the PDF data.
* @property {boolean} postMessageTransfers - (optional) Enables transfer usage
* in postMessage for ArrayBuffers. The default value is `true`.
* @property {string} docBaseUrl - (optional) The base URL of the document, * @property {string} docBaseUrl - (optional) The base URL of the document,
* used when attempting to recover valid absolute URLs for annotations, and * used when attempting to recover valid absolute URLs for annotations, and
* outline items, that (incorrectly) only specify relative URLs. * outline items, that (incorrectly) only specify relative URLs.
@ -241,6 +242,7 @@ function getDocument(src) {
if (!worker) { if (!worker) {
const workerParams = { const workerParams = {
postMessageTransfers: params.postMessageTransfers,
}; };
// Worker was not provided -- creating and owning our own. If message port // Worker was not provided -- creating and owning our own. If message port
// is specified in global worker options, using it. // is specified in global worker options, using it.
@ -321,8 +323,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
maxImageSize: getDefaultSetting('maxImageSize'), maxImageSize: getDefaultSetting('maxImageSize'),
disableFontFace: getDefaultSetting('disableFontFace'), disableFontFace: getDefaultSetting('disableFontFace'),
disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'), disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'),
postMessageTransfers: getDefaultSetting('postMessageTransfers') && postMessageTransfers: worker.postMessageTransfers,
!isPostMessageTransfersDisabled,
docBaseUrl: source.docBaseUrl, docBaseUrl: source.docBaseUrl,
nativeImageDecoderSupport: source.nativeImageDecoderSupport, nativeImageDecoderSupport: source.nativeImageDecoderSupport,
ignoreErrors: source.ignoreErrors, ignoreErrors: source.ignoreErrors,
@ -1203,6 +1204,8 @@ class LoopbackPort {
* @typedef {Object} PDFWorkerParameters * @typedef {Object} PDFWorkerParameters
* @property {string} name - (optional) The name of the worker. * @property {string} name - (optional) The name of the worker.
* @property {Object} port - (optional) The `workerPort`. * @property {Object} port - (optional) The `workerPort`.
* @property {boolean} postMessageTransfers - (optional) Enables transfer usage
* in postMessage for ArrayBuffers. The default value is `true`.
*/ */
/** /**
@ -1296,14 +1299,15 @@ var PDFWorker = (function PDFWorkerClosure() {
/** /**
* @param {PDFWorkerParameters} params - The worker initialization parameters. * @param {PDFWorkerParameters} params - The worker initialization parameters.
*/ */
function PDFWorker({ name = null, port = null, } = {}) { function PDFWorker({ name = null, port = null,
postMessageTransfers = true, } = {}) {
if (port && pdfWorkerPorts.has(port)) { if (port && pdfWorkerPorts.has(port)) {
throw new Error('Cannot use more than one PDFWorker per port'); throw new Error('Cannot use more than one PDFWorker per port');
} }
this.name = name; this.name = name;
this.destroyed = false; this.destroyed = false;
this.postMessageTransfers = true; this.postMessageTransfers = postMessageTransfers !== false;
this._readyCapability = createPromiseCapability(); this._readyCapability = createPromiseCapability();
this._port = null; this._port = null;
@ -1400,7 +1404,6 @@ var PDFWorker = (function PDFWorkerClosure() {
this._webWorker = worker; this._webWorker = worker;
if (!data.supportTransfers) { if (!data.supportTransfers) {
this.postMessageTransfers = false; this.postMessageTransfers = false;
isPostMessageTransfersDisabled = true;
} }
this._readyCapability.resolve(); this._readyCapability.resolve();
// Send global setting, e.g. verbosity level. // Send global setting, e.g. verbosity level.
@ -1428,11 +1431,8 @@ var PDFWorker = (function PDFWorkerClosure() {
} }
}); });
var sendTest = function () { const sendTest = () => {
var postMessageTransfers = let testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
getDefaultSetting('postMessageTransfers') &&
!isPostMessageTransfersDisabled;
var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]);
// Some versions of Opera throw a DATA_CLONE_ERR on serializing the // Some versions of Opera throw a DATA_CLONE_ERR on serializing the
// typed array. Also, checking if we can use transfers. // typed array. Also, checking if we can use transfers.
try { try {

View File

@ -349,8 +349,6 @@ function getDefaultSetting(id) {
return globalSettings ? globalSettings.cMapUrl : null; return globalSettings ? globalSettings.cMapUrl : null;
case 'cMapPacked': case 'cMapPacked':
return globalSettings ? globalSettings.cMapPacked : false; return globalSettings ? globalSettings.cMapPacked : false;
case 'postMessageTransfers':
return globalSettings ? globalSettings.postMessageTransfers : true;
case 'maxImageSize': case 'maxImageSize':
return globalSettings ? globalSettings.maxImageSize : -1; return globalSettings ? globalSettings.maxImageSize : -1;
case 'isEvalSupported': case 'isEvalSupported':

View File

@ -147,13 +147,6 @@ PDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ?
*/ */
PDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug); PDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug);
/**
* Enables transfer usage in postMessage for ArrayBuffers.
* @var {boolean}
*/
PDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ?
true : PDFJS.postMessageTransfers);
/** /**
* Disables URL.createObjectURL usage. * Disables URL.createObjectURL usage.
* @var {boolean} * @var {boolean}