Bug 1824610 - EMSification of pdf.js r=Standard8,pdfjs-reviewers,geckoview-reviewers,marco,m_kato

Differential Revision: https://phabricator.services.mozilla.com/D173674
This commit is contained in:
Calixte 2023-03-28 09:18:58 +00:00
parent 7a338578a5
commit fefd92b8e9
18 changed files with 43 additions and 114 deletions

View file

@ -103,7 +103,7 @@ const startupPhases = {
"resource://gre/modules/AsyncPrefs.sys.mjs",
"resource://gre/modules/LoginManagerContextMenu.jsm",
"resource://gre/modules/osfile.jsm",
"resource://pdf.js/PdfStreamConverter.jsm",
"resource://pdf.js/PdfStreamConverter.sys.mjs",
]),
},
},

View file

@ -39,6 +39,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
NewTabUtils: "resource://gre/modules/NewTabUtils.sys.mjs",
OsEnvironment: "resource://gre/modules/OsEnvironment.sys.mjs",
PageDataService: "resource:///modules/pagedata/PageDataService.sys.mjs",
PdfJs: "resource://pdf.js/PdfJs.sys.mjs",
PermissionUI: "resource:///modules/PermissionUI.sys.mjs",
PlacesBackups: "resource://gre/modules/PlacesBackups.sys.mjs",
PlacesDBUtils: "resource://gre/modules/PlacesDBUtils.sys.mjs",
@ -98,7 +99,6 @@ XPCOMUtils.defineLazyModuleGetters(lazy, {
PageActions: "resource:///modules/PageActions.jsm",
PageThumbs: "resource://gre/modules/PageThumbs.jsm",
PdfJs: "resource://pdf.js/PdfJs.jsm",
PluralForm: "resource://gre/modules/PluralForm.jsm",
ProcessHangMonitor: "resource:///modules/ProcessHangMonitor.jsm",
SafeBrowsing: "resource://gre/modules/SafeBrowsing.jsm",
@ -646,10 +646,10 @@ let JSWINDOWACTORS = {
Pdfjs: {
parent: {
moduleURI: "resource://pdf.js/PdfjsParent.jsm",
esModuleURI: "resource://pdf.js/PdfjsParent.sys.mjs",
},
child: {
moduleURI: "resource://pdf.js/PdfjsChild.jsm",
esModuleURI: "resource://pdf.js/PdfjsChild.sys.mjs",
},
allFrames: true,
},

View file

@ -24,6 +24,7 @@ XPCOMUtils.defineLazyServiceGetters(lazy, {
ChromeUtils.defineESModuleGetters(lazy, {
BookmarksPolicies: "resource:///modules/policies/BookmarksPolicies.sys.mjs",
FileUtils: "resource://gre/modules/FileUtils.sys.mjs",
PdfJsDefaultPreferences: "resource://pdf.js/PdfJsDefaultPreferences.sys.mjs",
ProxyPolicies: "resource:///modules/policies/ProxyPolicies.sys.mjs",
WebsiteFilter: "resource:///modules/policies/WebsiteFilter.sys.mjs",
});
@ -31,7 +32,6 @@ ChromeUtils.defineESModuleGetters(lazy, {
XPCOMUtils.defineLazyModuleGetters(lazy, {
AddonManager: "resource://gre/modules/AddonManager.jsm",
CustomizableUI: "resource:///modules/CustomizableUI.jsm",
PdfJsDefaultPreferences: "resource://pdf.js/PdfJsDefaultPreferences.jsm",
});
const PREF_LOGLEVEL = "browser.policies.loglevel";

View file

@ -14,6 +14,7 @@ const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
ActorManagerParent: "resource://gre/modules/ActorManagerParent.sys.mjs",
EventDispatcher: "resource://gre/modules/Messaging.sys.mjs",
PdfJs: "resource://pdf.js/PdfJs.sys.mjs",
Preferences: "resource://gre/modules/Preferences.sys.mjs",
});
@ -21,10 +22,6 @@ const { XPCOMUtils } = ChromeUtils.importESModule(
"resource://gre/modules/XPCOMUtils.sys.mjs"
);
XPCOMUtils.defineLazyModuleGetters(lazy, {
PdfJs: "resource://pdf.js/PdfJs.jsm",
});
const { debug, warn } = GeckoViewUtils.initLogging("Startup");
var { DelayedInit } = ChromeUtils.import(

View file

@ -13,7 +13,7 @@ Classes = [
'@mozilla.org/streamconv;1?from=application/octet-stream&to=*/*',
'@mozilla.org/streamconv;1?from=application/octet-stream&to=text/html',
],
'jsm': 'resource://gre/modules/pdfjs.js',
'esModule': 'resource://gre/modules/pdfjs.sys.mjs',
'constructor': 'StreamConverterFactory',
},
]

View file

@ -13,10 +13,6 @@
* limitations under the License.
*/
"use strict";
var EXPORTED_SYMBOLS = ["PdfJs"];
const PREF_PREFIX = "pdfjs";
const PREF_DISABLED = PREF_PREFIX + ".disabled";
const PREF_MIGRATION_VERSION = PREF_PREFIX + ".migrationVersion";
@ -27,9 +23,7 @@ const PREF_ISDEFAULT_CACHE_STATE = PREF_PREFIX + ".enabledCache.state";
const TOPIC_PDFJS_HANDLER_CHANGED = "pdfjs:handlerChanged";
const PDF_CONTENT_TYPE = "application/pdf";
const { XPCOMUtils } = ChromeUtils.importESModule(
"resource://gre/modules/XPCOMUtils.sys.mjs"
);
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
var Svc = {};
XPCOMUtils.defineLazyServiceGetter(
@ -45,11 +39,9 @@ XPCOMUtils.defineLazyServiceGetter(
"nsIHandlerService"
);
const lazy = {};
ChromeUtils.defineModuleGetter(
lazy,
"PdfJsDefaultPreferences",
"resource://pdf.js/PdfJsDefaultPreferences.jsm"
);
ChromeUtils.defineESModuleGetters(lazy, {
PdfJsDefaultPreferences: "resource://pdf.js/PdfJsDefaultPreferences.sys.mjs",
});
function initializeDefaultPreferences() {
var defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + ".");
@ -96,7 +88,7 @@ const gPdfFakeHandlerInfo = {
type: PDF_CONTENT_TYPE,
};
var PdfJs = {
export var PdfJs = {
QueryInterface: ChromeUtils.generateQI(["nsIObserver"]),
_initialized: false,
_cachedIsDefault: true,

View file

@ -19,9 +19,7 @@
// THIS FILE IS GENERATED AUTOMATICALLY, DO NOT EDIT MANUALLY!
//
"use strict";
var EXPORTED_SYMBOLS = ["PdfJsDefaultPreferences"];
var PdfJsDefaultPreferences = Object.freeze({
export const PdfJsDefaultPreferences = Object.freeze({
"annotationEditorMode": 0,
"annotationMode": 2,
"cursorToolOnLoad": 0,

View file

@ -13,10 +13,6 @@
* limitations under the License.
*/
"use strict";
var EXPORTED_SYMBOLS = ["NetworkManager"];
// eslint-disable-next-line no-unused-vars
function log(aMsg) {
var msg = "PdfJsNetwork.jsm: " + (aMsg.join ? aMsg.join("") : aMsg);
@ -31,7 +27,7 @@ function getTypedArray(xhr) {
return Uint8Array.from(data, ch => ch.charCodeAt(0) & 0xff);
}
var NetworkManager = (function NetworkManagerClosure() {
export var NetworkManager = (function NetworkManagerClosure() {
const OK_RESPONSE = 200;
const PARTIAL_CONTENT_RESPONSE = 206;

View file

@ -14,11 +14,7 @@
*/
/* eslint max-len: ["error", 100] */
"use strict";
var EXPORTED_SYMBOLS = ["PdfJsTelemetry"];
var PdfJsTelemetry = {
export var PdfJsTelemetry = {
onViewerIsUsed() {
Glean.pdfjs.used.add(1);
},

View file

@ -13,13 +13,7 @@
* limitations under the License.
*/
"use strict";
const { SandboxSupportBase } = ChromeUtils.import(
"resource://pdf.js/build/pdf.sandbox.external.js"
);
const EXPORTED_SYMBOLS = ["PdfSandbox"];
import { SandboxSupportBase } from "resource://pdf.js/build/pdf.sandbox.external.sys.mjs";
class SandboxSupport extends SandboxSupportBase {
constructor(win, sandbox) {
@ -39,7 +33,7 @@ class SandboxSupport extends SandboxSupportBase {
}
}
class PdfSandbox {
export class PdfSandbox {
constructor(window, data) {
this.window = window;
const sandbox = Cu.Sandbox(null, {

View file

@ -13,10 +13,6 @@
* limitations under the License.
*/
"use strict";
var EXPORTED_SYMBOLS = ["PdfStreamConverter"];
const PDFJS_EVENT_ID = "pdf.js.message";
const PREF_PREFIX = "pdfjs";
const PDF_VIEWER_ORIGIN = "resource://pdf.js";
@ -25,17 +21,16 @@ const MAX_NUMBER_OF_PREFS = 50;
const MAX_STRING_PREF_LENGTH = 128;
const PDF_CONTENT_TYPE = "application/pdf";
const { XPCOMUtils } = ChromeUtils.importESModule(
"resource://gre/modules/XPCOMUtils.sys.mjs"
);
const { AppConstants } = ChromeUtils.importESModule(
"resource://gre/modules/AppConstants.sys.mjs"
);
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
AsyncPrefs: "resource://gre/modules/AsyncPrefs.sys.mjs",
NetworkManager: "resource://pdf.js/PdfJsNetwork.sys.mjs",
PdfJs: "resource://pdf.js/PdfJs.sys.mjs",
PdfJsTelemetry: "resource://pdf.js/PdfJsTelemetry.sys.mjs",
PdfSandbox: "resource://pdf.js/PdfSandbox.sys.mjs",
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
});
ChromeUtils.defineModuleGetter(
@ -44,26 +39,6 @@ ChromeUtils.defineModuleGetter(
"resource://gre/modules/NetUtil.jsm"
);
ChromeUtils.defineModuleGetter(
lazy,
"NetworkManager",
"resource://pdf.js/PdfJsNetwork.jsm"
);
ChromeUtils.defineModuleGetter(
lazy,
"PdfJsTelemetry",
"resource://pdf.js/PdfJsTelemetry.jsm"
);
ChromeUtils.defineModuleGetter(lazy, "PdfJs", "resource://pdf.js/PdfJs.jsm");
ChromeUtils.defineModuleGetter(
lazy,
"PdfSandbox",
"resource://pdf.js/PdfSandbox.jsm"
);
var Svc = {};
XPCOMUtils.defineLazyServiceGetter(
Svc,
@ -861,7 +836,7 @@ class RequestListener {
}
}
function PdfStreamConverter() {}
export function PdfStreamConverter() {}
PdfStreamConverter.prototype = {
QueryInterface: ChromeUtils.generateQI([

View file

@ -13,11 +13,7 @@
* limitations under the License.
*/
"use strict";
var EXPORTED_SYMBOLS = ["PdfjsChild"];
class PdfjsChild extends JSWindowActorChild {
export class PdfjsChild extends JSWindowActorChild {
init(supportsFind) {
if (supportsFind) {
this.sendAsyncMessage("PDFJS:Parent:addEventListener");

View file

@ -13,13 +13,7 @@
* limitations under the License.
*/
"use strict";
var EXPORTED_SYMBOLS = ["PdfjsParent"];
const { XPCOMUtils } = ChromeUtils.importESModule(
"resource://gre/modules/XPCOMUtils.sys.mjs"
);
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};
@ -51,7 +45,7 @@ let gFindTypes = [
"finddiacriticmatchingchange",
];
class PdfjsParent extends JSWindowActorParent {
export class PdfjsParent extends JSWindowActorParent {
constructor() {
super();
this._boundToFindbar = null;

View file

@ -13,7 +13,7 @@
* limitations under the License.
*/
class SandboxSupportBase {
export class SandboxSupportBase {
constructor(win) {
this.win = win;
this.timeoutIds = new Map();
@ -138,7 +138,4 @@ class SandboxSupportBase {
}
};
}
}
{
var EXPORTED_SYMBOLS = ["SandboxSupportBase"];
}

View file

@ -1,11 +1,11 @@
pdfjs.jar:
% resource pdf.js %content/
content/PdfJs.jsm (content/PdfJs.jsm)
content/PdfJsDefaultPreferences.jsm (content/PdfJsDefaultPreferences.jsm)
content/PdfJsNetwork.jsm (content/PdfJsNetwork.jsm)
content/PdfJsTelemetry.jsm (content/PdfJsTelemetry.jsm)
content/PdfSandbox.jsm (content/PdfSandbox.jsm)
content/PdfStreamConverter.jsm (content/PdfStreamConverter.jsm)
content/PdfJs.sys.mjs (content/PdfJs.sys.mjs)
content/PdfJsDefaultPreferences.sys.mjs (content/PdfJsDefaultPreferences.sys.mjs)
content/PdfJsNetwork.sys.mjs (content/PdfJsNetwork.sys.mjs)
content/PdfJsTelemetry.sys.mjs (content/PdfJsTelemetry.sys.mjs)
content/PdfSandbox.sys.mjs (content/PdfSandbox.sys.mjs)
content/PdfStreamConverter.sys.mjs (content/PdfStreamConverter.sys.mjs)
content/build/ (content/build/*)
content/web/cmaps/ (content/web/cmaps/*)
content/web/standard_fonts/ (content/web/standard_fonts/*)
@ -18,8 +18,8 @@ pdfjs.jar:
content/web/viewer.css (content/web/viewer-geckoview.css)
content/web/viewer.js (content/web/viewer-geckoview.js)
#else
content/PdfjsParent.jsm (content/PdfjsParent.jsm)
content/PdfjsChild.jsm (content/PdfjsChild.jsm)
content/PdfjsParent.sys.mjs (content/PdfjsParent.sys.mjs)
content/PdfjsChild.sys.mjs (content/PdfjsChild.sys.mjs)
content/web/viewer.html (content/web/viewer.html)
content/web/viewer.css (content/web/viewer.css)
content/web/viewer.js (content/web/viewer.js)

View file

@ -13,7 +13,7 @@ MOCHITEST_MANIFESTS += ["test/mochitest.ini"]
JAR_MANIFESTS += ["jar.mn"]
EXTRA_JS_MODULES += [
"pdfjs.js",
"pdfjs.sys.mjs",
]
XPCOM_MANIFESTS += [

View file

@ -13,22 +13,16 @@
* limitations under the License.
*/
"use strict";
const lazy = {};
ChromeUtils.defineModuleGetter(
lazy,
"PdfStreamConverter",
"resource://pdf.js/PdfStreamConverter.jsm"
);
ChromeUtils.defineESModuleGetters(lazy, {
PdfStreamConverter: "resource://pdf.js/PdfStreamConverter.sys.mjs",
});
// Register/unregister a constructor as a factory.
function StreamConverterFactory() {
export function StreamConverterFactory() {
if (!Services.prefs.getBoolPref("pdfjs.disabled", false)) {
return new lazy.PdfStreamConverter();
}
throw Components.Exception("", Cr.NS_ERROR_FACTORY_NOT_REGISTERED);
}
var EXPORTED_SYMBOLS = ["StreamConverterFactory"];

View file

@ -19,8 +19,8 @@ add_task(async function test_js_sandbox() {
]);
await SpecialPowers.spawn(browser, [], async () => {
const { PdfSandbox } = ChromeUtils.import(
"resource://pdf.js/PdfSandbox.jsm"
const { PdfSandbox } = ChromeUtils.importESModule(
"resource://pdf.js/PdfSandbox.sys.mjs"
);
let sandboxDestroyCount = 0;