Matthew Finkel pushed to branch tor-browser-82.0.0b4-10.0-1 at The Tor Project / Applications / fenix
Commits:
-
a061d49c
by Matthew Finkel at 2020-10-16T17:04:37+00:00
-
e7ca4137
by Matthew Finkel at 2020-10-23T14:11:39+00:00
2 changed files:
- app/src/main/java/org/mozilla/fenix/FenixApplication.kt
- app/src/main/java/org/mozilla/fenix/HomeActivity.kt
Changes:
| ... | ... | @@ -67,6 +67,8 @@ open class FenixApplication : LocaleAwareApplication(), Provider { |
| 67 | 67 |
|
| 68 | 68 |
private val logger = Logger("FenixApplication")
|
| 69 | 69 |
|
| 70 |
+ var terminating = false
|
|
| 71 |
+ |
|
| 70 | 72 |
open val components by lazy { Components(this) }
|
| 71 | 73 |
|
| 72 | 74 |
var visibilityLifecycleCallback: VisibilityLifecycleCallback? = null
|
| ... | ... | @@ -96,9 +98,19 @@ open class FenixApplication : LocaleAwareApplication(), Provider { |
| 96 | 98 |
setupInMainProcessOnly()
|
| 97 | 99 |
}
|
| 98 | 100 |
|
| 101 |
+ fun isTerminating() = terminating
|
|
| 102 |
+ |
|
| 103 |
+ fun terminate() {
|
|
| 104 |
+ onTerminate()
|
|
| 105 |
+ System.exit(0)
|
|
| 106 |
+ }
|
|
| 107 |
+ |
|
| 99 | 108 |
override fun onTerminate() {
|
| 109 |
+ terminating = true
|
|
| 110 |
+ |
|
| 100 | 111 |
super.onTerminate()
|
| 101 | 112 |
components.torController.stop()
|
| 113 |
+ components.torController.stopTor()
|
|
| 102 | 114 |
}
|
| 103 | 115 |
|
| 104 | 116 |
protected open fun initializeGlean() {
|
| ... | ... | @@ -131,6 +131,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { |
| 131 | 131 |
|
| 132 | 132 |
private var isToolbarInflated = false
|
| 133 | 133 |
|
| 134 |
+ private var isBeingRecreated = false
|
|
| 135 |
+ |
|
| 134 | 136 |
private val webExtensionPopupFeature by lazy {
|
| 135 | 137 |
WebExtensionPopupFeature(components.core.store, ::openPopup)
|
| 136 | 138 |
}
|
| ... | ... | @@ -362,10 +364,14 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { |
| 362 | 364 |
)
|
| 363 | 365 |
|
| 364 | 366 |
privateNotificationObserver?.stop()
|
| 365 |
- components.torController.stopTor()
|
|
| 366 |
- // Explicitly change our internal state because the status broadcast from tor-android-service may
|
|
| 367 |
- // arrive after we unregister the broadcast listener when the app is exiting.
|
|
| 368 |
- components.torController.setTorStopped()
|
|
| 367 |
+ if (!isBeingRecreated && !(application as FenixApplication).isTerminating()) {
|
|
| 368 |
+ // We assume the Activity is being destroyed because the user
|
|
| 369 |
+ // swiped away the app on the Recent screen. When this happens,
|
|
| 370 |
+ // we assume the user expects the entire Application is destroyed
|
|
| 371 |
+ // and not only the top Activity/Task. Therefore we kill the
|
|
| 372 |
+ // underlying Application, as well.
|
|
| 373 |
+ (application as FenixApplication).terminate()
|
|
| 374 |
+ }
|
|
| 369 | 375 |
}
|
| 370 | 376 |
|
| 371 | 377 |
override fun onConfigurationChanged(newConfig: Configuration) {
|
| ... | ... | @@ -385,6 +391,8 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { |
| 385 | 391 |
message = "recreate()"
|
| 386 | 392 |
)
|
| 387 | 393 |
|
| 394 |
+ isBeingRecreated = true
|
|
| 395 |
+ |
|
| 388 | 396 |
super.recreate()
|
| 389 | 397 |
}
|
| 390 | 398 |
|