mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
bug 376222: a javascript exception thrown by an extension's (or core code's) web progress listener shouldn't interfere with the normal operation of tabbed browsing (i.e. other progress listeners); Patch by John P. Baker; r=gavin, a=beltzner
This commit is contained in:
parent
484ec7007c
commit
1ebe0d6f34
@ -297,9 +297,13 @@
|
||||
for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) {
|
||||
var p = this.mTabBrowser.mProgressListeners[i];
|
||||
if (p)
|
||||
p.onProgressChange(aWebProgress, aRequest,
|
||||
aCurSelfProgress, aMaxSelfProgress,
|
||||
aCurTotalProgress, aMaxTotalProgress);
|
||||
try {
|
||||
p.onProgressChange(aWebProgress, aRequest,
|
||||
aCurSelfProgress, aMaxSelfProgress,
|
||||
aCurTotalProgress, aMaxTotalProgress);
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners or following code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -398,11 +402,16 @@
|
||||
if (this.mTabBrowser.mCurrentTab == this.mTab) {
|
||||
for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) {
|
||||
var p = this.mTabBrowser.mProgressListeners[i];
|
||||
if (p && !oldBlank)
|
||||
p.onStateChange(aWebProgress, aRequest, aStateFlags, aStatus);
|
||||
// make sure that the visible status of new blank tabs is correctly set
|
||||
else if (p && "onUpdateCurrentBrowser" in p)
|
||||
p.onUpdateCurrentBrowser(aStateFlags, aStatus, "", 0);
|
||||
if (p)
|
||||
try {
|
||||
if (!oldBlank)
|
||||
p.onStateChange(aWebProgress, aRequest, aStateFlags, aStatus);
|
||||
// make sure that the visible status of new blank tabs is correctly set
|
||||
else if ("onUpdateCurrentBrowser" in p)
|
||||
p.onUpdateCurrentBrowser(aStateFlags, aStatus, "", 0);
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners or following code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -433,7 +442,11 @@
|
||||
for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) {
|
||||
var p = this.mTabBrowser.mProgressListeners[i];
|
||||
if (p)
|
||||
p.onLocationChange(aWebProgress, aRequest, aLocation);
|
||||
try {
|
||||
p.onLocationChange(aWebProgress, aRequest, aLocation);
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -447,7 +460,11 @@
|
||||
for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) {
|
||||
var p = this.mTabBrowser.mProgressListeners[i];
|
||||
if (p)
|
||||
p.onStatusChange(aWebProgress, aRequest, aStatus, aMessage);
|
||||
try {
|
||||
p.onStatusChange(aWebProgress, aRequest, aStatus, aMessage);
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners or following code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -460,7 +477,11 @@
|
||||
for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) {
|
||||
var p = this.mTabBrowser.mProgressListeners[i];
|
||||
if (p)
|
||||
p.onSecurityChange(aWebProgress, aRequest, aState);
|
||||
try {
|
||||
p.onSecurityChange(aWebProgress, aRequest, aState);
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -471,8 +492,12 @@
|
||||
for (var i = 0; i < this.mTabBrowser.mProgressListeners.length; i++) {
|
||||
var p = this.mTabBrowser.mProgressListeners[i];
|
||||
if (p && "onRefreshAttempted" in p) {
|
||||
if (!p.onRefreshAttempted(aWebProgress, aURI, aDelay, aSameURI))
|
||||
allowRefresh = false;
|
||||
try {
|
||||
if (!p.onRefreshAttempted(aWebProgress, aURI, aDelay, aSameURI))
|
||||
allowRefresh = false;
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners or following code
|
||||
}
|
||||
}
|
||||
}
|
||||
return allowRefresh;
|
||||
@ -515,7 +540,11 @@
|
||||
for (var i = 0; i < this.mProgressListeners.length; i++) {
|
||||
var p = this.mProgressListeners[i];
|
||||
if ('onLinkIconAvailable' in p)
|
||||
p.onLinkIconAvailable(browser);
|
||||
try {
|
||||
p.onLinkIconAvailable(browser);
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</body>
|
||||
@ -737,19 +766,22 @@
|
||||
var i, p;
|
||||
for (i = 0; i < this.mProgressListeners.length; i++) {
|
||||
p = this.mProgressListeners[i];
|
||||
if (p) {
|
||||
p.onLocationChange(webProgress, null, loc);
|
||||
if (securityUI)
|
||||
p.onSecurityChange(webProgress, null, securityUI.state);
|
||||
if (p)
|
||||
try {
|
||||
p.onLocationChange(webProgress, null, loc);
|
||||
if (securityUI)
|
||||
p.onSecurityChange(webProgress, null, securityUI.state);
|
||||
|
||||
// make sure that all status indicators are properly updated
|
||||
if ("onUpdateCurrentBrowser" in p) {
|
||||
var listener = this.mTabListeners[this.mTabContainer.selectedIndex] || null;
|
||||
if (listener && listener.mStateFlags)
|
||||
p.onUpdateCurrentBrowser(listener.mStateFlags, listener.mStatus,
|
||||
listener.mMessage, listener.mTotalProgress);
|
||||
// make sure that all status indicators are properly updated
|
||||
if ("onUpdateCurrentBrowser" in p) {
|
||||
var listener = this.mTabListeners[this.mTabContainer.selectedIndex] || null;
|
||||
if (listener && listener.mStateFlags)
|
||||
p.onUpdateCurrentBrowser(listener.mStateFlags, listener.mStatus,
|
||||
listener.mMessage, listener.mTotalProgress);
|
||||
}
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners or following code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this._fastFind.setDocShell(this.mCurrentBrowser.docShell);
|
||||
@ -766,7 +798,11 @@
|
||||
for (i = 0; i < this.mProgressListeners.length; i++) {
|
||||
p = this.mProgressListeners[i];
|
||||
if (p)
|
||||
p.onStateChange(webProgress, null, nsIWebProgressListener.STATE_START | nsIWebProgressListener.STATE_IS_NETWORK, 0);
|
||||
try {
|
||||
p.onStateChange(webProgress, null, nsIWebProgressListener.STATE_START | nsIWebProgressListener.STATE_IS_NETWORK, 0);
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners or following code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -778,7 +814,11 @@
|
||||
for (i = 0; i < this.mProgressListeners.length; i++) {
|
||||
p = this.mProgressListeners[i];
|
||||
if (p)
|
||||
p.onStateChange(webProgress, null, nsIWebProgressListener.STATE_STOP | nsIWebProgressListener.STATE_IS_NETWORK, 0);
|
||||
try {
|
||||
p.onStateChange(webProgress, null, nsIWebProgressListener.STATE_STOP | nsIWebProgressListener.STATE_IS_NETWORK, 0);
|
||||
} catch (e) {
|
||||
// don't inhibit other listeners or following code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user