Makes camera config dep. lazy.
This was needed because of a Dagger-related crash when querying the content provider while a secondary user is selected. I don't understand why it was happening, but this fixes it and is a safe fix. Also formats the file using `ktfmt`. Bug: 254333599 Test: when signed in with a secondary user and querying the quick affordance content provider from the wallpaper picker experience, we no longer see a crash. Change-Id: Ie195b21934179576051371181560c2263284b98c
This commit is contained in:
@@ -26,14 +26,17 @@ import com.android.systemui.common.shared.model.ContentDescription
|
||||
import com.android.systemui.common.shared.model.Icon
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Application
|
||||
import dagger.Lazy
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import javax.inject.Inject
|
||||
|
||||
@SysUISingleton
|
||||
class CameraQuickAffordanceConfig @Inject constructor(
|
||||
@Application private val context: Context,
|
||||
private val cameraGestureHelper: CameraGestureHelper,
|
||||
class CameraQuickAffordanceConfig
|
||||
@Inject
|
||||
constructor(
|
||||
@Application private val context: Context,
|
||||
private val cameraGestureHelper: Lazy<CameraGestureHelper>,
|
||||
) : KeyguardQuickAffordanceConfig {
|
||||
|
||||
override val key: String
|
||||
@@ -46,17 +49,23 @@ class CameraQuickAffordanceConfig @Inject constructor(
|
||||
get() = com.android.internal.R.drawable.perm_group_camera
|
||||
|
||||
override val lockScreenState: Flow<KeyguardQuickAffordanceConfig.LockScreenState>
|
||||
get() = flowOf(
|
||||
KeyguardQuickAffordanceConfig.LockScreenState.Visible(
|
||||
icon = Icon.Resource(
|
||||
get() =
|
||||
flowOf(
|
||||
KeyguardQuickAffordanceConfig.LockScreenState.Visible(
|
||||
icon =
|
||||
Icon.Resource(
|
||||
com.android.internal.R.drawable.perm_group_camera,
|
||||
ContentDescription.Resource(R.string.accessibility_camera_button)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
override fun onTriggered(expandable: Expandable?): KeyguardQuickAffordanceConfig.OnTriggeredResult {
|
||||
cameraGestureHelper.launchCamera(StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE)
|
||||
override fun onTriggered(
|
||||
expandable: Expandable?
|
||||
): KeyguardQuickAffordanceConfig.OnTriggeredResult {
|
||||
cameraGestureHelper
|
||||
.get()
|
||||
.launchCamera(StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE)
|
||||
return KeyguardQuickAffordanceConfig.OnTriggeredResult.Handled
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,25 +37,29 @@ class CameraQuickAffordanceConfigTest : SysuiTestCase() {
|
||||
|
||||
@Mock private lateinit var cameraGestureHelper: CameraGestureHelper
|
||||
@Mock private lateinit var context: Context
|
||||
|
||||
private lateinit var underTest: CameraQuickAffordanceConfig
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
underTest = CameraQuickAffordanceConfig(
|
||||
|
||||
underTest =
|
||||
CameraQuickAffordanceConfig(
|
||||
context,
|
||||
cameraGestureHelper,
|
||||
)
|
||||
) {
|
||||
cameraGestureHelper
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `affordance triggered -- camera launch called`() {
|
||||
//when
|
||||
// When
|
||||
val result = underTest.onTriggered(null)
|
||||
|
||||
//then
|
||||
// Then
|
||||
verify(cameraGestureHelper)
|
||||
.launchCamera(StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE)
|
||||
.launchCamera(StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE)
|
||||
assertEquals(KeyguardQuickAffordanceConfig.OnTriggeredResult.Handled, result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user