move location change listening from ContentPrefSink to nsBrowserStatusHandler to possibly improve performance; r=sayrer, a=mconnor

This commit is contained in:
myk@mozilla.org 2007-10-10 23:35:20 -07:00
parent 1b7454e98c
commit 6989c455b3
2 changed files with 10 additions and 22 deletions

View file

@ -75,14 +75,12 @@ var ContentPrefSink = {
// Initialization & Destruction // Initialization & Destruction
init: function ContentPrefSink_init() { init: function ContentPrefSink_init() {
gBrowser.addProgressListener(this, Ci.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
gBrowser.addEventListener("DOMContentLoaded", this, false); gBrowser.addEventListener("DOMContentLoaded", this, false);
// XXX Should we also listen for pageshow and/or load? // XXX Should we also listen for pageshow and/or load?
}, },
destroy: function ContentPrefSink_destroy() { destroy: function ContentPrefSink_destroy() {
gBrowser.removeEventListener("DOMContentLoaded", this, false); gBrowser.removeEventListener("DOMContentLoaded", this, false);
gBrowser.removeProgressListener(this);
// Delete references to XPCOM components to make sure we don't leak them // Delete references to XPCOM components to make sure we don't leak them
// (although we haven't observed leakage in tests). Also delete references // (although we haven't observed leakage in tests). Also delete references
@ -99,25 +97,6 @@ var ContentPrefSink = {
//**************************************************************************// //**************************************************************************//
// Event Handlers // Event Handlers
// nsIWebProgressListener
onLocationChange: function ContentPrefSink_onLocationChange(progress, request, uri) {
// Catch exceptions until bug 376222 gets fixed so that we don't hork
// other progress listeners if our code throws an exception.
try {
this._handleLocationChanged(uri);
}
catch(ex) {
Components.utils.reportError(ex);
}
},
onStateChange: function ContentPrefSink_onStateChange(progress, request, flags, status) {},
onProgressChange: function ContentPrefSink_onProgressChange(progress, request, curSelfProgress,
maxSelfProgress, curTotalProgress,
maxTotalProgress) {},
onStatusChange: function ContentPrefSink_onStatusChange(progress, request, status, message) {},
onSecurityChange: function ContentPrefSink_onSecurityChange(progress, request, state) {},
// nsIDOMEventListener // nsIDOMEventListener
handleEvent: function ContentPrefSink_handleEvent(event) { handleEvent: function ContentPrefSink_handleEvent(event) {
@ -125,7 +104,7 @@ var ContentPrefSink = {
this._handleDOMContentLoaded(event); this._handleDOMContentLoaded(event);
}, },
_handleLocationChanged: function ContentPrefSink__handleLocationChanged(uri) { handleLocationChanged: function ContentPrefSink_handleLocationChanged(uri) {
if (!uri) if (!uri)
return; return;

View file

@ -3573,6 +3573,15 @@ nsBrowserStatusHandler.prototype =
} }
else else
this.asyncUpdateUI(); this.asyncUpdateUI();
// Catch exceptions until bug 376222 gets fixed so we don't hork
// other progress listeners if this call throws an exception.
try {
ContentPrefSink.handleLocationChanged(aLocationURI);
}
catch(ex) {
Components.utils.reportError(ex);
}
}, },
asyncUpdateUI : function () { asyncUpdateUI : function () {