summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Santiago Seifert <aquilescanta@google.com> 2024-06-11 10:16:31 +0000
committer Santiago Seifert <aquilescanta@google.com> 2024-06-11 10:36:24 +0000
commita028a8a41f79aed291bf810c6c3c2363a71264a1 (patch)
tree1fca5da6ca226188b818454f4d79ade3252373f2
parent07d8de08875b5149baf2fd9987ab1f528c901ab8 (diff)
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
-rw-r--r--services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java47
1 files changed, 32 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
index 71cbcb91100f..31706063eb34 100644
--- a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
+++ b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
@@ -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,9 +257,12 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
Intent service = new Intent(MediaRoute2ProviderService.SERVICE_INTERFACE);
service.setComponent(mComponentName);
try {
- mBound = mContext.bindServiceAsUser(service, this,
- Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE,
- new UserHandle(mUserId));
+ mBound =
+ mContext.bindServiceAsUser(
+ service,
+ mServiceConnection,
+ Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE,
+ new UserHandle(mUserId));
if (!mBound && DEBUG) {
Slog.d(TAG, this + ": Bind failed");
}
@@ -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;