summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-02-05 01:18:13 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-02-05 01:18:13 +0000
commit5cfff6d16730549f1a9d2731280b6cc7fbcc3c92 (patch)
tree1844f181ca9feb6ab8ae03e382ca57874b1e215b
parent89847c902d1612f352a65b0f8e28d7d5bc44ef38 (diff)
parent82799339e69dc55d9eaf205bbc8bff08afdce32a (diff)
downloadSettings-android12-qpr1-d-release.tar.gz
Merge cherrypicks of [16144999] into sc-qpr1-d-release.android-12.0.0_r32android12-qpr1-d-release
Change-Id: I8071a8cbbbb2344ee0ae501a6f2dbbeedf36e2b1
-rw-r--r--src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java14
-rw-r--r--src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java19
-rw-r--r--tests/robotests/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceControllerTest.java26
3 files changed, 55 insertions, 4 deletions
diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
index ce980e0bda2..c8eb488df09 100644
--- a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
@@ -19,12 +19,15 @@ import android.app.settings.SettingsEnums;
import android.content.Context;
import android.net.Uri;
import android.provider.DeviceConfig;
+import android.text.TextUtils;
+import android.util.Log;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.SettingsUIDeviceConfig;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.password.PasswordUtils;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.slices.SlicePreferenceController;
import com.android.settingslib.search.SearchIndexable;
@@ -33,6 +36,9 @@ import com.android.settingslib.search.SearchIndexable;
public class ConnectedDeviceDashboardFragment extends DashboardFragment {
private static final String TAG = "ConnectedDeviceFrag";
+ private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
+ private static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui";
+ private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@VisibleForTesting
static final String KEY_CONNECTED_DEVICES = "connected_device_list";
@@ -64,12 +70,20 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
super.onAttach(context);
final boolean nearbyEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
SettingsUIDeviceConfig.BT_NEAR_BY_SUGGESTION_ENABLED, true);
+ String callingAppPackageName = PasswordUtils.getCallingAppPackageName(
+ getActivity().getActivityToken());
+ if (DEBUG) {
+ Log.d(TAG, "onAttach() calling package name is : " + callingAppPackageName);
+ }
use(AvailableMediaDeviceGroupController.class).init(this);
use(ConnectedDeviceGroupController.class).init(this);
use(PreviouslyConnectedDevicePreferenceController.class).init(this);
use(SlicePreferenceController.class).setSliceUri(nearbyEnabled
? Uri.parse(getString(R.string.config_nearby_devices_slice_uri))
: null);
+ use(DiscoverableFooterPreferenceController.class).setAlwaysDiscoverable(
+ TextUtils.equals(SETTINGS_PACKAGE_NAME, callingAppPackageName)
+ || TextUtils.equals(SYSTEMUI_PACKAGE_NAME, callingAppPackageName));
}
/**
diff --git a/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java b/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java
index 91368bf2a81..5df31bc63a4 100644
--- a/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java
@@ -52,6 +52,7 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
private BluetoothAdapter mBluetoothAdapter;
private AlwaysDiscoverable mAlwaysDiscoverable;
private FooterPreference mPreference;
+ private boolean mIsAlwaysDiscoverable;
public DiscoverableFooterPreferenceController(Context context, String key) {
super(context, key);
@@ -84,7 +85,9 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
}
mContext.registerReceiver(mBluetoothChangedReceiver,
new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
- mAlwaysDiscoverable.start();
+ if (mIsAlwaysDiscoverable) {
+ mAlwaysDiscoverable.start();
+ }
updateFooterPreferenceTitle(mBluetoothAdapter.getState());
}
@@ -94,7 +97,19 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
return;
}
mContext.unregisterReceiver(mBluetoothChangedReceiver);
- mAlwaysDiscoverable.stop();
+ if (mIsAlwaysDiscoverable) {
+ mAlwaysDiscoverable.stop();
+ }
+ }
+
+ /**
+ * Set whether the device can be discovered. By default the value will be {@code false}.
+ *
+ * @param isAlwaysDiscoverable {@code true} if the device can be discovered,
+ * otherwise {@code false}
+ */
+ public void setAlwaysDiscoverable(boolean isAlwaysDiscoverable) {
+ mIsAlwaysDiscoverable = isAlwaysDiscoverable;
}
private void updateFooterPreferenceTitle(int bluetoothState) {
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceControllerTest.java
index 065b924138c..6510f198de1 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceControllerTest.java
@@ -18,6 +18,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;
@@ -104,7 +105,8 @@ public class DiscoverableFooterPreferenceControllerTest {
}
@Test
- public void onStart_shouldRegisterBluetoothChanged() {
+ public void onStart_setAlwaysDiscoverableAsTrue_shouldRegisterBluetoothChanged() {
+ mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
mDiscoverableFooterPreferenceController.onStart();
assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
@@ -112,7 +114,8 @@ public class DiscoverableFooterPreferenceControllerTest {
}
@Test
- public void onStop_shouldUnregisterBluetoothChanged() {
+ public void onStop_setAlwaysDiscoverableAsTrue_shouldUnregisterBluetoothChanged() {
+ mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
mDiscoverableFooterPreferenceController.onStart();
mDiscoverableFooterPreferenceController.onStop();
@@ -121,6 +124,25 @@ public class DiscoverableFooterPreferenceControllerTest {
}
@Test
+ public void onStart_setAlwaysDiscoverableAsFalse_shouldNotRegisterBluetoothChanged() {
+ mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
+ mDiscoverableFooterPreferenceController.onStart();
+
+ assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
+ verify(mAlwaysDiscoverable, never()).start();
+ }
+
+ @Test
+ public void onStop_setAlwaysDiscoverableAsFalse_shouldNotUnregisterBluetoothChanged() {
+ mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
+ mDiscoverableFooterPreferenceController.onStart();
+ mDiscoverableFooterPreferenceController.onStop();
+
+ assertThat(getRegisteredBroadcastReceivers()).doesNotContain(mBluetoothChangedReceiver);
+ verify(mAlwaysDiscoverable, never()).stop();
+ }
+
+ @Test
public void onBluetoothStateChanged_bluetoothOn_updateTitle() {
BluetoothAdapter.getDefaultAdapter().setName(DEVICE_NAME);
sendBluetoothStateChangedIntent(BluetoothAdapter.STATE_ON);