Merge "Add an overloading function for starting notes app on another user" into udc-dev
This commit is contained in:
@@ -27,6 +27,7 @@ import android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT
|
||||
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import android.os.UserHandle
|
||||
import android.os.UserManager
|
||||
import android.util.Log
|
||||
import androidx.annotation.VisibleForTesting
|
||||
@@ -99,6 +100,14 @@ constructor(
|
||||
*/
|
||||
fun showNoteTask(
|
||||
entryPoint: NoteTaskEntryPoint,
|
||||
) {
|
||||
showNoteTaskAsUser(entryPoint, userTracker.userHandle)
|
||||
}
|
||||
|
||||
/** A variant of [showNoteTask] which launches note task in the given [user]. */
|
||||
fun showNoteTaskAsUser(
|
||||
entryPoint: NoteTaskEntryPoint,
|
||||
user: UserHandle,
|
||||
) {
|
||||
if (!isEnabled) return
|
||||
|
||||
@@ -113,7 +122,7 @@ constructor(
|
||||
// note task when the screen is locked.
|
||||
if (
|
||||
isKeyguardLocked &&
|
||||
devicePolicyManager.areKeyguardShortcutsDisabled(userId = userTracker.userId)
|
||||
devicePolicyManager.areKeyguardShortcutsDisabled(userId = user.identifier)
|
||||
) {
|
||||
logDebug { "Enterprise policy disallows launching note app when the screen is locked." }
|
||||
return
|
||||
@@ -126,7 +135,7 @@ constructor(
|
||||
// TODO(b/266686199): We should handle when app not available. For now, we log.
|
||||
val intent = createNoteIntent(info)
|
||||
try {
|
||||
logDebug { "onShowNoteTask - start: $info" }
|
||||
logDebug { "onShowNoteTask - start: $info on user#${user.identifier}" }
|
||||
when (info.launchMode) {
|
||||
is NoteTaskLaunchMode.AppBubble -> {
|
||||
bubbles.showOrHideAppBubble(intent, userTracker.userHandle)
|
||||
@@ -134,7 +143,7 @@ constructor(
|
||||
logDebug { "onShowNoteTask - opened as app bubble: $info" }
|
||||
}
|
||||
is NoteTaskLaunchMode.Activity -> {
|
||||
context.startActivityAsUser(intent, userTracker.userHandle)
|
||||
context.startActivityAsUser(intent, user)
|
||||
eventLogger.logNoteTaskOpened(info)
|
||||
logDebug { "onShowNoteTask - opened as activity: $info" }
|
||||
}
|
||||
|
||||
@@ -215,6 +215,41 @@ internal class NoteTaskControllerTest : SysuiTestCase() {
|
||||
verifyZeroInteractions(bubbles)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun showNoteTaskWithUser_keyguardIsLocked_shouldStartActivityWithExpectedUserAndLogUiEvent() {
|
||||
val user10 = UserHandle.of(/* userId= */ 10)
|
||||
val expectedInfo =
|
||||
noteTaskInfo.copy(
|
||||
entryPoint = NoteTaskEntryPoint.TAIL_BUTTON,
|
||||
isKeyguardLocked = true,
|
||||
)
|
||||
whenever(keyguardManager.isKeyguardLocked).thenReturn(expectedInfo.isKeyguardLocked)
|
||||
whenever(resolver.resolveInfo(any(), any())).thenReturn(expectedInfo)
|
||||
|
||||
createNoteTaskController()
|
||||
.showNoteTaskAsUser(
|
||||
entryPoint = expectedInfo.entryPoint!!,
|
||||
user = user10,
|
||||
)
|
||||
|
||||
val intentCaptor = argumentCaptor<Intent>()
|
||||
val userCaptor = argumentCaptor<UserHandle>()
|
||||
verify(context).startActivityAsUser(capture(intentCaptor), capture(userCaptor))
|
||||
intentCaptor.value.let { intent ->
|
||||
assertThat(intent.action).isEqualTo(Intent.ACTION_CREATE_NOTE)
|
||||
assertThat(intent.`package`).isEqualTo(NOTES_PACKAGE_NAME)
|
||||
assertThat(intent.flags and FLAG_ACTIVITY_NEW_TASK).isEqualTo(FLAG_ACTIVITY_NEW_TASK)
|
||||
assertThat(intent.flags and FLAG_ACTIVITY_MULTIPLE_TASK)
|
||||
.isEqualTo(FLAG_ACTIVITY_MULTIPLE_TASK)
|
||||
assertThat(intent.flags and FLAG_ACTIVITY_NEW_DOCUMENT)
|
||||
.isEqualTo(FLAG_ACTIVITY_NEW_DOCUMENT)
|
||||
assertThat(intent.getBooleanExtra(Intent.EXTRA_USE_STYLUS_MODE, false)).isTrue()
|
||||
}
|
||||
assertThat(userCaptor.value).isEqualTo(user10)
|
||||
verify(eventLogger).logNoteTaskOpened(expectedInfo)
|
||||
verifyZeroInteractions(bubbles)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun showNoteTask_keyguardIsUnlocked_shouldStartBubblesWithoutLoggingUiEvent() {
|
||||
val expectedInfo =
|
||||
|
||||
Reference in New Issue
Block a user