From 4e2160904dbe3a592eed345047232a46b20887fc Mon Sep 17 00:00:00 2001 From: hughchen Date: Mon, 21 May 2018 20:46:57 +0800 Subject: [PATCH] When BT is off hide rename preference * Hide the preference when BT is off, shown preference when BT is on. Bug: 78247352 Test: make -j40 RunSettingsRoboTests ROBOTEST_FILTER=BluetoothDeviceNamePreferenceControllerTest Change-Id: Id1e11c7b546d7ac5bc8606e8645d07d77f2b522f --- ...uetoothDeviceNamePreferenceController.java | 16 +++++++----- ...toothDeviceRenamePreferenceController.java | 3 ++- ...othDeviceNamePreferenceControllerTest.java | 2 +- ...hDeviceRenamePreferenceControllerTest.java | 26 +++++++++++++++---- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceController.java b/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceController.java index 8827a710aa9..032ae4c9c80 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceController.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceController.java @@ -50,7 +50,7 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr @VisibleForTesting Preference mPreference; private LocalBluetoothManager mLocalManager; - private LocalBluetoothAdapter mLocalAdapter; + protected LocalBluetoothAdapter mLocalAdapter; public BluetoothDeviceNamePreferenceController(Context context, Lifecycle lifecycle) { this(context, (LocalBluetoothAdapter) null); @@ -88,8 +88,10 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr @Override public void onStart() { - mContext.registerReceiver(mReceiver, - new IntentFilter(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)); + final IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED); + intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); + mContext.registerReceiver(mReceiver, intentFilter); } @Override @@ -109,7 +111,7 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr @Override public void updateState(Preference preference) { - updateDeviceName(preference); + updatePreferenceState(preference); } @Override @@ -145,7 +147,7 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr * * @param preference to set the summary for */ - protected void updateDeviceName(final Preference preference) { + protected void updatePreferenceState(final Preference preference) { preference.setSelectable(false); preference.setSummary(getSummary()); } @@ -166,8 +168,10 @@ public class BluetoothDeviceNamePreferenceController extends BasePreferenceContr if (TextUtils.equals(action, BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) { if (mPreference != null && mLocalAdapter != null && mLocalAdapter.isEnabled()) { - updateDeviceName(mPreference); + updatePreferenceState(mPreference); } + } else if (TextUtils.equals(action, BluetoothAdapter.ACTION_STATE_CHANGED)) { + updatePreferenceState(mPreference); } } }; diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceController.java b/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceController.java index 262d6b3bf09..dfdaf5648f0 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceController.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceController.java @@ -67,8 +67,9 @@ public class BluetoothDeviceRenamePreferenceController extends } @Override - protected void updateDeviceName(final Preference preference) { + protected void updatePreferenceState(final Preference preference) { preference.setSummary(getSummary()); + preference.setVisible(mLocalAdapter != null && mLocalAdapter.isEnabled()); } @Override diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java index f5070ef34a4..f34969ddd88 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java @@ -68,7 +68,7 @@ public class BluetoothDeviceNamePreferenceControllerTest { @Test public void testUpdateDeviceName_showSummaryWithDeviceName() { - mController.updateDeviceName(mPreference); + mController.updatePreferenceState(mPreference); final CharSequence summary = mPreference.getSummary(); diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceControllerTest.java index 6ba85937277..f815a82cfae 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceControllerTest.java @@ -70,11 +70,13 @@ public class BluetoothDeviceRenamePreferenceControllerTest { mController = spy(new BluetoothDeviceRenamePreferenceController( mContext, PREF_KEY, mFragment, mLocalAdapter)); doReturn(DEVICE_NAME).when(mController).getDeviceName(); + when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); + mController.displayPreference(mScreen); } @Test public void testUpdateDeviceName_showSummaryWithDeviceName() { - mController.updateDeviceName(mPreference); + mController.updatePreferenceState(mPreference); final CharSequence summary = mPreference.getSummary(); @@ -93,10 +95,24 @@ public class BluetoothDeviceRenamePreferenceControllerTest { @Test public void displayPreference_shouldFindPreferenceWithMatchingPrefKey() { - when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); - - mController.displayPreference(mScreen); - assertThat(mController.mPreference.getKey()).isEqualTo(mController.getPreferenceKey()); } + + @Test + public void updatePreferenceState_whenBTisOnPreferenceShouldBeVisible() { + when(mLocalAdapter.isEnabled()).thenReturn(true); + + mController.updatePreferenceState(mPreference); + + assertThat(mPreference.isVisible()).isTrue(); + } + + @Test + public void updatePreferenceState_whenBTisOffPreferenceShouldBeHide() { + when(mLocalAdapter.isEnabled()).thenReturn(false); + + mController.updatePreferenceState(mPreference); + + assertThat(mPreference.isVisible()).isFalse(); + } }