Send last discovery preference to provider service

To ensure discovery preference is delivered to the provider service,
it delivers the discovery preference whenever the connection is
established.
Without this CL, discovery preference may not be delivered to the
service when rebindIfDisconnected is called in the middle of connecting.

Bug: 151128724
Test: cts test and atest mediaroutertest
Change-Id: I723298f108a0a7d3217c997be362e43764313bae
This commit is contained in:
Kyunglyul Hyun
2020-05-18 18:29:11 +09:00
parent a4403c2d4a
commit f2b19c8b1f

View File

@@ -60,7 +60,7 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
private Connection mActiveConnection;
private boolean mConnectionReady;
private RouteDiscoveryPreference mPendingDiscoveryPreference = null;
private RouteDiscoveryPreference mLastDiscoveryPreference = null;
MediaRoute2ProviderServiceProxy(@NonNull Context context, @NonNull ComponentName componentName,
int userId) {
@@ -98,11 +98,10 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
@Override
public void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference) {
mLastDiscoveryPreference = discoveryPreference;
if (mConnectionReady) {
mActiveConnection.updateDiscoveryPreference(discoveryPreference);
updateBinding();
} else {
mPendingDiscoveryPreference = discoveryPreference;
}
}
@@ -277,9 +276,8 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider
private void onConnectionReady(Connection connection) {
if (mActiveConnection == connection) {
mConnectionReady = true;
if (mPendingDiscoveryPreference != null) {
updateDiscoveryPreference(mPendingDiscoveryPreference);
mPendingDiscoveryPreference = null;
if (mLastDiscoveryPreference != null) {
updateDiscoveryPreference(mLastDiscoveryPreference);
}
}
}