Backed out 4 changesets (bug 1351690) for failing browser chrome at e.g. browser/extensions/pdfjs/test/browser_pdfjs_zoom.js

Backed out changeset 8def346f7119 (bug 1351690)
Backed out changeset 64082649b185 (bug 1351690)
Backed out changeset 64d513f3c02b (bug 1351690)
Backed out changeset 4219d3de5e8b (bug 1351690)
This commit is contained in:
Andreea Pavel 2018-05-31 13:03:06 +03:00
Родитель ea0d874fa8
Коммит 5798120b15
7 изменённых файлов: 65 добавлений и 105 удалений

Просмотреть файл

@ -119,7 +119,6 @@ const startupPhases = {
"resource://gre/modules/AsyncPrefs.jsm",
"resource://gre/modules/LoginManagerContextMenu.jsm",
"resource://gre/modules/Task.jsm",
"resource://pdf.js/PdfStreamConverter.jsm",
]),
}},
};

Просмотреть файл

@ -29,8 +29,6 @@ const blacklist = {
"resource://gre/modules/Promise.jsm",
"resource://gre/modules/Task.jsm",
"resource://gre/modules/osfile.jsm",
"resource://pdf.js/PdfJs.jsm",
"resource://pdf.js/PdfStreamConverter.jsm",
]),
services: new Set([
"@mozilla.org/base/telemetry-startup;1",

Просмотреть файл

@ -17,6 +17,8 @@
var EXPORTED_SYMBOLS = ["PdfJs"];
const Cm = Components.manager;
const PREF_PREFIX = "pdfjs";
const PREF_DISABLED = PREF_PREFIX + ".disabled";
const PREF_MIGRATION_VERSION = PREF_PREFIX + ".migrationVersion";
@ -49,8 +51,6 @@ ChromeUtils.defineModuleGetter(this, "PdfjsContentUtils",
"resource://pdf.js/PdfjsContentUtils.jsm");
ChromeUtils.defineModuleGetter(this, "PdfJsDefaultPreferences",
"resource://pdf.js/PdfJsDefaultPreferences.jsm");
ChromeUtils.defineModuleGetter(this, "PdfJsRegistration",
"resource://pdf.js/PdfJsRegistration.jsm");
function getBoolPref(aPref, aDefaultValue) {
try {
@ -95,8 +95,40 @@ function initializeDefaultPreferences() {
}
}
// Register/unregister a constructor as a factory.
function Factory() {}
Factory.prototype = {
register: function register(targetConstructor) {
var proto = targetConstructor.prototype;
this._classID = proto.classID;
var factory = XPCOMUtils._getFactory(targetConstructor);
this._factory = factory;
var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
registrar.registerFactory(proto.classID, proto.classDescription,
proto.contractID, factory);
if (proto.classID2) {
this._classID2 = proto.classID2;
registrar.registerFactory(proto.classID2, proto.classDescription,
proto.contractID2, factory);
}
},
unregister: function unregister() {
var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
registrar.unregisterFactory(this._classID, this._factory);
if (this._classID2) {
registrar.unregisterFactory(this._classID2, this._factory);
}
this._factory = null;
},
};
var PdfJs = {
QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver]),
_registered: false,
_initialized: false,
init: function init(remote) {
@ -301,11 +333,25 @@ var PdfJs = {
},
ensureRegistered: function ensureRegistered() {
PdfJsRegistration.ensureRegistered();
if (this._registered) {
return;
}
this._pdfStreamConverterFactory = new Factory();
ChromeUtils.import("resource://pdf.js/PdfStreamConverter.jsm");
this._pdfStreamConverterFactory.register(PdfStreamConverter);
this._registered = true;
},
ensureUnregistered: function ensureUnregistered() {
PdfJsRegistration.ensureUnregistered();
if (!this._registered) {
return;
}
this._pdfStreamConverterFactory.unregister();
Cu.unload("resource://pdf.js/PdfStreamConverter.jsm");
delete this._pdfStreamConverterFactory;
this._registered = false;
},
};

Просмотреть файл

@ -1,92 +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.
*/
"use strict";
var EXPORTED_SYMBOLS = ["PdfJsRegistration"];
const Cm = Components.manager;
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
ChromeUtils.defineModuleGetter(this, "PdfStreamConverter",
"resource://pdf.js/PdfStreamConverter.jsm");
// Register/unregister a constructor as a factory.
function StreamConverterFactory() {}
StreamConverterFactory.prototype = {
// properties required for XPCOM registration:
_classID: Components.ID("{d0c5195d-e798-49d4-b1d3-9324328b2291}"),
_classDescription: "pdf.js Component",
_contractID: "@mozilla.org/streamconv;1?from=application/pdf&to=*/*",
_classID2: Components.ID("{d0c5195d-e798-49d4-b1d3-9324328b2292}"),
_contractID2: "@mozilla.org/streamconv;1?from=application/pdf&to=text/html",
register: function register() {
var factory = {
createInstance(outer, iid) {
if (outer)
throw Cr.NS_ERROR_NO_AGGREGATION;
return (new PdfStreamConverter()).QueryInterface(iid);
},
QueryInterface: ChromeUtils.generateQI([Ci.nsIFactory])
};
this._factory = factory;
var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
registrar.registerFactory(this._classID, this._classDescription,
this._contractID, factory);
registrar.registerFactory(this._classID2, this._classDescription,
this._contractID2, factory);
},
unregister: function unregister() {
var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
registrar.unregisterFactory(this._classID, this._factory);
if (this._classID2) {
registrar.unregisterFactory(this._classID2, this._factory);
}
this._factory = null;
},
};
var PdfJsRegistration = {
_registered: false,
ensureRegistered: function ensureRegistered() {
if (this._registered) {
return;
}
this._pdfStreamConverterFactory = new StreamConverterFactory();
this._pdfStreamConverterFactory.register();
this._registered = true;
},
ensureUnregistered: function ensureUnregistered() {
if (!this._registered) {
return;
}
this._pdfStreamConverterFactory.unregister();
Cu.unload("resource://pdf.js/PdfStreamConverter.jsm");
delete this._pdfStreamConverterFactory;
this._registered = false;
},
};

Просмотреть файл

@ -800,6 +800,15 @@ function PdfStreamConverter() {
}
PdfStreamConverter.prototype = {
// properties required for XPCOM registration:
classID: Components.ID("{d0c5195d-e798-49d4-b1d3-9324328b2291}"),
classDescription: "pdf.js Component",
contractID: "@mozilla.org/streamconv;1?from=application/pdf&to=*/*",
classID2: Components.ID("{d0c5195d-e798-49d4-b1d3-9324328b2292}"),
contractID2: "@mozilla.org/streamconv;1?from=application/pdf&to=text/html",
QueryInterface: ChromeUtils.generateQI([Ci.nsIStreamConverter, Ci.nsIStreamListener, Ci.nsIRequestObserver]),
/*

Просмотреть файл

@ -118,12 +118,12 @@ var PdfjsContentUtils = {
// Only react to this if we are remote.
if (Services.appinfo.processType ===
Services.appinfo.PROCESS_TYPE_CONTENT) {
let jsm = "resource://pdf.js/PdfJsRegistration.jsm";
let pdfjsr = ChromeUtils.import(jsm, {}).PdfJsRegistration;
let jsm = "resource://pdf.js/PdfJs.jsm";
let pdfjs = ChromeUtils.import(jsm, {}).PdfJs;
if (aMsg.data.enabled) {
pdfjsr.ensureRegistered();
pdfjs.ensureRegistered();
} else {
pdfjsr.ensureUnregistered();
pdfjs.ensureUnregistered();
}
}
break;

Просмотреть файл

@ -22,9 +22,9 @@
*/
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://pdf.js/PdfJsRegistration.jsm");
ChromeUtils.import("resource://pdf.js/PdfJs.jsm");
if (Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_CONTENT) {
// register various pdfjs factories that hook us into content loading.
PdfJsRegistration.ensureRegistered();
PdfJs.ensureRegistered();
}