Bug 1456035: Part 5 - Convert manual QueryInterface to ChromeUtils.generateQI. r=mccr8

Manually-implemented QueryInterface functions don't benefit from the
MozQueryInterface optimizaions, and a lot of them are in hot code, and
implement a large number of interfaces.

MozReview-Commit-ID: 8OzglraowZt

--HG--
extra : rebase_source : 5fff3d9973a0ea976096339a63ce9ff628b68441
This commit is contained in:
Kris Maglione 2018-04-23 12:58:34 -07:00
parent a259026c9d
commit bf4d9f1be5
30 changed files with 75 additions and 268 deletions

View File

@ -301,12 +301,7 @@ appUpdater.prototype =
/**
* See nsISupports.idl
*/
QueryInterface(aIID) {
if (!aIID.equals(Ci.nsIUpdateCheckListener) &&
!aIID.equals(Ci.nsISupports))
throw Cr.NS_ERROR_NO_INTERFACE;
return this;
}
QueryInterface: ChromeUtils.generateQI(["nsIUpdateCheckListener"]),
},
/**
@ -427,11 +422,5 @@ appUpdater.prototype =
/**
* See nsISupports.idl
*/
QueryInterface(aIID) {
if (!aIID.equals(Ci.nsIProgressEventSink) &&
!aIID.equals(Ci.nsIRequestObserver) &&
!aIID.equals(Ci.nsISupports))
throw Cr.NS_ERROR_NO_INTERFACE;
return this;
}
QueryInterface: ChromeUtils.generateQI(["nsIProgressEventSink", "nsIRequestObserver"]),
};

View File

