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

Commit a2804f0c authored by Cecilia Hong's avatar Cecilia Hong Committed by Automerger Merge Worker
Browse files

Merge "Send AGSA the dismiss intent when user dismisses the recommendation...

Merge "Send AGSA the dismiss intent when user dismisses the recommendation card or the reactivated media player (during the recommendation active session)." into sc-qpr1-dev am: 72afe9d6 am: b36e5220 am: 17b21b56

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

Change-Id: I1d9c0f8340acad4242b0fd6fc2de7d90589a14df
parents b975e41c 17b21b56
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -75,6 +75,8 @@ public class MediaControlPanel {
    private static final String TAG = "MediaControlPanel";

    private static final float DISABLED_ALPHA = 0.38f;
    private static final String EXPORTED_SMARTSPACE_TRAMPOLINE_ACTIVITY_NAME = "com.google"
            + ".android.apps.gsa.staticplugins.opa.smartspace.ExportedSmartspaceTrampolineActivity";
    private static final String EXTRAS_SMARTSPACE_INTENT =
            "com.google.android.apps.gsa.smartspace.extra.SMARTSPACE_INTENT";
    private static final int MEDIA_RECOMMENDATION_ITEMS_PER_ROW = 3;
@@ -627,6 +629,22 @@ public class MediaControlPanel {
            closeGuts();
            mMediaDataManagerLazy.get().dismissSmartspaceRecommendation(
                    data.getTargetId(), MediaViewController.GUTS_ANIMATION_DURATION + 100L);

            Intent dismissIntent = data.getDismissIntent();
            if (dismissIntent == null) {
                Log.w(TAG, "Cannot create dismiss action click action: "
                        + "extras missing dismiss_intent.");
                return;
            }

            if (dismissIntent.getComponent() != null
                    && dismissIntent.getComponent().getClassName()
                    .equals(EXPORTED_SMARTSPACE_TRAMPOLINE_ACTIVITY_NAME)) {
                // Dismiss the card Smartspace data through Smartspace trampoline activity.
                mContext.startActivity(dismissIntent);
            } else {
                mContext.sendBroadcast(dismissIntent);
            }
        });

        mController = null;
+16 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.media

import android.content.Context
import android.os.SystemProperties
import android.util.Log
import com.android.internal.annotations.VisibleForTesting
@@ -32,6 +33,8 @@ import kotlin.collections.LinkedHashMap

private const val TAG = "MediaDataFilter"
private const val DEBUG = true
private const val EXPORTED_SMARTSPACE_TRAMPOLINE_ACTIVITY_NAME = ("com.google" +
        ".android.apps.gsa.staticplugins.opa.smartspace.ExportedSmartspaceTrampolineActivity")
private const val RESUMABLE_MEDIA_MAX_AGE_SECONDS_KEY = "resumable_media_max_age_seconds"

/**
@@ -51,6 +54,7 @@ internal val SMARTSPACE_MAX_AGE = SystemProperties
 * background users (e.g. timeouts).
 */
class MediaDataFilter @Inject constructor(
    private val context: Context,
    private val broadcastDispatcher: BroadcastDispatcher,
    private val mediaResumeListener: MediaResumeListener,
    private val lockscreenUserManager: NotificationLockscreenUserManager,
@@ -229,6 +233,18 @@ class MediaDataFilter @Inject constructor(
            mediaDataManager.setTimedOut(it, timedOut = true, forceUpdate = true)
        }
        if (smartspaceMediaData.isActive) {
            val dismissIntent = smartspaceMediaData.dismissIntent
            if (dismissIntent == null) {
                Log.w(TAG, "Cannot create dismiss action click action: " +
                        "extras missing dismiss_intent.")
            } else if (dismissIntent.getComponent() != null &&
                    dismissIntent.getComponent().getClassName()
                    == EXPORTED_SMARTSPACE_TRAMPOLINE_ACTIVITY_NAME) {
                // Dismiss the card Smartspace data through Smartspace trampoline activity.
                context.startActivity(dismissIntent)
            } else {
                context.sendBroadcast(dismissIntent)
            }
            smartspaceMediaData = EMPTY_SMARTSPACE_MEDIA_DATA.copy(
                targetId = smartspaceMediaData.targetId, isValid = smartspaceMediaData.isValid)
        }
+14 −3
Original line number Diff line number Diff line
@@ -76,12 +76,13 @@ private val ART_URIS = arrayOf(

private const val TAG = "MediaDataManager"
private const val DEBUG = true
private const val EXTRAS_SMARTSPACE_DISMISS_INTENT_KEY = "dismiss_intent"

private val LOADING = MediaData(-1, false, 0, null, null, null, null, null,
        emptyList(), emptyList(), "INVALID", null, null, null, true, null)
@VisibleForTesting
internal val EMPTY_SMARTSPACE_MEDIA_DATA = SmartspaceMediaData("INVALID", false, false,
    "INVALID", null, emptyList(), 0)
    "INVALID", null, emptyList(), null, 0)

fun isMediaNotification(sbn: StatusBarNotification): Boolean {
    if (!sbn.notification.hasMediaSession()) {
@@ -883,12 +884,22 @@ class MediaDataManager(
        target: SmartspaceTarget,
        isActive: Boolean
    ): SmartspaceMediaData {
        var dismissIntent: Intent? = null
        if (target.baseAction != null && target.baseAction.extras != null) {
            dismissIntent = target
                .baseAction
                .extras
                .getParcelable(EXTRAS_SMARTSPACE_DISMISS_INTENT_KEY) as Intent
        }
        packageName(target)?.let {
            return SmartspaceMediaData(target.smartspaceTargetId, isActive, true, it,
                target.baseAction, target.iconGrid, 0)
                target.baseAction, target.iconGrid,
                dismissIntent, 0)
        }
        return EMPTY_SMARTSPACE_MEDIA_DATA
            .copy(targetId = target.smartspaceTargetId, isActive = isActive)
            .copy(targetId = target.smartspaceTargetId,
                isActive = isActive,
                dismissIntent = dismissIntent)
    }

    private fun packageName(target: SmartspaceTarget): String? {
+5 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.media

import android.app.smartspace.SmartspaceAction
import android.content.Intent

/** State of a Smartspace media recommendations view. */
data class SmartspaceMediaData(
@@ -44,6 +45,10 @@ data class SmartspaceMediaData(
     * List of media recommendations.
     */
    val recommendations: List<SmartspaceAction>,
    /**
     * Intent for the user's initiated dismissal.
     */
    val dismissIntent: Intent?,
    /**
     * View's background color.
     */
+1 −1
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ class MediaDataFilterTest : SysuiTestCase() {
    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        mediaDataFilter = MediaDataFilter(broadcastDispatcher, mediaResumeListener,
        mediaDataFilter = MediaDataFilter(context, broadcastDispatcher, mediaResumeListener,
                lockscreenUserManager, executor, clock)
        mediaDataFilter.mediaDataManager = mediaDataManager
        mediaDataFilter.addListener(listener)
Loading