Bug 1711756 - fix 'go back' button in network error page to work more reliably and not rely on session restore, r=nika

Differential Revision: https://phabricator.services.mozilla.com/D122918
This commit is contained in:
Gijs Kruitbosch 2021-08-18 15:08:36 +00:00
Родитель 7ef4a400c7
Коммит 1aaa98c995
2 изменённых файлов: 14 добавлений и 34 удалений

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

@ -12,9 +12,6 @@ const { XPCOMUtils } = ChromeUtils.import(
const { PrivateBrowsingUtils } = ChromeUtils.import(
"resource://gre/modules/PrivateBrowsingUtils.jsm"
);
const { SessionStore } = ChromeUtils.import(
"resource:///modules/sessionstore/SessionStore.jsm"
);
const { HomePage } = ChromeUtils.import("resource:///modules/HomePage.jsm");
const { TelemetryController } = ChromeUtils.import(
@ -145,11 +142,10 @@ class NetErrorParent extends JSWindowActorParent {
* infected, so we can get them somewhere safe.
*/
getDefaultHomePage(win) {
let url = win.BROWSER_NEW_TAB_URL;
if (PrivateBrowsingUtils.isWindowPrivate(win)) {
return url;
return win.BROWSER_NEW_TAB_URL;
}
url = HomePage.getDefault();
let url = HomePage.getDefault();
// If url is a pipe-delimited set of pages, just take the first one.
if (url.includes("|")) {
url = url.split("|")[0];
@ -165,20 +161,15 @@ class NetErrorParent extends JSWindowActorParent {
* or a default start page so that even when their own homepage is on a server
* that has certificate errors, we can get them somewhere safe.
*/
goBackFromErrorPage(win) {
if (!win.gBrowser) {
return;
}
let state = JSON.parse(SessionStore.getTabState(win.gBrowser.selectedTab));
if (state.index == 1) {
goBackFromErrorPage(browser) {
if (!browser.canGoBack) {
// If the unsafe page is the first or the only one in history, go to the
// start page.
win.gBrowser.loadURI(this.getDefaultHomePage(win), {
browser.loadURI(this.getDefaultHomePage(browser.ownerGlobal), {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
} else {
win.gBrowser.goBack();
browser.goBack();
}
}
@ -304,7 +295,7 @@ class NetErrorParent extends JSWindowActorParent {
this.browser.reload();
break;
case "Browser:SSLErrorGoBack":
this.goBackFromErrorPage(this.browser.ownerGlobal);
this.goBackFromErrorPage(this.browser);
break;
case "Browser:SSLErrorReportTelemetry":
let reportStatus = message.data.reportStatus;

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

@ -11,9 +11,6 @@ const { PrivateBrowsingUtils } = ChromeUtils.import(
"resource://gre/modules/PrivateBrowsingUtils.jsm"
);
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const { SessionStore } = ChromeUtils.import(
"resource:///modules/sessionstore/SessionStore.jsm"
);
class AboutHttpsOnlyErrorParent extends JSWindowActorParent {
get browser() {
@ -23,7 +20,7 @@ class AboutHttpsOnlyErrorParent extends JSWindowActorParent {
receiveMessage(aMessage) {
switch (aMessage.name) {
case "goBack":
this.goBackFromErrorPage(this.browser.ownerGlobal);
this.goBackFromErrorPage(this.browser);
break;
case "openInsecure":
this.openWebsiteInsecure(this.browser, aMessage.data.inFrame);
@ -31,22 +28,15 @@ class AboutHttpsOnlyErrorParent extends JSWindowActorParent {
}
}
goBackFromErrorPage(aWindow) {
if (!aWindow.gBrowser) {
return;
}
let state = JSON.parse(
SessionStore.getTabState(aWindow.gBrowser.selectedTab)
);
if (state.index == 1) {
goBackFromErrorPage(aBrowser) {
if (!aBrowser.canGoBack) {
// If the unsafe page is the first or the only one in history, go to the
// start page.
aWindow.gBrowser.loadURI(this.getDefaultHomePage(aWindow), {
aBrowser.loadURI(this.getDefaultHomePage(aBrowser.ownerGlobal), {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
} else {
aWindow.gBrowser.goBack();
aBrowser.goBack();
}
}
@ -113,11 +103,10 @@ class AboutHttpsOnlyErrorParent extends JSWindowActorParent {
}
getDefaultHomePage(win) {
let url = win.BROWSER_NEW_TAB_URL;
if (PrivateBrowsingUtils.isWindowPrivate(win)) {
return url;
return win.BROWSER_NEW_TAB_URL || "about:blank";
}
url = HomePage.getDefault();
let url = HomePage.getDefault();
// If url is a pipe-delimited set of pages, just take the first one.
if (url.includes("|")) {
url = url.split("|")[0];