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

Commit b4f33e80 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 9446458 from ab90ee56 to tm-qpr2-release

Change-Id: Ia5e5757c87f079fbfd3141ad1a78175551b199d1
parents fef67ba1 ab90ee56
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ interface ISession {
    ISessionController getController();
    void setFlags(int flags);
    void setActive(boolean active);
    void setMediaButtonReceiver(in PendingIntent mbr, String sessionPackageName);
    void setMediaButtonReceiver(in PendingIntent mbr);
    void setMediaButtonBroadcastReceiver(in ComponentName broadcastReceiver);
    void setLaunchPendingIntent(in PendingIntent pi);
    void destroySession();
+1 −1
Original line number Diff line number Diff line
@@ -286,7 +286,7 @@ public final class MediaSession {
    @Deprecated
    public void setMediaButtonReceiver(@Nullable PendingIntent mbr) {
        try {
            mBinder.setMediaButtonReceiver(mbr, mContext.getPackageName());
            mBinder.setMediaButtonReceiver(mbr);
        } catch (RemoteException e) {
            Log.wtf(TAG, "Failure in setMediaButtonReceiver.", e);
        }
+3 −0
Original line number Diff line number Diff line
@@ -413,6 +413,9 @@ object Flags {
    val WM_ENABLE_PREDICTIVE_BACK_SYSUI =
        unreleasedFlag(1204, "persist.wm.debug.predictive_back_sysui_enable", teamfood = true)

    // TODO(b/255697805): Tracking Bug
    @JvmField val TRACKPAD_GESTURE_BACK = unreleasedFlag(1205, "trackpad_gesture_back", teamfood = false)

    // 1300 - screenshots
    // TODO(b/254512719): Tracking Bug
    @JvmField val SCREENSHOT_REQUEST_PROCESSOR = releasedFlag(1300, "screenshot_request_processor")
+1081 −0

File added.

Preview size limit exceeded, changes collapsed.

+36 −25
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.server.media;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.BroadcastOptions;
import android.app.PendingIntent;
import android.content.ComponentName;
@@ -37,6 +38,7 @@ import android.view.KeyEvent;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Collections;
import java.util.List;

/**
@@ -102,15 +104,19 @@ final class MediaButtonReceiverHolder {
    }

    /**
     * Creates a new instance.
     * Creates a new instance from a {@link PendingIntent}.
     *
     * <p>This method assumes the session package name has been validated and effectively belongs to
     * the media session's owner.
     *
     * @param context context
     * @param userId userId
     * @param pendingIntent pending intent
     * @return Can be {@code null} if pending intent was null.
     * @param pendingIntent pending intent that will receive media button events
     * @param sessionPackageName package name of media session owner
     * @return {@link MediaButtonReceiverHolder} instance or {@code null} if pending intent was
     *     null.
     */
    public static MediaButtonReceiverHolder create(Context context, int userId,
            PendingIntent pendingIntent, String sessionPackageName) {
    public static MediaButtonReceiverHolder create(
            int userId, @Nullable PendingIntent pendingIntent, String sessionPackageName) {
        if (pendingIntent == null) {
            return null;
        }
@@ -312,7 +318,7 @@ final class MediaButtonReceiverHolder {
    }

    private static ComponentName getComponentName(PendingIntent pendingIntent, int componentType) {
        List<ResolveInfo> resolveInfos = null;
        List<ResolveInfo> resolveInfos = Collections.emptyList();
        switch (componentType) {
            case COMPONENT_TYPE_ACTIVITY:
                resolveInfos = pendingIntent.queryIntentComponents(
@@ -330,32 +336,37 @@ final class MediaButtonReceiverHolder {
                        PACKAGE_MANAGER_COMMON_FLAGS | PackageManager.GET_RECEIVERS);
                break;
        }
        if (resolveInfos != null && !resolveInfos.isEmpty()) {
            return createComponentName(resolveInfos.get(0));

        for (ResolveInfo resolveInfo : resolveInfos) {
            ComponentInfo componentInfo = getComponentInfo(resolveInfo);
            if (componentInfo != null && TextUtils.equals(componentInfo.packageName,
                    pendingIntent.getCreatorPackage())
                    && componentInfo.packageName != null && componentInfo.name != null) {
                return new ComponentName(componentInfo.packageName, componentInfo.name);
            }
        return null;
        }

    private static ComponentName createComponentName(ResolveInfo resolveInfo) {
        if (resolveInfo == null) {
        return null;
    }
        ComponentInfo componentInfo;

    /**
     * Retrieves the {@link ComponentInfo} from a {@link ResolveInfo} instance. Similar to {@link
     * ResolveInfo#getComponentInfo()}, but returns {@code null} if this {@link ResolveInfo} points
     * to a content provider.
     *
     * @param resolveInfo Where to extract the {@link ComponentInfo} from.
     * @return Either a non-null {@link ResolveInfo#activityInfo} or {@link
     *     ResolveInfo#serviceInfo}. Otherwise {@code null} if {@link ResolveInfo#providerInfo} is
     *     not {@code null}.
     */
    private static ComponentInfo getComponentInfo(@NonNull ResolveInfo resolveInfo) {
        // Code borrowed from ResolveInfo#getComponentInfo().
        if (resolveInfo.activityInfo != null) {
            componentInfo = resolveInfo.activityInfo;
            return resolveInfo.activityInfo;
        } else if (resolveInfo.serviceInfo != null) {
            componentInfo = resolveInfo.serviceInfo;
            return resolveInfo.serviceInfo;
        } else {
            // We're not interested in content provider.
            return null;
        }
        // Code borrowed from ComponentInfo#getComponentName().
        try {
            return new ComponentName(componentInfo.packageName, componentInfo.name);
        } catch (IllegalArgumentException | NullPointerException e) {
            // This may be happen if resolveActivity() end up with matching multiple activities.
            // see PackageManager#resolveActivity().
            // We're not interested in content providers.
            return null;
        }
    }
Loading