diff options
author | 2024-06-14 17:01:43 +0000 | |
---|---|---|
committer | 2024-06-14 17:01:43 +0000 | |
commit | 98cbbae537632142d0b53c290014268c365de2c0 (patch) | |
tree | 992f42e86195ebbb3af65c7fa5b8c8a3cc785ce6 /packages/CompanionDeviceManager/src | |
parent | 5cc2247e292e20d4a6758d953182d2a978fa000b (diff) |
Fix CDM discovery timeout
CDM has a regression preventing activity launches after timeout
due to DiscoveryState potentially remaining in FINISHED_TIMEOUT.
We must ensure activities are cancelled when timeout occurs while discovery is in progress.
Flag: EXEMPT bugfix
Bug: 342470917
Test: CTS
Change-Id: I531676195e674e2ce52632e5bae6c93fc1d5e1d0
Diffstat (limited to 'packages/CompanionDeviceManager/src')
2 files changed, 12 insertions, 5 deletions
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java index f98908cf2d56..41ce13a05765 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java @@ -27,6 +27,8 @@ import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTE import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.DiscoveryState; import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.DiscoveryState.FINISHED_TIMEOUT; +import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.LOCK; +import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.sDiscoveryStarted; import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_ICONS; import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_NAMES; import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_PERMISSIONS; @@ -326,8 +328,12 @@ public class CompanionAssociationActivity extends FragmentActivity implements private void onDiscoveryStateChanged(DiscoveryState newState) { if (newState == FINISHED_TIMEOUT && CompanionDeviceDiscoveryService.getScanResult().getValue().isEmpty()) { - cancel(/* discoveryTimeOut */ true, - /* userRejected */ false, /* internalError */ false); + synchronized (LOCK) { + if (sDiscoveryStarted) { + cancel(/* discoveryTimeOut */ true, + /* userRejected */ false, /* internalError */ false); + } + } } } diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java index e809433a1261..b015f0ac4532 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDiscoveryService.java @@ -90,9 +90,6 @@ public class CompanionDeviceDiscoveryService extends Service { new MutableLiveData<>(Collections.emptyList()); private static MutableLiveData<DiscoveryState> sStateLiveData = new MutableLiveData<>(DiscoveryState.NOT_STARTED); - private static final Object LOCK = new Object(); - @GuardedBy("LOCK") - private static boolean sDiscoveryStarted = false; private BluetoothManager mBtManager; private BluetoothAdapter mBtAdapter; @@ -109,6 +106,10 @@ public class CompanionDeviceDiscoveryService extends Service { private boolean mStopAfterFirstMatch; + static final Object LOCK = new Object(); + @GuardedBy("LOCK") + static boolean sDiscoveryStarted = false; + /** * A state enum for devices' discovery. */ |