Merge "Launch app intent after unlock" into tm-dev am: ff1ae8716f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18455155 Change-Id: I0689832d136f55fa9a127754d8c6645d02332e00 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -261,7 +261,7 @@ class ControlActionCoordinatorImpl @Inject constructor(
|
||||
taskViewFactory.get().create(context, uiExecutor, {
|
||||
dialog = DetailDialog(
|
||||
activityContext, broadcastSender,
|
||||
it, pendingIntent, cvh
|
||||
it, pendingIntent, cvh, keyguardStateController, activityStarter
|
||||
).also {
|
||||
it.setOnDismissListener { _ -> dialog = null }
|
||||
it.show()
|
||||
|
||||
@@ -34,6 +34,8 @@ import android.widget.ImageView
|
||||
import com.android.internal.policy.ScreenDecorationsUtils
|
||||
import com.android.systemui.R
|
||||
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
|
||||
|
||||
/**
|
||||
@@ -46,7 +48,9 @@ class DetailDialog(
|
||||
val broadcastSender: BroadcastSender,
|
||||
val taskView: TaskView,
|
||||
val pendingIntent: PendingIntent,
|
||||
val cvh: ControlViewHolder
|
||||
val cvh: ControlViewHolder,
|
||||
val keyguardStateController: KeyguardStateController,
|
||||
val activityStarter: ActivityStarter
|
||||
) : Dialog(
|
||||
activityContext,
|
||||
R.style.Theme_SystemUI_Dialog_Control_DetailPanel
|
||||
@@ -145,12 +149,25 @@ class DetailDialog(
|
||||
|
||||
requireViewById<ImageView>(R.id.control_detail_open_in_app).apply {
|
||||
setOnClickListener { v: View ->
|
||||
// Remove the task explicitly, since onRelease() callback will be executed after
|
||||
// startActivity() below is called.
|
||||
removeDetailTask()
|
||||
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 com.android.systemui.SysuiTestCase
|
||||
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 org.junit.Before
|
||||
import org.junit.Test
|
||||
@@ -45,6 +47,10 @@ class DetailDialogTest : SysuiTestCase() {
|
||||
private lateinit var controlViewHolder: ControlViewHolder
|
||||
@Mock
|
||||
private lateinit var pendingIntent: PendingIntent
|
||||
@Mock
|
||||
private lateinit var keyguardStateController: KeyguardStateController
|
||||
@Mock
|
||||
private lateinit var activityStarter: ActivityStarter
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
@@ -69,7 +75,9 @@ class DetailDialogTest : SysuiTestCase() {
|
||||
broadcastSender,
|
||||
taskView,
|
||||
pendingIntent,
|
||||
controlViewHolder
|
||||
controlViewHolder,
|
||||
keyguardStateController,
|
||||
activityStarter
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user