Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a65f509f authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

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
parent c51e2525
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -158,6 +158,10 @@ open class ControlsActivity @Inject constructor(
    override fun onDestroy() {
        super.onDestroy()

        unregisterReceiver()
    }

    protected open fun unregisterReceiver() {
        broadcastDispatcher.unregisterReceiver(broadcastReceiver)
    }

+7 −1
Original line number Diff line number Diff line
@@ -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`
    }
}