Bug 1881037 - Part 1: Stop showing unknown protocol error pages for web-triggered loads, r=smaug,necko-reviewers,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D217495
This commit is contained in:
@@ -6128,7 +6128,7 @@ already_AddRefed<nsIURI> nsDocShell::AttemptURIFixup(
|
||||
|
||||
nsresult nsDocShell::FilterStatusForErrorPage(
|
||||
nsresult aStatus, nsIChannel* aChannel, uint32_t aLoadType,
|
||||
bool aIsTopFrame, bool aUseErrorPages, bool aIsInitialDocument,
|
||||
bool aIsTopFrame, bool aUseErrorPages,
|
||||
bool* aSkippedUnknownProtocolNavigation) {
|
||||
// Errors to be shown only on top-level frames
|
||||
if ((aStatus == NS_ERROR_UNKNOWN_HOST ||
|
||||
@@ -6173,17 +6173,10 @@ nsresult nsDocShell::FilterStatusForErrorPage(
|
||||
|
||||
if (aStatus == NS_ERROR_UNKNOWN_PROTOCOL) {
|
||||
// For unknown protocols we only display an error if the load is triggered
|
||||
// by the browser itself, or we're replacing the initial document (and
|
||||
// nothing else). Showing the error for page-triggered navigations causes
|
||||
// annoying behavior for users, see bug 1528305.
|
||||
//
|
||||
// We could, maybe, try to detect if this is in response to some user
|
||||
// interaction (like clicking a link, or something else) and maybe show
|
||||
// the error page in that case. But this allows for ctrl+clicking and such
|
||||
// to see the error page.
|
||||
// by the browser itself. Showing the error for page-triggered navigations
|
||||
// causes annoying behavior for users, see bug 1528305.
|
||||
nsCOMPtr<nsILoadInfo> info = aChannel->LoadInfo();
|
||||
if (!info->TriggeringPrincipal()->IsSystemPrincipal() &&
|
||||
!aIsInitialDocument) {
|
||||
if (!info->TriggeringPrincipal()->IsSystemPrincipal()) {
|
||||
if (aSkippedUnknownProtocolNavigation) {
|
||||
*aSkippedUnknownProtocolNavigation = true;
|
||||
}
|
||||
@@ -6333,12 +6326,9 @@ nsresult nsDocShell::EndPageLoad(nsIWebProgress* aProgress,
|
||||
aStatus == NS_ERROR_CONTENT_BLOCKED);
|
||||
UnblockEmbedderLoadEventForFailure(fireFrameErrorEvent);
|
||||
|
||||
bool isInitialDocument =
|
||||
!GetExtantDocument() || GetExtantDocument()->IsInitialDocument();
|
||||
bool skippedUnknownProtocolNavigation = false;
|
||||
aStatus = FilterStatusForErrorPage(aStatus, aChannel, mLoadType, isTopFrame,
|
||||
mBrowsingContext->GetUseErrorPages(),
|
||||
isInitialDocument,
|
||||
&skippedUnknownProtocolNavigation);
|
||||
hadErrorStatus = true;
|
||||
if (NS_FAILED(aStatus)) {
|
||||
|
||||
Reference in New Issue
Block a user