summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt7
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt14
2 files changed, 13 insertions, 8 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 ce60c859e9bc..a0d5eef027bc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt
@@ -107,7 +107,12 @@ class LockscreenSmartspaceController @Inject constructor(
}
private fun buildView(parent: ViewGroup) {
- if (plugin == null || this::view.isInitialized) {
+ if (plugin == null) {
+ return
+ }
+ if (this::view.isInitialized) {
+ // Due to some oddities with a singleton smartspace view, allow reparenting
+ (view.getParent() as ViewGroup?)?.removeView(view)
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 5366858231f0..9b5c33d64eb9 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
@@ -16,7 +16,6 @@
package com.android.systemui.statusbar.lockscreen
-
import android.app.smartspace.SmartspaceManager
import android.app.smartspace.SmartspaceSession
import android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener
@@ -415,8 +414,9 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
clearInvocations(smartspaceManager)
clearInvocations(plugin)
- // WHEN we're asked to connect a second time
- controller.buildAndConnectView(fakeParent)
+ // WHEN we're asked to connect a second time and add to a parent
+ val view = controller.buildAndConnectView(fakeParent)
+ fakeParent.addView(view)
// THEN the existing view and session are reused
verify(smartspaceManager, never()).createSmartspaceSession(any())
@@ -424,8 +424,8 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
assertEquals(fakeSmartspaceView, controller.view)
}
- private fun connectSession(): View {
- val view = controller.buildAndConnectView(fakeParent)
+ private fun connectSession() {
+ controller.buildAndConnectView(fakeParent)
verify(smartspaceSession)
.addOnTargetsAvailableListener(any(), capture(sessionListenerCaptor))
@@ -454,7 +454,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
verify(fakeSmartspaceView).setDozeAmount(0.5f)
clearInvocations(fakeSmartspaceView)
- return view
+ fakeParent.addView(fakeSmartspaceView)
}
private fun setActiveUser(userHandle: UserHandle) {
@@ -515,4 +515,4 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
}
private const val PRIVATE_LOCKSCREEN_SETTING =
- Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS \ No newline at end of file
+ Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS