From: hughchen Date: Mon, 21 May 2018 12:46:57 +0000 (+0800) Subject: When BT is off hide rename preference X-Git-Tag: android-x86-9.0-r1~30^2~7^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4e2160904dbe3a592eed345047232a46b20887fc;p=android-x86%2Fpackages-apps-Settings.git 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 --- diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceController.java b/src/com/android/settings/bluetooth/BluetoothDeviceNamePreferenceController.java index 8827a710aa..032ae4c9c8 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 262d6b3bf0..dfdaf5648f 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 f5070ef34a..f34969ddd8 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 6ba8593727..f815a82cfa 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); + assertThat(mController.mPreference.getKey()).isEqualTo(mController.getPreferenceKey()); + } - mController.displayPreference(mScreen); + @Test + public void updatePreferenceState_whenBTisOnPreferenceShouldBeVisible() { + when(mLocalAdapter.isEnabled()).thenReturn(true); - assertThat(mController.mPreference.getKey()).isEqualTo(mController.getPreferenceKey()); + mController.updatePreferenceState(mPreference); + + assertThat(mPreference.isVisible()).isTrue(); + } + + @Test + public void updatePreferenceState_whenBTisOffPreferenceShouldBeHide() { + when(mLocalAdapter.isEnabled()).thenReturn(false); + + mController.updatePreferenceState(mPreference); + + assertThat(mPreference.isVisible()).isFalse(); } }