@ -4600,15 +4600,10 @@ var XULBrowserWindow = {
isBusy: false,
busyUI: false,
QueryInterface(aIID) {
if (aIID.equals(Ci.nsIWebProgressListener) ||
aIID.equals(Ci.nsIWebProgressListener2) ||
aIID.equals(Ci.nsISupportsWeakReference) ||
aIID.equals(Ci.nsIXULBrowserWindow) ||
aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_NOINTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener",
"nsIWebProgressListener2",
"nsISupportsWeakReference",
"nsIXULBrowserWindow"]),
get stopCommand() {
delete this.stopCommand;

View File

@ -4574,16 +4574,11 @@ class TabProgressListener {
return this._callProgressListeners("onRefreshAttempted",
[aWebProgress, aURI, aDelay, aSameURI]);
}
QueryInterface(aIID) {
if (aIID.equals(Ci.nsIWebProgressListener) ||
aIID.equals(Ci.nsIWebProgressListener2) ||
aIID.equals(Ci.nsISupportsWeakReference) ||
aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_NOINTERFACE;
}
}
TabProgressListener.prototype.QueryInterface = ChromeUtils.generateQI(
["nsIWebProgressListener",
"nsIWebProgressListener2",
"nsISupportsWeakReference"]);
var StatusPanel = {
get panel() {

View File

@ -47,13 +47,7 @@ var panelProgressListener = {
onSecurityChange(aWebProgress, aRequest, aState) {
},
QueryInterface(aIID) {
if (aIID.equals(Ci.nsIWebProgressListener) ||
aIID.equals(Ci.nsISupportsWeakReference) ||
aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_NOINTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener", "nsISupportsWeakReference"]),
};
var gLoadFired = false;

View File

@ -326,15 +326,10 @@ FeedConverter.prototype = {
/**
* See nsISupports.idl
*/
QueryInterface(iid) {
if (iid.equals(Ci.nsIFeedResultListener) ||
iid.equals(Ci.nsIStreamConverter) ||
iid.equals(Ci.nsIStreamListener) ||
iid.equals(Ci.nsIRequestObserver) ||
iid.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIFeedResultListener",
"nsIStreamConverter",
"nsIStreamListener",
"nsIRequestObserver"]),
};
/**
@ -456,13 +451,8 @@ FeedResultService.prototype = {
return this.QueryInterface(iid);
},
QueryInterface(iid) {
if (iid.equals(Ci.nsIFeedResultService) ||
iid.equals(Ci.nsIFactory) ||
iid.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
QueryInterface: ChromeUtils.generateQI(["nsIFeedResultService",
"nsIFactory"]),
};

View File

@ -48,13 +48,8 @@ WebContentConverter.prototype = {
wccr.loadPreferredHandler(request);
},
QueryInterface(iid) {
if (iid.equals(Ci.nsIStreamConverter) ||
iid.equals(Ci.nsIStreamListener) ||
iid.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIStreamConverter",
"nsIStreamListener"]),
};
let WebContentConverterFactory = {
@ -64,12 +59,7 @@ let WebContentConverterFactory = {
return new WebContentConverter().QueryInterface(iid);
},
QueryInterface(iid) {
if (iid.equals(Ci.nsIFactory) ||
iid.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIFactory"]),
};
function ServiceInfo(contentType, uri, name) {
@ -121,12 +111,7 @@ ServiceInfo.prototype = {
return this._uri.replace(/%s/gi, encodeURIComponent(uri));
},
QueryInterface(iid) {
if (iid.equals(Ci.nsIWebContentHandlerInfo) ||
iid.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIWebContentHandlerInfo"]),
};
const Utils = {

View File

@ -697,13 +697,7 @@ nsDefaultCommandLineHandler.prototype = {
classID: Components.ID("{47cd0651-b1be-4a0f-b5c4-10e5a573ef71}"),
/* nsISupports */
QueryInterface: function dch_QI(iid) {
if (!iid.equals(Ci.nsISupports) &&
!iid.equals(Ci.nsICommandLineHandler))
throw Cr.NS_ERROR_NO_INTERFACE;
return this;
},
QueryInterface: ChromeUtils.generateQI(["nsICommandLineHandler"]),
_haveProfile: false,

View File

@ -372,12 +372,7 @@ var BookmarkPropertiesPanel = {
},
// nsISupports
QueryInterface: function BPP_QueryInterface(aIID) {
if (aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_NOINTERFACE;
},
QueryInterface: ChromeUtils.generateQI([]),
_element: function BPP__element(aID) {
return document.getElementById("editBMPanel_" + aID);

View File

@ -19,6 +19,9 @@ function PlacesViewBase(aPlace, aOptions = {}) {
this._viewElt.controllers.appendController(this._controller);
}
PlacesViewBase.interfaces = [Ci.nsINavHistoryResultObserver,
Ci.nsISupportsWeakReference];
PlacesViewBase.prototype = {
// The xul element that holds the entire view.
_viewElt: null,
@ -42,8 +45,7 @@ PlacesViewBase.prototype = {
_nativeView: false,
QueryInterface: ChromeUtils.generateQI(
[Ci.nsINavHistoryResultObserver,
Ci.nsISupportsWeakReference]),
PlacesViewBase.interfaces),
_place: "",
get place() {
@ -1008,12 +1010,8 @@ PlacesToolbar.prototype = {
_cbEvents: ["dragstart", "dragover", "dragexit", "dragend", "drop",
"mousemove", "mouseover", "mouseout"],
QueryInterface: function PT_QueryInterface(aIID) {
if (aIID.equals(Ci.nsITimerCallback))
return this;
return PlacesViewBase.prototype.QueryInterface.apply(this, arguments);
},
QueryInterface: ChromeUtils.generateQI(["nsITimerCallback",
...PlacesViewBase.interfaces]),
uninit: function PT_uninit() {
this._removeEventListeners(this._viewElt, this._cbEvents, false);
@ -1975,10 +1973,6 @@ function PlacesPanelMenuView(aPlace, aViewId, aRootId, aOptions) {
PlacesPanelMenuView.prototype = {
__proto__: PlacesViewBase.prototype,
QueryInterface: function PAMV_QueryInterface(aIID) {
return PlacesViewBase.prototype.QueryInterface.apply(this, arguments);
},
uninit: function PAMV_uninit() {
PlacesViewBase.prototype.uninit.apply(this, arguments);
},

View File

@ -196,12 +196,7 @@ var PlacesOrganizer = {
ContentArea.focus();
},
QueryInterface: function PO_QueryInterface(aIID) {
if (aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_NOINTERFACE;
},
QueryInterface: ChromeUtils.generateQI([]),
handleEvent: function PO_handleEvent(aEvent) {
if (aEvent.type != "AppCommand")

View File

@ -3022,14 +3022,7 @@ FeedHandlerInfo.prototype = {
_inner: [],
_removed: [],
QueryInterface(aIID) {
if (aIID.equals(Ci.nsIMutableArray) ||
aIID.equals(Ci.nsIArray) ||
aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIMutableArray", "nsIArray"]),
get length() {
return this._inner.length;

View File

@ -183,14 +183,8 @@ var global = this;
}
makeScrollbarsFloating();
},
QueryInterface: function QueryInterface(iid) {
if (iid.equals(Ci.nsIWebProgressListener) ||
iid.equals(Ci.nsISupportsWeakReference) ||
iid.equals(Ci.nsISupports)) {
return this;
}
throw Cr.NS_ERROR_NO_INTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener",
"nsISupportsWeakReference"]),
};
})();

View File

@ -491,15 +491,9 @@ function DownloadListener(win, transfer) {
}
DownloadListener.prototype = {
QueryInterface: function(iid) {
if (iid.equals(Ci.nsIInterfaceRequestor) ||
iid.equals(Ci.nsIWebProgressListener) ||
iid.equals(Ci.nsIWebProgressListener2) ||
iid.equals(Ci.nsISupports)) {
return this;
}
throw Cr.NS_ERROR_NO_INTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIInterfaceRequestor",
"nsIWebProgressListener",
"nsIWebProgressListener2"]),
getInterface: function(iid) {
if (iid.equals(Ci.nsIAuthPrompt) ||

View File

@ -50,13 +50,8 @@ var PushSubscriptionListener = function(pushService, uri) {
PushSubscriptionListener.prototype = {
QueryInterface: function (aIID) {
if (aIID.equals(Ci.nsIHttpPushListener) ||
aIID.equals(Ci.nsIStreamListener)) {
return this;
}
throw Cr.NS_ERROR_NO_INTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIHttpPushListener",
"nsIStreamListener"]),
getInterface: function(aIID) {
return this.QueryInterface(aIID);

View File

@ -236,13 +236,8 @@ var Notifications = {
}
},
QueryInterface: function(aIID) {
if (!aIID.equals(Ci.nsISupports) &&
!aIID.equals(Ci.nsIObserver) &&
!aIID.equals(Ci.nsISupportsWeakReference))
throw Cr.NS_ERROR_NO_INTERFACE;
return this;
}
QueryInterface: ChromeUtils.generateQI(["nsIObserver",
"nsISupportsWeakReference"]),
};
EventDispatcher.instance.registerListener(Notifications, "Notification:Event");

View File

@ -26,13 +26,7 @@ SSLExceptions.prototype = {
getInterface: function SSLE_getInterface(aIID) {
return this.QueryInterface(aIID);
},
QueryInterface: function SSLE_QueryInterface(aIID) {
if (aIID.equals(Ci.nsIBadCertListener2) ||
aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIBadCertListener2"]),
/**
To collect the SSL status we intercept the certificate error here

View File

@ -974,16 +974,8 @@ ContentPrefService2.prototype = {
} });
},
QueryInterface: function CPS2_QueryInterface(iid) {
let supportedIIDs = [
Ci.nsIContentPrefService2,
Ci.nsIObserver,
Ci.nsISupports,
];
if (supportedIIDs.some(i => iid.equals(i)))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIContentPrefService2",
"nsIObserver"]),
// Database Creation & Access

View File

@ -66,11 +66,8 @@ var progressListener = {
dialog.title.setAttribute("value", aMessage);
},
QueryInterface(iid) {
if (iid.equals(Ci.nsIWebProgressListener) || iid.equals(Ci.nsISupportsWeakReference))
return this;
throw Cr.NS_NOINTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener",
"nsISupportsWeakReference"]),
};
function onLoad() {

View File

@ -148,12 +148,8 @@ var progressListener = {
// we can ignore this notification
},
QueryInterface(iid) {
if (iid.equals(Ci.nsIWebProgressListener) || iid.equals(Ci.nsISupportsWeakReference))
return this;
throw Cr.NS_NOINTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener",
"nsISupportsWeakReference"]),
};
function getString( stringId ) {

View File

@ -399,13 +399,8 @@ var PrintUtils = {
setTimeout(function() { PrintUtils.enterPrintPreview(); }, 0);
},
QueryInterface(iid) {
if (iid.equals(Ci.nsIObserver) ||
iid.equals(Ci.nsISupportsWeakReference) ||
iid.equals(Ci.nsISupports))
return this;
throw Cr.NS_NOINTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIObserver",
"nsISupportsWeakReference"]),
},
setSimplifiedMode(shouldSimplify) {

View File

@ -270,13 +270,8 @@ var gViewSourceUtils = {
mnsIWebProgressListener: Ci.nsIWebProgressListener,
QueryInterface(aIID) {
if (aIID.equals(this.mnsIWebProgressListener) ||
aIID.equals(Ci.nsISupportsWeakReference) ||
aIID.equals(Ci.nsISupports))
return this;
throw Cr.NS_NOINTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener",
"nsISupportsWeakReference"]),
destroy() {
if (this.webShell) {

View File

@ -232,16 +232,9 @@ var WebProgressListener = {
sendAsyncMessage("Content:LoadURIResult");
},
QueryInterface: function QueryInterface(aIID) {
if (aIID.equals(Ci.nsIWebProgressListener) ||
aIID.equals(Ci.nsIWebProgressListener2) ||
aIID.equals(Ci.nsISupportsWeakReference) ||
aIID.equals(Ci.nsISupports)) {
return this;
}
throw Cr.NS_ERROR_NO_INTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener",
"nsIWebProgressListener2",
"nsISupportsWeakReference"]),
};
WebProgressListener.init();

View File

@ -248,15 +248,9 @@ function DownloadListener(win, transfer) {
}
DownloadListener.prototype = {
QueryInterface: function dl_qi(aIID) {
if (aIID.equals(Ci.nsIInterfaceRequestor) ||
aIID.equals(Ci.nsIWebProgressListener) ||
aIID.equals(Ci.nsIWebProgressListener2) ||
aIID.equals(Ci.nsISupports)) {
return this;
}
throw Cr.NS_ERROR_NO_INTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIInterfaceRequestor",
"nsIWebProgressListener",
"nsIWebProgressListener2"]),
getInterface: function dl_gi(aIID) {
if (aIID.equals(Ci.nsIAuthPrompt) ||
@ -1184,13 +1178,8 @@ function openURL(aURL) {
onStopRequest: function ll_stop(aRequest, aContext, aStatusCode) {
appstartup.exitLastWindowClosingSurvivalArea();
},
QueryInterface: function ll_QI(iid) {
if (iid.equals(Ci.nsISupports) ||
iid.equals(Ci.nsIRequestObserver) ||
iid.equals(Ci.nsISupportsWeakReference))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
}
QueryInterface: ChromeUtils.generateQI(["nsIRequestObserver",
"nsISupportsWeakReference"]),
};
loadgroup.groupObserver = loadListener;

View File

@ -204,13 +204,8 @@ BadCertHandler.prototype = {
},
// nsISupports
QueryInterface(iid) {
if (!iid.equals(Ci.nsIChannelEventSink) &&
!iid.equals(Ci.nsIInterfaceRequestor) &&
!iid.equals(Ci.nsISupports))
throw Cr.NS_ERROR_NO_INTERFACE;
return this;
}
QueryInterface: ChromeUtils.generateQI(["nsIChannelEventSink",
"nsIInterfaceRequestor"]),
};
var CertUtils = {

View File

@ -1699,13 +1699,7 @@ FinderHighlighter.prototype = {
return {
findbar: this,
QueryInterface(iid) {
if (iid.equals(Ci.nsIDocumentStateListener) ||
iid.equals(Ci.nsISupports))
return this;
throw Cr.NS_ERROR_NO_INTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIDocumentStateListener"]),
NotifyDocumentWillBeDestroyed() {
this.findbar._onEditorDestruction(this);

View File

@ -368,19 +368,6 @@ class AuthRequestor {
this.httpObserver = httpObserver;
}
QueryInterface(iid) {
if (iid.equals(Ci.nsISupports) ||
iid.equals(Ci.nsIInterfaceRequestor) ||
iid.equals(Ci.nsIAuthPromptProvider) ||
iid.equals(Ci.nsIAuthPrompt2)) {
return this;
}
try {
return this.notificationCallbacks.QueryInterface(iid);
} catch (e) {}
throw Cr.NS_ERROR_NO_INTERFACE;
}
getInterface(iid) {
if (iid.equals(Ci.nsIAuthPromptProvider) || iid.equals(Ci.nsIAuthPrompt2)) {
return this;
@ -497,6 +484,12 @@ class AuthRequestor {
}
}
AuthRequestor.prototype.QueryInterface = ChromeUtils.generateQI(
["nsIInterfaceRequestor",
"nsIAuthPromptProvider",
"nsIAuthPrompt2"]);
HttpObserverManager = {
openingInitialized: false,
modifyInitialized: false,

View File

@ -40,13 +40,9 @@ let privateLoadContext = Cc["@mozilla.org/privateloadcontext;1"].
createInstance(Ci.nsILoadContext);
var observer = {
QueryInterface(aIID) {
if (aIID.equals(Ci.nsIObserver) ||
aIID.equals(Ci.nsISupports) ||
aIID.equals(Ci.nsISupportsWeakReference))
return this;
throw Cr.NS_NOINTERFACE;
},
QueryInterface: ChromeUtils.generateQI(["nsIObserver",
"nsISupportsWeakReference"]),
observe(aSubject, aTopic, aData) {
switch (aTopic) {
case "last-pb-context-exited":

View File

@ -121,14 +121,8 @@ nsUnknownContentTypeDialog.prototype = {
nsIMIMEInfo: Ci.nsIMIMEInfo,
QueryInterface(iid) {
if (!iid.equals(Ci.nsIHelperAppLauncherDialog) &&
!iid.equals(Ci.nsITimerCallback) &&
!iid.equals(Ci.nsISupports)) {
throw Cr.NS_ERROR_NO_INTERFACE;
}
return this;
},
QueryInterface: ChromeUtils.generateQI(["nsIHelperAppLauncherDialog",
"nsITimerCallback"]),
// ---------- nsIHelperAppLauncherDialog methods ----------

View File

@ -259,15 +259,7 @@ class WebAPI extends APIObject {
this.broker.setAddonListener(null);
}
}
QueryInterface(iid) {
if (iid.equals(WebAPI.classID) || iid.equals(Ci.nsISupports)
|| iid.equals(Ci.nsIDOMGlobalPropertyInitializer)) {
return this;
}
return Cr.NS_ERROR_NO_INTERFACE;
}
}
WebAPI.prototype.QueryInterface = ChromeUtils.generateQI(["nsIDOMGlobalPropertyInitializer"]);
WebAPI.prototype.classID = Components.ID("{8866d8e3-4ea5-48b7-a891-13ba0ac15235}");
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([WebAPI]);

View File

@ -547,12 +547,7 @@ var gCheckingPage = {
/**
* See nsISupports.idl
*/
QueryInterface(aIID) {
if (!aIID.equals(Ci.nsIUpdateCheckListener) &&
!aIID.equals(Ci.nsISupports))
throw Cr.NS_ERROR_NO_INTERFACE;
return this;
}
QueryInterface: ChromeUtils.generateQI(["nsIUpdateCheckListener"]),
}
};