From 292f4149314c9fb91613da78314af94016d1c895 Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Mon, 27 Sep 2021 09:52:01 -0400 Subject: [PATCH] Smartspace - Don't create session ahead of init After the device is setup, if the smartspace component is not available/initialized, don't attempt to start a session. Fixes: 199986217 Test: atest LockscreenSmartspaceControllerTest Change-Id: I36d6f75b37cc5f5274b1cea3a35338f6da424a20 (cherry picked from commit 076aad912e50ba688bac4cdb595be00274632099) (cherry picked from commit 1c127572032ed4ef8ebb6face60814d391e35364) --- .../lockscreen/LockscreenSmartspaceController.kt | 3 +-- .../LockscreenSmartspaceControllerTest.kt | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt index 26f6460a4aa59..bacb85ae89df3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt @@ -24,7 +24,6 @@ import android.app.smartspace.SmartspaceTarget import android.content.ContentResolver import android.content.Context import android.content.Intent -import android.content.pm.UserInfo import android.database.ContentObserver import android.net.Uri import android.os.Handler @@ -203,7 +202,7 @@ class LockscreenSmartspaceController @Inject constructor( } private fun connectSession() { - if (plugin == null || session != null) { + if (plugin == null || session != null || smartspaceViews.isEmpty()) { return } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt index b13c4d93627f3..ff91978c54bbc 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt @@ -448,6 +448,20 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() { verify(smartspaceView2).registerDataProvider(plugin) } + @Test + fun testConnectAttemptBeforeInitializationShouldNotCreateSession() { + // GIVEN an uninitalized smartspaceView + // WHEN the device is provisioned + `when`(deviceProvisionedController.isDeviceProvisioned()).thenReturn(true) + `when`(deviceProvisionedController.isCurrentUserSetup()).thenReturn(true) + deviceProvisionedListener.onDeviceProvisionedChanged() + + // THEN no calls to createSmartspaceSession should occur + verify(smartspaceManager, never()).createSmartspaceSession(any()) + // THEN no listeners should be registered + verify(configurationController, never()).addCallback(any()) + } + private fun connectSession() { val view = controller.buildAndConnectView(fakeParent) smartspaceView = view as SmartspaceView