Dan Ballard pushed to branch tor-browser-128.14.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
-
5a8cfa37
by clairehurst at 2025-08-26T17:10:09-05:00
3 changed files:
- mobile/android/android-components/components/support/base/src/main/java/mozilla/components/support/base/android/NotificationsDelegate.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/session/PrivateNotificationService.kt
Changes:
... | ... | @@ -37,6 +37,15 @@ class NotificationsDelegate( |
37 | 37 | var isRequestingPermission: Boolean = false
|
38 | 38 | private set
|
39 | 39 | |
40 | + /**
|
|
41 | + * Defaults to true, normal behavior is to destroy the app when OnDestroy is called with isFinishing set to true
|
|
42 | + *
|
|
43 | + * A value of false indicates that the notification was just swiped away and the app should not shut down on it's behalf
|
|
44 | + *
|
|
45 | + * Workaround to make swiping the notification away not shutdown the app
|
|
46 | + */
|
|
47 | + var shouldShutDownWithOnDestroyWhenIsFinishing: Boolean = true
|
|
48 | + |
|
40 | 49 | private var onPermissionGranted: OnPermissionGranted = { }
|
41 | 50 | private var onPermissionRejected: OnPermissionRejected = { }
|
42 | 51 | private val notificationPermissionHandler: MutableMap<AppCompatActivity, ActivityResultLauncher<String>> =
|
... | ... | @@ -635,10 +635,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn |
635 | 635 | override fun onDestroy() {
|
636 | 636 | super.onDestroy()
|
637 | 637 | |
638 | - if (isFinishing) {
|
|
639 | - exitProcess(0)
|
|
640 | - }
|
|
641 | - |
|
642 | 638 | // Diagnostic breadcrumb for "Display already aquired" crash:
|
643 | 639 | // https://github.com/mozilla-mobile/android-components/issues/7960
|
644 | 640 | breadcrumb(
|
... | ... | @@ -658,6 +654,16 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn |
658 | 654 | if (this !is ExternalAppBrowserActivity && !activityStartedWithLink) {
|
659 | 655 | stopMediaSession()
|
660 | 656 | }
|
657 | + |
|
658 | + if (applicationContext.components.notificationsDelegate.shouldShutDownWithOnDestroyWhenIsFinishing) {
|
|
659 | + if (isFinishing) {
|
|
660 | + shutDown()
|
|
661 | + }
|
|
662 | + } else {
|
|
663 | + // We only want to not shut down when the notification is swiped away,
|
|
664 | + // if we do not reset this value
|
|
665 | + applicationContext.components.notificationsDelegate.shouldShutDownWithOnDestroyWhenIsFinishing = true
|
|
666 | + }
|
|
661 | 667 | }
|
662 | 668 | |
663 | 669 | final override fun onConfigurationChanged(newConfig: Configuration) {
|
... | ... | @@ -70,6 +70,7 @@ class PrivateNotificationService : AbstractPrivateNotificationService() { |
70 | 70 | @SuppressLint("MissingSuperCall")
|
71 | 71 | override fun erasePrivateTabs() {
|
72 | 72 | val inPrivateMode = store.state.selectedTab?.content?.private ?: false
|
73 | + notificationsDelegate.shouldShutDownWithOnDestroyWhenIsFinishing = false
|
|
73 | 74 | |
74 | 75 | // Trigger use case directly for now (instead of calling super.erasePrivateTabs)
|
75 | 76 | // as otherwise SessionManager and the store will be out of sync.
|