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

Commit 1516fd86 authored by Michael Mikhail's avatar Michael Mikhail Committed by Android (Google) Code Review
Browse files

Merge "Unregister callback in background thread." into main

parents 3fe749f9 cea5ce82
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.service.notification.StatusBarNotification;
import android.util.Log;

import com.android.systemui.Dumpable;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.controls.domain.pipeline.MediaDataManager;
import com.android.systemui.media.controls.shared.model.MediaData;
@@ -47,6 +48,7 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.Executor;

/**
 * Handles tasks and state related to media notifications. For example, there is a 'current' media
@@ -75,6 +77,8 @@ public class NotificationMediaManager implements Dumpable {
    private final Context mContext;
    private final ArrayList<MediaListener> mMediaListeners;

    private final Executor mBackgroundExecutor;

    protected NotificationPresenter mPresenter;
    private MediaController mMediaController;
    private String mMediaNotificationKey;
@@ -115,13 +119,15 @@ public class NotificationMediaManager implements Dumpable {
            NotifPipeline notifPipeline,
            NotifCollection notifCollection,
            MediaDataManager mediaDataManager,
            DumpManager dumpManager) {
            DumpManager dumpManager,
            @Background Executor backgroundExecutor) {
        mContext = context;
        mMediaListeners = new ArrayList<>();
        mVisibilityProvider = visibilityProvider;
        mMediaDataManager = mediaDataManager;
        mNotifPipeline = notifPipeline;
        mNotifCollection = notifCollection;
        mBackgroundExecutor = backgroundExecutor;

        setupNotifPipeline();

@@ -381,9 +387,11 @@ public class NotificationMediaManager implements Dumpable {
                Log.v(TAG, "DEBUG_MEDIA: Disconnecting from old controller: "
                        + mMediaController.getPackageName());
            }
            mBackgroundExecutor.execute(() -> {
                mMediaController.unregisterCallback(mMediaListener);
        }
                mMediaController = null;
            });
        }
    }

    public interface MediaListener {
+7 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.animation.AnimationFeatureFlags;
import com.android.systemui.animation.DialogTransitionAnimator;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dump.DumpHandler;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.controls.domain.pipeline.MediaDataManager;
@@ -68,6 +69,8 @@ import dagger.Provides;
import dagger.multibindings.ClassKey;
import dagger.multibindings.IntoMap;

import java.util.concurrent.Executor;

import javax.inject.Provider;

/**
@@ -94,14 +97,16 @@ public interface CentralSurfacesDependenciesModule {
            NotifPipeline notifPipeline,
            NotifCollection notifCollection,
            MediaDataManager mediaDataManager,
            DumpManager dumpManager) {
            DumpManager dumpManager,
            @Background Executor backgroundExecutor) {
        return new NotificationMediaManager(
                context,
                visibilityProvider,
                notifPipeline,
                notifCollection,
                mediaDataManager,
                dumpManager);
                dumpManager,
                backgroundExecutor);
    }

    /** */