From 8b841328d01cc6cc028a1f26727d0685f7748a7d Mon Sep 17 00:00:00 2001 From: Wu Ahan Date: Tue, 16 Nov 2021 09:03:00 +0000 Subject: Fix NPE while running UserSwitcherController The mRootView in UserSwitcherController is not initialized while running the test, fulfill the dependencies and initialize it before testing the function. Bug: 206333323 Test: atest com.android.systemui.statusbar.policy.UserSwitcherControllerTest Change-Id: I807ac2d1279b4f48c94e5d9ccd51f3a43d5884c5 --- .../statusbar/policy/UserSwitcherControllerTest.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/UserSwitcherControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/UserSwitcherControllerTest.kt index bdd189a9215b..724f841922ff 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/UserSwitcherControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/UserSwitcherControllerTest.kt @@ -31,6 +31,7 @@ import android.os.UserHandle import android.os.UserManager import android.testing.AndroidTestingRunner import android.testing.TestableLooper +import android.view.ThreadedRenderer import androidx.test.filters.SmallTest import com.android.internal.jank.InteractionJankMonitor import com.android.internal.logging.testing.UiEventLoggerFake @@ -63,6 +64,8 @@ import org.mockito.Mock import org.mockito.Mockito.`when` import org.mockito.Mockito.any import org.mockito.Mockito.anyString +import org.mockito.Mockito.doNothing +import org.mockito.Mockito.doReturn import org.mockito.Mockito.mock import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations @@ -90,6 +93,7 @@ class UserSwitcherControllerTest : SysuiTestCase() { @Mock private lateinit var latencyTracker: LatencyTracker @Mock private lateinit var dialogShower: UserSwitchDialogController.DialogShower @Mock private lateinit var notificationShadeWindowView: NotificationShadeWindowView + @Mock private lateinit var threadedRenderer: ThreadedRenderer private lateinit var testableLooper: TestableLooper private lateinit var uiBgExecutor: FakeExecutor private lateinit var uiEventLogger: UiEventLoggerFake @@ -146,6 +150,16 @@ class UserSwitcherControllerTest : SysuiTestCase() { dumpManager) userSwitcherController.mPauseRefreshUsers = true + // Since userSwitcherController involves InteractionJankMonitor. + // Let's fulfill the dependencies. + val mockedContext = mock(Context::class.java) + doReturn(mockedContext).`when`(notificationShadeWindowView).context + doReturn(true).`when`(notificationShadeWindowView).isAttachedToWindow + doNothing().`when`(threadedRenderer).addObserver(any()) + doNothing().`when`(threadedRenderer).removeObserver(any()) + doReturn(threadedRenderer).`when`(notificationShadeWindowView).threadedRenderer + userSwitcherController.init(notificationShadeWindowView) + picture = UserIcons.convertToBitmap(context.getDrawable(R.drawable.ic_avatar_user)) userSwitcherController.init(notificationShadeWindowView) } -- cgit v1.2.3-59-g8ed1b