Modify the privacy controller to be selectable in the next updateState()
Listen WifiEntry#onUpdated() to update preference states will be modify in next CLs. Bug: 170148009 Test: make RunSettingsRoboTests ROBOTEST_FILTER=WifiPrivacyPreferenceController2Test Change-Id: I5acf096970431a0b093dd7e0968f30c1959e3b7f
This commit is contained in:
@@ -255,6 +255,11 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
|
|||||||
* API call for refreshing the preferences in this fragment.
|
* API call for refreshing the preferences in this fragment.
|
||||||
*/
|
*/
|
||||||
public void refreshPreferences() {
|
public void refreshPreferences() {
|
||||||
|
updatePreferenceStates();
|
||||||
|
displayPreferenceControllers();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void displayPreferenceControllers() {
|
||||||
final PreferenceScreen screen = getPreferenceScreen();
|
final PreferenceScreen screen = getPreferenceScreen();
|
||||||
for (AbstractPreferenceController controller : mControllers) {
|
for (AbstractPreferenceController controller : mControllers) {
|
||||||
// WifiDetailPreferenceController2 gets the callback WifiEntryCallback#onUpdated,
|
// WifiDetailPreferenceController2 gets the callback WifiEntryCallback#onUpdated,
|
||||||
|
@@ -69,12 +69,12 @@ public class WifiPrivacyPreferenceController2 extends BasePreferenceController i
|
|||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
final DropDownPreference dropDownPreference = (DropDownPreference) preference;
|
final DropDownPreference dropDownPreference = (DropDownPreference) preference;
|
||||||
final int randomizationLevel = getRandomizationValue();
|
final int randomizationLevel = getRandomizationValue();
|
||||||
|
final boolean isSelectable = mWifiEntry.canSetPrivacy();
|
||||||
|
preference.setSelectable(isSelectable);
|
||||||
dropDownPreference.setValue(Integer.toString(randomizationLevel));
|
dropDownPreference.setValue(Integer.toString(randomizationLevel));
|
||||||
updateSummary(dropDownPreference, randomizationLevel);
|
if (isSelectable) {
|
||||||
|
updateSummary(dropDownPreference, randomizationLevel);
|
||||||
// Makes preference not selectable, when this is a ephemeral network.
|
} else {
|
||||||
if (!mWifiEntry.canSetPrivacy()) {
|
|
||||||
preference.setSelectable(false);
|
|
||||||
dropDownPreference.setSummary(R.string.wifi_privacy_settings_ephemeral_summary);
|
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);
|
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();
|
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