Merge pull request #10470 from Snuffleupagus/mozcentral-streams

Try to, completely, avoid loading the `ReadableStream` polyfill in MOZCENTRAL builds
This commit is contained in:
Tim van der Meij 2019-01-19 21:22:18 +01:00 committed by GitHub
commit 66acc7397f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 94 additions and 46 deletions

View File

@ -0,0 +1,19 @@
/* 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.
*/
if (typeof ReadableStream === "undefined") {
require("../../../src/shared/global_scope").ReadableStream =
require("../../../external/streams/streams-lib").ReadableStream;
}

View File

@ -766,6 +766,16 @@ function preprocessDefaultPreferences(content) {
content + '\n');
}
function createMozcentralStreamsPolyfillBundle(defines) {
var streamsPolyfillOutputName = 'streams_polyfill.js';
var streamsPolyfillFileConfig = createWebpackConfig(defines, {
filename: streamsPolyfillOutputName,
});
return gulp.src('./extensions/firefox/content/streams_polyfill.js')
.pipe(webpack2Stream(streamsPolyfillFileConfig));
}
gulp.task('mozcentral-pre', gulp.series('buildnumber', 'locale', function () {
console.log();
console.log('### Building mozilla-central extension');
@ -787,6 +797,8 @@ gulp.task('mozcentral-pre', gulp.series('buildnumber', 'locale', function () {
return merge([
createBundle(defines).pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'build')),
createWebBundle(defines).pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'web')),
createMozcentralStreamsPolyfillBundle(defines)
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'build')),
gulp.src(COMMON_WEB_FILES, { base: 'web/', })
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'web')),
gulp.src(['external/bcmaps/*.bcmap', 'external/bcmaps/LICENSE'],

12
src/pdf.worker.js vendored
View File

@ -12,13 +12,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* eslint-disable no-unused-vars */
/* eslint-disable no-restricted-globals, no-unused-vars */
'use strict';
var pdfjsVersion = PDFJSDev.eval('BUNDLE_VERSION');
var pdfjsBuild = PDFJSDev.eval('BUNDLE_BUILD');
if (PDFJSDev.test('MOZCENTRAL') && typeof ReadableStream === 'undefined') {
importScripts('./streams_polyfill.js');
}
var pdfjsCoreWorker = require('./core/worker.js');
const pdfjsVersion = PDFJSDev.eval('BUNDLE_VERSION');
const pdfjsBuild = PDFJSDev.eval('BUNDLE_BUILD');
const pdfjsCoreWorker = require('./core/worker.js');
exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;

View File

@ -14,6 +14,13 @@
*/
/* eslint-disable no-restricted-globals */
if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('MOZCENTRAL')) {
// On the main-thread the `streams_polyfill.js` file is loaded using a
// <script> tag; see `web/viewer-snippet-firefox-extension.html`.
// On the worker-thread the `streams_polyfill.js` file is (conditionally)
// loaded using `importScripts`; see `src/pdf.worker.js`.
exports.ReadableStream = ReadableStream;
} else {
let isReadableStreamSupported = false;
if (typeof ReadableStream !== 'undefined') {
// MS Edge may say it has ReadableStream but they are not up to spec yet.
@ -31,8 +38,8 @@ if (typeof ReadableStream !== 'undefined') {
}
if (isReadableStreamSupported) {
exports.ReadableStream = ReadableStream;
} else {
if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {
} else if (typeof PDFJSDev !== 'undefined' &&
PDFJSDev.test('IMAGE_DECODERS')) {
class DummyReadableStream {
constructor() {
throw new Error('The current image decoders are synchronous, ' +

View File

@ -32,8 +32,8 @@ if (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('GENERIC')) {
if (isURLSupported) {
exports.URL = URL;
} else {
if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {
} else if (typeof PDFJSDev !== 'undefined' &&
PDFJSDev.test('IMAGE_DECODERS')) {
class DummyURL {
constructor() {
throw new Error('The current image decoders doesn\'t utilize the ' +
@ -60,4 +60,3 @@ if (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('GENERIC')) {
exports.URL = PolyfillURL;
}
}
}

View File

@ -1,3 +1,10 @@
<!-- This snippet is used in the Firefox extension (included from viewer.html) -->
<base href="resource://pdf.js/web/">
<script>
(function() {
if (typeof ReadableStream === "undefined") {
document.write("<script src=\"../build/streams_polyfill.js\"><\/script>");
}
})();
</script>
<script src="../build/pdf.js"></script>