Merge "Launch app intent after unlock" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ff1ae8716f
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
broadcastSender.closeSystemDialogs()
|
|
||||||
pendingIntent.send()
|
val action = ActivityStarter.OnDismissAction {
|
||||||
|
// Remove the task explicitly, since onRelease() callback will be executed after
|
||||||
|
// startActivity() below is called.
|
||||||
|
broadcastSender.closeSystemDialogs()
|
||||||
|
pendingIntent.send()
|
||||||
|
false
|
||||||
|
}
|
||||||
|
if (keyguardStateController.isUnlocked()) {
|
||||||
|
action.onDismiss()
|
||||||
|
} else {
|
||||||
|
activityStarter.dismissKeyguardThenExecute(
|
||||||
|
action,
|
||||||
|
null /* cancel */,
|
||||||
|
true /* afterKeyguardGone */
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user