diff --git a/app/src/main/java/org/mozilla/fenix/session/NotificationSessionObserver.kt b/app/src/main/java/org/mozilla/fenix/session/NotificationSessionObserver.kt index 0b170c21a..0826e4ac7 100644 --- a/app/src/main/java/org/mozilla/fenix/session/NotificationSessionObserver.kt +++ b/app/src/main/java/org/mozilla/fenix/session/NotificationSessionObserver.kt @@ -32,7 +32,9 @@ class NotificationSessionObserver( } override fun onSessionAdded(session: Session) { - if (session.private) { + // Custom tabs are meant to feel like part of the app that opened them, not Fenix, so we + // don't need to show a 'close tab' notification for them + if (session.private && !session.isCustomTabSession()) { SessionNotificationService.start(context) } } diff --git a/app/src/main/java/org/mozilla/fenix/session/SessionNotificationService.kt b/app/src/main/java/org/mozilla/fenix/session/SessionNotificationService.kt index 62622b497..b4cace5d8 100644 --- a/app/src/main/java/org/mozilla/fenix/session/SessionNotificationService.kt +++ b/app/src/main/java/org/mozilla/fenix/session/SessionNotificationService.kt @@ -26,7 +26,14 @@ import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.ext.sessionsOfType /** - * As long as a session is active this service will keep the notification (and our process) alive. + * Manages notifications for private tabs. + * + * Private tab notifications solve two problems for us: + * 1 - They allow users to interact with us from outside of the app (example: by closing all + * private tabs). + * 2 - The notification will keep our process alive, allowing us to keep private tabs in memory. + * + * As long as a session is active this service will keep its notification alive. */ class SessionNotificationService : Service() {