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 076aad912e)
(cherry picked from commit 1c12757203)
This commit is contained in:
Matt Pietal
2021-09-27 09:52:01 -04:00
parent 21223c9bb8
commit 292f414931
2 changed files with 15 additions and 2 deletions

View File

@@ -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
}

View File

@@ -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