From 2744ef92b14fefee08be06936c4462c817d67364 Mon Sep 17 00:00:00 2001 From: Iván Budnik Date: Fri, 23 Feb 2024 16:53:55 +0000 Subject: Integrate requestScan() to RouterInfoMediaManager Bug: 281072508 Test: Manual. Change-Id: I1d8e93be02b0f5883bc34cbaf5ff28de9bca1e30 --- .../settingslib/media/RouterInfoMediaManager.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java index 0f08605a50d0..df03167cd0f9 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java @@ -41,6 +41,7 @@ import java.util.HashMap; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -64,6 +65,8 @@ public final class RouterInfoMediaManager extends InfoMediaManager { refreshDevices(); }; + private final AtomicReference mScanToken = new AtomicReference<>(); + // TODO (b/321969740): Plumb target UserHandle between UMO and RouterInfoMediaManager. /* package */ RouterInfoMediaManager( Context context, @@ -101,12 +104,24 @@ public final class RouterInfoMediaManager extends InfoMediaManager { mExecutor, mRouteListingPreferenceCallback); mRouter.registerTransferCallback(mExecutor, mTransferCallback); mRouter.registerControllerCallback(mExecutor, mControllerCallback); - mRouter.startScan(); + if (Flags.enableScreenOffScanning()) { + MediaRouter2.ScanRequest request = new MediaRouter2.ScanRequest.Builder().build(); + mScanToken.compareAndSet(null, mRouter.requestScan(request)); + } else { + mRouter.startScan(); + } } @Override public void stopScan() { - mRouter.stopScan(); + if (Flags.enableScreenOffScanning()) { + MediaRouter2.ScanToken token = mScanToken.getAndSet(null); + if (token != null) { + mRouter.cancelScanRequest(token); + } + } else { + mRouter.stopScan(); + } mRouter.unregisterControllerCallback(mControllerCallback); mRouter.unregisterTransferCallback(mTransferCallback); mRouter.unregisterRouteListingPreferenceUpdatedCallback(mRouteListingPreferenceCallback); -- cgit v1.2.3-59-g8ed1b