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

Commit b36e5220 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

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

Change-Id: Id61dee95069461cc66c81f63e9446df171b80a91
parents 7057ba49 72afe9d6
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