Skip to content
Snippets Groups Projects
Commit a4ac6b82 authored by Iván Budnik's avatar Iván Budnik
Browse files

Split callback registration and route scanning in InfoMediaManager

This is prework for allowing clients to receive routing updates from the
platform without having to scan for routes. For example,
MediaDeviceManager populates the device chip information in the UMO,
which needs to know the current connected device, but has no use for
scanning.

The root limitation we are trying to address is that
InfoMediaManager couples callback registration to route scanning, so it
forces all clients interested in receiving routing state updates to also
scan needlessly.

This is a non-functional change.

Test: atest com.android.settingslib.media
Bug: 332515672
Change-Id: I2d238cc8761c5429458ae33dc0fd034c6cf11e9e
parent 4e98b884
No related branches found
No related tags found
No related merge requests found
......@@ -174,6 +174,7 @@ public abstract class InfoMediaManager {
public void startScan() {
mMediaDevices.clear();
registerRouter();
startScanOnRouter();
updateRouteListingPreference();
refreshDevices();
......@@ -188,10 +189,19 @@ public abstract class InfoMediaManager {
}
}
public abstract void stopScan();
public final void stopScan() {
stopScanOnRouter();
unregisterRouter();
}
protected abstract void stopScanOnRouter();
protected abstract void startScanOnRouter();
protected abstract void registerRouter();
protected abstract void unregisterRouter();
protected abstract void transferToRoute(@NonNull MediaRoute2Info route);
protected abstract void selectRoute(
......
......@@ -62,21 +62,29 @@ public class ManagerInfoMediaManager extends InfoMediaManager {
@Override
protected void startScanOnRouter() {
if (!mIsScanning) {
mRouterManager.registerCallback(mExecutor, mMediaRouterCallback);
mRouterManager.registerScanRequest();
mIsScanning = true;
}
}
@Override
public void stopScan() {
protected void registerRouter() {
mRouterManager.registerCallback(mExecutor, mMediaRouterCallback);
}
@Override
protected void stopScanOnRouter() {
if (mIsScanning) {
mRouterManager.unregisterCallback(mMediaRouterCallback);
mRouterManager.unregisterScanRequest();
mIsScanning = false;
}
}
@Override
protected void unregisterRouter() {
mRouterManager.unregisterCallback(mMediaRouterCallback);
}
@Override
protected void transferToRoute(@NonNull MediaRoute2Info route) {
// TODO: b/279555229 - provide real user handle of a caller.
......
......@@ -63,12 +63,22 @@ import java.util.List;
}
@Override
public void stopScan() {
protected void startScanOnRouter() {
// Do nothing.
}
@Override
protected void startScanOnRouter() {
protected void registerRouter() {
// Do nothing.
}
@Override
protected void stopScanOnRouter() {
// Do nothing.
}
@Override
protected void unregisterRouter() {
// Do nothing.
}
......
......@@ -97,11 +97,6 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
@Override
protected void startScanOnRouter() {
mRouter.registerRouteCallback(mExecutor, mRouteCallback, RouteDiscoveryPreference.EMPTY);
mRouter.registerRouteListingPreferenceUpdatedCallback(
mExecutor, mRouteListingPreferenceCallback);
mRouter.registerTransferCallback(mExecutor, mTransferCallback);
mRouter.registerControllerCallback(mExecutor, mControllerCallback);
if (Flags.enableScreenOffScanning()) {
MediaRouter2.ScanRequest request = new MediaRouter2.ScanRequest.Builder().build();
mScanToken.compareAndSet(null, mRouter.requestScan(request));
......@@ -111,7 +106,16 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
}
@Override
public void stopScan() {
protected void registerRouter() {
mRouter.registerRouteCallback(mExecutor, mRouteCallback, RouteDiscoveryPreference.EMPTY);
mRouter.registerRouteListingPreferenceUpdatedCallback(
mExecutor, mRouteListingPreferenceCallback);
mRouter.registerTransferCallback(mExecutor, mTransferCallback);
mRouter.registerControllerCallback(mExecutor, mControllerCallback);
}
@Override
protected void stopScanOnRouter() {
if (Flags.enableScreenOffScanning()) {
MediaRouter2.ScanToken token = mScanToken.getAndSet(null);
if (token != null) {
......@@ -120,6 +124,10 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
} else {
mRouter.stopScan();
}
}
@Override
protected void unregisterRouter() {
mRouter.unregisterControllerCallback(mControllerCallback);
mRouter.unregisterTransferCallback(mTransferCallback);
mRouter.unregisterRouteListingPreferenceUpdatedCallback(mRouteListingPreferenceCallback);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment