Merge "Modify the privacy controller to be selectable in the next updateState()"
This commit is contained in:
@@ -255,6 +255,11 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
||||
* API call for refreshing the preferences in this fragment.
|
||||
*/
|
||||
public void refreshPreferences() {
|
||||
updatePreferenceStates();
|
||||
displayPreferenceControllers();
|
||||
}
|
||||
|
||||
protected void displayPreferenceControllers() {
|
||||
final PreferenceScreen screen = getPreferenceScreen();
|
||||
for (AbstractPreferenceController controller : mControllers) {
|
||||
// WifiDetailPreferenceController2 gets the callback WifiEntryCallback#onUpdated,
|
||||
|
@@ -69,12 +69,12 @@ public class WifiPrivacyPreferenceController2 extends BasePreferenceController i
|
||||
public void updateState(Preference preference) {
|
||||
final DropDownPreference dropDownPreference = (DropDownPreference) preference;
|
||||
final int randomizationLevel = getRandomizationValue();
|
||||
final boolean isSelectable = mWifiEntry.canSetPrivacy();
|
||||
preference.setSelectable(isSelectable);
|
||||
dropDownPreference.setValue(Integer.toString(randomizationLevel));
|
||||
updateSummary(dropDownPreference, randomizationLevel);
|
||||
|
||||
// Makes preference not selectable, when this is a ephemeral network.
|
||||
if (!mWifiEntry.canSetPrivacy()) {
|
||||
preference.setSelectable(false);
|
||||
if (isSelectable) {
|
||||
updateSummary(dropDownPreference, randomizationLevel);
|
||||
} else {
|
||||
dropDownPreference.setSummary(R.string.wifi_privacy_settings_ephemeral_summary);
|
||||
}
|
||||
}
|
||||
|
@@ -73,4 +73,46 @@ public class WifiNetworkDetailsFragment2Test {
|
||||
|
||||
verify(menuItem).setIcon(com.android.internal.R.drawable.ic_mode_edit);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void refreshPreferences_shouldUpdatePreferenceStates() {
|
||||
final FakeWifiNetworkDetailsFragment2 fakeFragment = new FakeWifiNetworkDetailsFragment2();
|
||||
|
||||
fakeFragment.refreshPreferences();
|
||||
|
||||
assertThat(fakeFragment.isUpdatePreferenceStatesCalled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void refreshPreferences_shouldDisplayPreferenceControllers() {
|
||||
final FakeWifiNetworkDetailsFragment2 fakeFragment = new FakeWifiNetworkDetailsFragment2();
|
||||
|
||||
fakeFragment.refreshPreferences();
|
||||
|
||||
assertThat(fakeFragment.isDisplayPreferenceControllersCalled()).isTrue();
|
||||
}
|
||||
|
||||
// Fake WifiNetworkDetailsFragment2 to verify the protected functions
|
||||
public class FakeWifiNetworkDetailsFragment2 extends WifiNetworkDetailsFragment2 {
|
||||
|
||||
private boolean mUpdatePreferenceStatesCalled;
|
||||
private boolean mDisplayPreferenceControllersCalled;
|
||||
|
||||
@Override
|
||||
protected void updatePreferenceStates() {
|
||||
mUpdatePreferenceStatesCalled = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void displayPreferenceControllers() {
|
||||
mDisplayPreferenceControllersCalled = true;
|
||||
}
|
||||
|
||||
public boolean isUpdatePreferenceStatesCalled() {
|
||||
return mUpdatePreferenceStatesCalled;
|
||||
}
|
||||
public boolean isDisplayPreferenceControllersCalled() {
|
||||
return mDisplayPreferenceControllersCalled;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -105,4 +105,38 @@ public class WifiPrivacyPreferenceController2Test {
|
||||
|
||||
assertThat(mDropDownPreference.isSelectable()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateState_canSetPrivacyInNextUpdate_shouldBeSelectable() {
|
||||
// Return false in WifiEntry#canSetPrivacy to make preference un-selectable first.
|
||||
when(mMockWifiEntry.canSetPrivacy()).thenReturn(false);
|
||||
|
||||
mPreferenceController.updateState(mDropDownPreference);
|
||||
|
||||
assertThat(mDropDownPreference.isSelectable()).isFalse();
|
||||
|
||||
// Return true in WifiEntry#canSetPrivacy to verify preference back to selectable.
|
||||
when(mMockWifiEntry.canSetPrivacy()).thenReturn(true);
|
||||
|
||||
mPreferenceController.updateState(mDropDownPreference);
|
||||
|
||||
assertThat(mDropDownPreference.isSelectable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateState_canNotSetPrivacyInNextUpdate_shouldNotSelectable() {
|
||||
// Return true in WifiEntry#canSetPrivacy to make preference selectable first.
|
||||
when(mMockWifiEntry.canSetPrivacy()).thenReturn(true);
|
||||
|
||||
mPreferenceController.updateState(mDropDownPreference);
|
||||
|
||||
assertThat(mDropDownPreference.isSelectable()).isTrue();
|
||||
|
||||
// Return false in WifiEntry#canSetPrivacy to verify preference back to un-selectable.
|
||||
when(mMockWifiEntry.canSetPrivacy()).thenReturn(false);
|
||||
|
||||
mPreferenceController.updateState(mDropDownPreference);
|
||||
|
||||
assertThat(mDropDownPreference.isSelectable()).isFalse();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user