Merge "Launch app intent after unlock" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-05-20 01:02:45 +00:00
committed by Android (Google) Code Review
3 changed files with 32 additions and 7 deletions

View File

@@ -261,7 +261,7 @@ class ControlActionCoordinatorImpl @Inject constructor(
taskViewFactory.get().create(context, uiExecutor, { taskViewFactory.get().create(context, uiExecutor, {
dialog = DetailDialog( dialog = DetailDialog(
activityContext, broadcastSender, activityContext, broadcastSender,
it, pendingIntent, cvh it, pendingIntent, cvh, keyguardStateController, activityStarter
).also { ).also {
it.setOnDismissListener { _ -> dialog = null } it.setOnDismissListener { _ -> dialog = null }
it.show() it.show()

View File

@@ -34,6 +34,8 @@ import android.widget.ImageView
import com.android.internal.policy.ScreenDecorationsUtils import com.android.internal.policy.ScreenDecorationsUtils
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.broadcast.BroadcastSender import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.wm.shell.TaskView import com.android.wm.shell.TaskView
/** /**
@@ -46,7 +48,9 @@ class DetailDialog(
val broadcastSender: BroadcastSender, val broadcastSender: BroadcastSender,
val taskView: TaskView, val taskView: TaskView,
val pendingIntent: PendingIntent, val pendingIntent: PendingIntent,
val cvh: ControlViewHolder val cvh: ControlViewHolder,
val keyguardStateController: KeyguardStateController,
val activityStarter: ActivityStarter
) : Dialog( ) : Dialog(
activityContext, activityContext,
R.style.Theme_SystemUI_Dialog_Control_DetailPanel R.style.Theme_SystemUI_Dialog_Control_DetailPanel
@@ -145,12 +149,25 @@ class DetailDialog(
requireViewById<ImageView>(R.id.control_detail_open_in_app).apply { requireViewById<ImageView>(R.id.control_detail_open_in_app).apply {
setOnClickListener { v: View -> setOnClickListener { v: View ->
// Remove the task explicitly, since onRelease() callback will be executed after
// startActivity() below is called.
removeDetailTask() removeDetailTask()
dismiss() dismiss()
val action = ActivityStarter.OnDismissAction {
// Remove the task explicitly, since onRelease() callback will be executed after
// startActivity() below is called.
broadcastSender.closeSystemDialogs() broadcastSender.closeSystemDialogs()
pendingIntent.send() pendingIntent.send()
false
}
if (keyguardStateController.isUnlocked()) {
action.onDismiss()
} else {
activityStarter.dismissKeyguardThenExecute(
action,
null /* cancel */,
true /* afterKeyguardGone */
)
}
} }
} }

View File

@@ -22,6 +22,8 @@ import android.testing.TestableLooper
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.broadcast.BroadcastSender import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.wm.shell.TaskView import com.android.wm.shell.TaskView
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
@@ -45,6 +47,10 @@ class DetailDialogTest : SysuiTestCase() {
private lateinit var controlViewHolder: ControlViewHolder private lateinit var controlViewHolder: ControlViewHolder
@Mock @Mock
private lateinit var pendingIntent: PendingIntent private lateinit var pendingIntent: PendingIntent
@Mock
private lateinit var keyguardStateController: KeyguardStateController
@Mock
private lateinit var activityStarter: ActivityStarter
@Before @Before
fun setUp() { fun setUp() {
@@ -69,7 +75,9 @@ class DetailDialogTest : SysuiTestCase() {
broadcastSender, broadcastSender,
taskView, taskView,
pendingIntent, pendingIntent,
controlViewHolder controlViewHolder,
keyguardStateController,
activityStarter
) )
} }
} }