Bug 644993 - Undo close tab doesn't refresh the content in a SSL Error page [r=mark.finkle]

This commit is contained in:
Lucas Rocha 2011-08-12 07:44:00 -04:00
Родитель cc040d29ec
Коммит 0b091f49ab
2 изменённых файлов: 31 добавлений и 2 удалений

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

@ -381,6 +381,7 @@ var Browser = {
messageManager.addMessageListener("scroll", this);
messageManager.addMessageListener("Browser:CertException", this);
messageManager.addMessageListener("Browser:BlockedSite", this);
messageManager.addMessageListener("Browser:ErrorPage", this);
// Broadcast a UIReady message so add-ons know we are finished with startup
let event = document.createEvent("Events");
@ -483,6 +484,7 @@ var Browser = {
messageManager.removeMessageListener("scroll", this);
messageManager.removeMessageListener("Browser:CertException", this);
messageManager.removeMessageListener("Browser:BlockedSite", this);
messageManager.removeMessageListener("Browser:ErrorPage", this);
var os = Services.obs;
os.removeObserver(XPInstallObserver, "addon-install-blocked");
@ -935,6 +937,14 @@ var Browser = {
}
},
/**
* Handle error page message from the content.
*/
_handleErrorPage: function _handleErrorPage(aMessage) {
let tab = this.getTabForBrowser(aMessage.target);
tab.updateThumbnail({ force: true });
},
/**
* Compute the sidebar percentage visibility.
*
@ -1225,6 +1235,9 @@ var Browser = {
case "Browser:BlockedSite":
this._handleBlockedSite(aMessage);
break;
case "Browser:ErrorPage":
this._handleErrorPage(aMessage);
break;
}
}
};
@ -2971,7 +2984,8 @@ Tab.prototype = {
return this.metadata.allowZoom && !Util.isURLEmpty(this.browser.currentURI.spec);
},
updateThumbnail: function updateThumbnail() {
updateThumbnail: function updateThumbnail(options) {
let options = options || {};
let browser = this._browser;
if (this._loading) {
@ -2979,9 +2993,11 @@ Tab.prototype = {
return;
}
let forceUpdate = ("force" in options && options.force);
// Do not repaint thumbnail if we already painted for this load. Bad things
// happen when we do async canvas draws in quick succession.
if (!browser || this._thumbnailWindowId == browser.contentWindowId)
if (!forceUpdate && (!browser || this._thumbnailWindowId == browser.contentWindowId))
return;
// Do not try to paint thumbnails if contentWindowWidth/Height have not been

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

@ -279,6 +279,7 @@ let Content = {
addEventListener("DOMActivate", this, true);
addEventListener("MozApplicationManifest", this, false);
addEventListener("DOMContentLoaded", this, false);
addEventListener("pagehide", this, false);
addEventListener("keypress", this, false, false);
@ -384,6 +385,10 @@ let Content = {
break;
}
case "DOMContentLoaded":
this._maybeNotifyErroPage();
break;
case "pagehide":
if (aEvent.target == content.document)
this._resetFontSize();
@ -602,6 +607,14 @@ let Content = {
}
},
_maybeNotifyErroPage: function _maybeNotifyErroPage() {
// Notify browser that an error page is being shown instead
// of the target location. Necessary to get proper thumbnail
// updates on chrome for error pages.
if (content.location.href !== content.document.documentURI)
sendAsyncMessage("Browser:ErrorPage", null);
},
_resetFontSize: function _resetFontSize() {
this._isZoomedToElement = false;
this._setMinFontSize(0);