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

Commit a028a8a4 authored by Santiago Seifert's avatar Santiago Seifert
Browse files

Refactor ServiceConnection impl into inner class

As a prep change to move post that call into the handler.

Bug: b/338940163
Test: mp droid
Flag: EXEMPT refactor
Change-Id: If9bcb9f65892e2e10a2cdda5d771bd4f18e7ab08
parent 07d8de08
Loading
Loading
Loading
Loading
+32 −15
Original line number Diff line number Diff line
@@ -53,11 +53,8 @@ import java.util.List;
import java.util.Objects;
import java.util.Set;

/**
 * Maintains a connection to a particular {@link MediaRoute2ProviderService}.
 */
final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
        implements ServiceConnection {
/** Maintains a connection to a particular {@link MediaRoute2ProviderService}. */
final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider {
    private static final String TAG = "MR2ProviderSvcProxy";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);

@@ -65,6 +62,7 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
    private final int mUserId;
    private final Handler mHandler;
    private final boolean mIsSelfScanOnlyProvider;
    private final ServiceConnection mServiceConnection = new ServiceConnectionImpl();

    // Connection state
    private boolean mRunning;
@@ -259,7 +257,10 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
            Intent service = new Intent(MediaRoute2ProviderService.SERVICE_INTERFACE);
            service.setComponent(mComponentName);
            try {
                mBound = mContext.bindServiceAsUser(service, this,
                mBound =
                        mContext.bindServiceAsUser(
                                service,
                                mServiceConnection,
                                Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE,
                                new UserHandle(mUserId));
                if (!mBound && DEBUG) {
@@ -281,12 +282,11 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider

            mBound = false;
            disconnect();
            mContext.unbindService(this);
            mContext.unbindService(mServiceConnection);
        }
    }

    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
    private void onServiceConnectedInternal(IBinder service) {
        if (DEBUG) {
            Slog.d(TAG, this + ": Connected");
        }
@@ -310,16 +310,14 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
        }
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
    private void onServiceDisconnectedInternal() {
        if (DEBUG) {
            Slog.d(TAG, this + ": Service disconnected");
        }
        disconnect();
    }

    @Override
    public void onBindingDied(ComponentName name) {
    private void onBindingDiedInternal(ComponentName name) {
        unbind();
        if (Flags.enablePreventionOfKeepAliveRouteProviders()) {
            Slog.w(
@@ -536,6 +534,25 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
                mConnectionReady);
    }

    // All methods in this class are called on the main thread.
    private final class ServiceConnectionImpl implements ServiceConnection {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            onServiceConnectedInternal(service);
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            onServiceDisconnectedInternal();
        }

        @Override
        public void onBindingDied(ComponentName name) {
            onBindingDiedInternal(name);
        }
    }

    private final class Connection implements DeathRecipient {
        private final IMediaRoute2ProviderService mService;
        private final ServiceCallbackStub mCallbackStub;