diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index c2cf7426e59..f576d2fb2e4 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -13187,7 +13187,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent, { NS_ASSERTION(NS_IsMainThread(), "wrong thread"); - if (!IsOKToLoadURI(aURI)) { + if (!IsNavigationAllowed() || !IsOKToLoadURI(aURI)) { return NS_OK; } @@ -13243,7 +13243,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent, *aRequest = nullptr; } - if (!IsOKToLoadURI(aURI)) { + if (!IsNavigationAllowed() || !IsOKToLoadURI(aURI)) { return NS_OK; } diff --git a/docshell/test/browser/browser_onbeforeunload_navigation.js b/docshell/test/browser/browser_onbeforeunload_navigation.js index ad0c1fc51d1..f854140d298 100644 --- a/docshell/test/browser/browser_onbeforeunload_navigation.js +++ b/docshell/test/browser/browser_onbeforeunload_navigation.js @@ -113,6 +113,29 @@ var testFns = [ e.target.location.replace('otherpage-location-replaced.html'); return "stop"; }, + function(e) { + var link = e.target.createElement('a'); + link.href = "otherpage.html"; + e.target.body.appendChild(link); + link.click(); + return "stop"; + }, + function(e) { + var link = e.target.createElement('a'); + link.href = "otherpage.html"; + link.setAttribute("target", "_blank"); + e.target.body.appendChild(link); + link.click(); + return "stop"; + }, + function(e) { + var link = e.target.createElement('a'); + link.href = e.target.location.href; + e.target.body.appendChild(link); + link.setAttribute("target", "somearbitrarywindow"); + link.click(); + return "stop"; + }, ]; function runNextTest() {