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

Commit 2bc324b5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic...

Merge changes from topic "presubmit-am-1ab3ffc180ef400a970f85dbe14238c7-sc-dev" into sc-mainline-prod

* changes:
  [automerge] [Ongoing Call] Don't call #getIntent to avoid a security vulnerability. 2p: b029b005
  [Ongoing Call] Don't call #getIntent to avoid a security vulnerability.
parents 631b1f2b e981fd10
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ import android.app.IActivityManager
import android.app.IUidObserver
import android.app.Notification
import android.app.Notification.CallStyle.CALL_TYPE_ONGOING
import android.content.Intent
import android.app.PendingIntent
import android.util.Log
import android.view.View
import android.widget.Chronometer
@@ -86,7 +86,7 @@ class OngoingCallController @Inject constructor(
                val newOngoingCallInfo = CallNotificationInfo(
                        entry.sbn.key,
                        entry.sbn.notification.`when`,
                        entry.sbn.notification.contentIntent?.intent,
                        entry.sbn.notification.contentIntent,
                        entry.sbn.uid,
                        entry.sbn.notification.extras.getInt(
                                Notification.EXTRA_CALL_TYPE, -1) == CALL_TYPE_ONGOING
@@ -188,7 +188,6 @@ class OngoingCallController @Inject constructor(
                    logger.logChipClicked()
                    activityStarter.postStartActivityDismissingKeyguard(
                            intent,
                            0,
                            ActivityLaunchAnimator.Controller.fromView(
                                    backgroundView,
                                    InteractionJankMonitor.CUJ_STATUS_BAR_APP_LAUNCH_FROM_CALL_CHIP)
@@ -277,7 +276,7 @@ class OngoingCallController @Inject constructor(
    private data class CallNotificationInfo(
        val key: String,
        val callStartTime: Long,
        val intent: Intent?,
        val intent: PendingIntent?,
        val uid: Int,
        /** True if the call is currently ongoing (as opposed to incoming, screening, etc.). */
        val isOngoing: Boolean
+13 −2
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.app.IUidObserver
import android.app.Notification
import android.app.PendingIntent
import android.app.Person
import android.content.Intent
import android.service.notification.NotificationListenerService.REASON_USER_STOPPED
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
@@ -401,6 +400,19 @@ class OngoingCallControllerTest : SysuiTestCase() {
                .isEqualTo(OngoingCallLogger.OngoingCallEvents.ONGOING_CALL_CLICKED.id)
    }

    /** Regression test for b/212467440. */
    @Test
    fun chipClicked_activityStarterTriggeredWithUnmodifiedIntent() {
        val notifEntry = createOngoingCallNotifEntry()
        val pendingIntent = notifEntry.sbn.notification.contentIntent
        notifCollectionListener.onEntryUpdated(notifEntry)

        chipView.performClick()

        // Ensure that the sysui didn't modify the notification's intent -- see b/212467440.
        verify(mockActivityStarter).postStartActivityDismissingKeyguard(eq(pendingIntent), any())
    }

    @Test
    fun notifyChipVisibilityChanged_visibleEventLogged() {
        controller.notifyChipVisibilityChanged(true)
@@ -428,7 +440,6 @@ class OngoingCallControllerTest : SysuiTestCase() {
            notificationEntryBuilder.modifyNotification(context).setContentIntent(null)
        } else {
            val contentIntent = mock(PendingIntent::class.java)
            `when`(contentIntent.intent).thenReturn(mock(Intent::class.java))
            notificationEntryBuilder.modifyNotification(context).setContentIntent(contentIntent)
        }