postAtFrontOfQueue() in ICompanionDeviceService.Stub

postAtFrontOfQueue() instead of post()-ing at the back of the queue
in ICompanionDeviceService.Stub to prevent "posted" methods are invoked
*before* onUnbind()/onDestroy().

Add missing @Override annotation to onDispatchMessage method.

Clean up dispatchMessage() which is not a part of
ICompanionDeviceService interface.

Make the Stub implementation class private.

Bug: 198485833
Bug: 200940347
Test: atest CtsCompanionDeviceManagerCoreTestCases
Test: atest CtsCompanionDeviceManagerUiAutomationTestCases
Test: atest CtsOsTestCases:CompanionDeviceManagerTest
Change-Id: Ic44e7968b1cef42355631151aa6958fe1ec7dd6e
This commit is contained in:
Sergey Nikolaienkov
2022-01-10 08:58:39 +01:00
parent 2ffcd6dc42
commit a4d4186ffb

View File

@@ -28,9 +28,6 @@ import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
import com.android.internal.util.function.pooled.PooledLambda;
import java.util.Objects;
/**
@@ -185,31 +182,24 @@ public abstract class CompanionDeviceService extends Service {
public void onBindCompanionDeviceService(@NonNull Intent intent) {
}
class Stub extends ICompanionDeviceService.Stub {
private class Stub extends ICompanionDeviceService.Stub {
final Handler mMainHandler = Handler.getMain();
final CompanionDeviceService mService = CompanionDeviceService.this;
@Override
public void onDeviceAppeared(AssociationInfo associationInfo) {
Handler.getMain().post(
() -> CompanionDeviceService.this.onDeviceAppeared(associationInfo));
mMainHandler.postAtFrontOfQueue(() -> mService.onDeviceAppeared(associationInfo));
}
@Override
public void onDeviceDisappeared(AssociationInfo associationInfo) {
Handler.getMain().post(
() -> CompanionDeviceService.this.onDeviceDisappeared(associationInfo));
mMainHandler.postAtFrontOfQueue(() -> mService.onDeviceDisappeared(associationInfo));
}
@Override
public void onDispatchMessage(int messageId, int associationId, @NonNull byte[] message) {
Handler.getMain().sendMessage(PooledLambda.obtainMessage(
CompanionDeviceService::onDispatchMessage,
CompanionDeviceService.this, messageId, associationId, message));
}
public final void dispatchMessage(int messageId, int associationId,
@NonNull byte[] message) {
Handler.getMain().sendMessage(PooledLambda.obtainMessage(
CompanionDeviceService::dispatchMessage,
CompanionDeviceService.this, messageId, associationId, message));
mMainHandler.postAtFrontOfQueue(
() -> mService.onDispatchMessage(messageId, associationId, message));
}
}
}