diff --git a/dom/notification/Notification.cpp b/dom/notification/Notification.cpp index 4c233a1bf172..59972707e336 100644 --- a/dom/notification/Notification.cpp +++ b/dom/notification/Notification.cpp @@ -477,6 +477,9 @@ NotificationPermissionRequest::Run() { bool blocked = false; if (isSystem) { mPermission = NotificationPermission::Granted; + } else if (mPrincipal->GetPrivateBrowsingId() != 0) { + mPermission = NotificationPermission::Denied; + blocked = true; } else { // File are automatically granted permission. @@ -1452,7 +1455,12 @@ already_AddRefed Notification::RequestPermission( aRv.Throw(NS_ERROR_UNEXPECTED); return nullptr; } + nsCOMPtr principal = sop->GetPrincipal(); + if (!principal) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } RefPtr promise = Promise::Create(window->AsGlobal(), aRv); if (aRv.Failed()) { @@ -1506,6 +1514,14 @@ NotificationPermission Notification::GetPermissionInternal( } nsCOMPtr principal = sop->GetPrincipal(); + if (!principal) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return NotificationPermission::Denied; + } + + if (principal->GetPrivateBrowsingId() != 0) { + return NotificationPermission::Denied; + } // Disallow showing notification if our origin is not the same origin as the // toplevel one, see https://github.com/whatwg/notifications/issues/177. if (!StaticPrefs::dom_webnotifications_allowcrossoriginiframe()) {