Avoid onDestroy content in test
Even though `Activity.finish` is called by the @Rule before the teardown happens, `onDestroy` may not be called synchronously and therefore may happen after mocks have been nulled. To prevent NPE, do not call `BroadcastDispatcher.unregisterReceiver` in the test. Test: atest com.android.systemui.controls Fixes: 280020640 Change-Id: I992befeac6588116da03ed7869730f5b14b4e091
This commit is contained in:
@@ -158,6 +158,10 @@ open class ControlsActivity @Inject constructor(
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
|
||||
unregisterReceiver()
|
||||
}
|
||||
|
||||
protected open fun unregisterReceiver() {
|
||||
broadcastDispatcher.unregisterReceiver(broadcastReceiver)
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ import com.android.systemui.controls.settings.ControlsSettingsDialogManager
|
||||
import com.android.systemui.flags.FeatureFlags
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController
|
||||
|
||||
// IMPORTANT: onDestroy may be called outside of bounds of the test. That means that the mocks
|
||||
// may have been nulled before onDestroy happens.
|
||||
class TestableControlsActivity(
|
||||
uiController: ControlsUiController,
|
||||
broadcastDispatcher: BroadcastDispatcher,
|
||||
@@ -37,4 +39,8 @@ class TestableControlsActivity(
|
||||
featureFlags,
|
||||
controlsSettingsDialogManager,
|
||||
keyguardStateController
|
||||
)
|
||||
) {
|
||||
override fun unregisterReceiver() {
|
||||
// Do nothing. This will be called in `onDestroy`
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user