зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
7ef4a400c7
Коммит
1aaa98c995
|
@ -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];
|
||||
|
|
Загрузка…
Ссылка в новой задаче