Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5a8384c authored by Caitlin Cassidy's avatar Caitlin Cassidy Committed by Automerger Merge Worker
Browse files

Merge "[Ongoing Call Chip] Add a click handler using ActivityLaunchAnimator."...

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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14141685

Change-Id: Ia35c72ac8de94d69039ec9c911b8decc8ee87fc5
parents efab3767 69d0455b
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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;
    }
+16 −3
Original line number Diff line number Diff line
@@ -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; " +
+4 −1
Original line number Diff line number Diff line
@@ -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)