RESTRICT AUTOMERGE Fix make Bluetooth discoverable without additional permission

- Only enable device can be discoverable when the user launch
  "Connected Devices settings" through settings and systemui

Bug: 194695497
Test: make -j42 RunSettingsRoboTests and use test apk to manually test
to verify the device is not discoversable when open "Connected settings"
through test apk.

Change-Id: Ia04ab759b737acf30b782f5c5831dd59f25fb257
(cherry picked from commit d3abbb9821)
This commit is contained in:
Hugh Chen
2021-10-28 06:21:37 +00:00
parent aebca7f35b
commit f8cd68c6e2
3 changed files with 65 additions and 6 deletions

View File

@@ -17,6 +17,7 @@ package com.android.settings.connecteddevice;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -117,14 +118,17 @@ public class DiscoverableFooterPreferenceControllerTest {
}
@Test
public void onResume() {
public void onResume_setAlwaysDiscoverableAsTrue_shouldRegisterBluetoothChanged() {
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
mDiscoverableFooterPreferenceController.onResume();
assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
verify(mAlwaysDiscoverable).start();
}
@Test
public void onPause() {
public void onPause_setAlwaysDiscoverableAsTrue_shouldUnregisterBluetoothChanged() {
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
mDiscoverableFooterPreferenceController.onResume();
mDiscoverableFooterPreferenceController.onPause();
@@ -132,6 +136,25 @@ public class DiscoverableFooterPreferenceControllerTest {
verify(mAlwaysDiscoverable).stop();
}
@Test
public void onResume_setAlwaysDiscoverableAsFalse_shouldNotRegisterBluetoothChanged() {
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
mDiscoverableFooterPreferenceController.onResume();
assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
verify(mAlwaysDiscoverable, never()).start();
}
@Test
public void onPause_setAlwaysDiscoverableAsFalse_shouldNotUnregisterBluetoothChanged() {
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
mDiscoverableFooterPreferenceController.onResume();
mDiscoverableFooterPreferenceController.onPause();
assertThat(getRegisteredBroadcastReceivers()).doesNotContain(mBluetoothChangedReceiver);
verify(mAlwaysDiscoverable, never()).stop();
}
@Test
public void onBluetoothStateChanged_bluetoothOn_updateTitle() {
ShadowLocalBluetoothAdapter.setName(DEVICE_NAME);