Merge "[Ongoing Call Chip] Add a click handler using ActivityLaunchAnimator." into sc-dev

This commit is contained in:
Caitlin Cassidy
2021-04-19 14:50:38 +00:00
committed by Android (Google) Code Review
3 changed files with 25 additions and 6 deletions

View File

@@ -24,6 +24,7 @@ import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.media.MediaDataManager;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.ActionClickLogger;
import com.android.systemui.statusbar.CommandQueue;
@@ -237,9 +238,11 @@ public interface StatusBarDependenciesModule {
static OngoingCallController provideOngoingCallController(
CommonNotifCollection notifCollection,
FeatureFlags featureFlags,
SystemClock systemClock) {
SystemClock systemClock,
ActivityStarter activityStarter) {
OngoingCallController ongoingCallController =
new OngoingCallController(notifCollection, featureFlags, systemClock);
new OngoingCallController(
notifCollection, featureFlags, systemClock, activityStarter);
ongoingCallController.init();
return ongoingCallController;
}

View File

@@ -22,7 +22,9 @@ import android.util.Log
import android.view.ViewGroup
import android.widget.Chronometer
import com.android.systemui.R
import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.FeatureFlags
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
@@ -38,7 +40,8 @@ import javax.inject.Inject
class OngoingCallController @Inject constructor(
private val notifCollection: CommonNotifCollection,
private val featureFlags: FeatureFlags,
private val systemClock: SystemClock
private val systemClock: SystemClock,
private val activityStarter: ActivityStarter
) : CallbackController<OngoingCallListener> {
var hasOngoingCall = false
@@ -50,14 +53,24 @@ class OngoingCallController @Inject constructor(
private val notifListener = object : NotifCollectionListener {
override fun onEntryUpdated(entry: NotificationEntry) {
if (isOngoingCallNotification(entry)) {
val timeView = chipView?.findViewById<Chronometer>(R.id.ongoing_call_chip_time)
if (timeView != null) {
val currentChipView = chipView
val timeView =
currentChipView?.findViewById<Chronometer>(R.id.ongoing_call_chip_time)
if (currentChipView != null && timeView != null) {
hasOngoingCall = true
val callStartTime = entry.sbn.notification.`when`
timeView.base = callStartTime -
System.currentTimeMillis() +
systemClock.elapsedRealtime()
timeView.start()
currentChipView.setOnClickListener {
activityStarter.postStartActivityDismissingKeyguard(
entry.sbn.notification.contentIntent.intent, 0,
ActivityLaunchAnimator.Controller.fromView(it))
}
mListeners.forEach { l -> l.onOngoingCallStarted(animate = true) }
} else if (DEBUG) {
Log.w(TAG, "Ongoing call chip view could not be found; " +

View File

@@ -27,6 +27,7 @@ import android.view.LayoutInflater
import android.widget.LinearLayout
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.FeatureFlags
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
@@ -55,6 +56,7 @@ class OngoingCallControllerTest : SysuiTestCase() {
private lateinit var notifCollectionListener: NotifCollectionListener
@Mock private lateinit var mockOngoingCallListener: OngoingCallListener
@Mock private lateinit var mockActivityStarter: ActivityStarter
private lateinit var chipView: LinearLayout
@@ -71,7 +73,8 @@ class OngoingCallControllerTest : SysuiTestCase() {
`when`(featureFlags.isOngoingCallStatusBarChipEnabled).thenReturn(true)
val notificationCollection = mock(CommonNotifCollection::class.java)
controller = OngoingCallController(notificationCollection, featureFlags, FakeSystemClock())
controller = OngoingCallController(
notificationCollection, featureFlags, FakeSystemClock(), mockActivityStarter)
controller.init()
controller.addCallback(mockOngoingCallListener)
controller.setChipView(chipView)