[Sound Settings] Act on managed user added/removed

Use the new callbacks for managed profile being added/removed to update
visibility of work sound settings

Test: make RunSettingsRoboTests
Bug: 31701003

Change-Id: I3167e52102bcf9f18a58e85dd9c3117691c6ad3f
This commit is contained in:
Andre Lago
2016-09-23 13:49:26 +01:00
committed by Robin Lee
parent 8116060570
commit e474bd5f0f
2 changed files with 137 additions and 50 deletions

View File

@@ -114,23 +114,58 @@ public class WorkSoundPreferenceControllerTest {
.thenReturn(UserHandle.myUserId());
when(mAudioHelper.isSingleVolume()).thenReturn(false);
when(mFragment.getPreferenceScreen()).thenReturn(mScreen);
when(mScreen.findPreference(KEY_WORK_CATEGORY))
.thenReturn(mock(PreferenceGroup.class));
when(mScreen.findPreference(KEY_WORK_USE_PERSONAL_SOUNDS))
.thenReturn(mock(TwoStatePreference.class));
when(mScreen.findPreference(KEY_WORK_PHONE_RINGTONE))
.thenReturn(mock(DefaultRingtonePreference.class));
when(mScreen.findPreference(KEY_WORK_NOTIFICATION_RINGTONE))
.thenReturn(mock(DefaultRingtonePreference.class));
when(mScreen.findPreference(KEY_WORK_ALARM_RINGTONE))
.thenReturn(mock(DefaultRingtonePreference.class));
when(mAudioHelper.createPackageContextAsUser(anyInt())).thenReturn(mContext);
mockWorkCategory();
mController.onResume();
verify(mFragment).addPreferencesFromResource(R.xml.sound_work_settings);
}
@Test
public void onManagedProfileAdded_shouldAddPreferenceCategory() {
// Given a device without any managed profiles:
when(mAudioHelper.isSingleVolume()).thenReturn(false);
when(mFragment.getPreferenceScreen()).thenReturn(mScreen);
when(mAudioHelper.createPackageContextAsUser(anyInt())).thenReturn(mContext);
when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
.thenReturn(UserHandle.USER_NULL);
mockWorkCategory();
// When the fragment first resumes, the category should not appear.
mController.onResume();
verify(mFragment, never()).addPreferencesFromResource(R.xml.sound_work_settings);
// However, when a managed profile is added after resuming, the category should appear.
when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
.thenReturn(UserHandle.myUserId());
mController.onManagedProfileAdded(UserHandle.myUserId());
verify(mFragment).addPreferencesFromResource(R.xml.sound_work_settings);
}
@Test
public void onManagedProfileRemoved_shouldRemovePreferenceCategory() {
// Given a device with a managed profile:
when(mAudioHelper.isSingleVolume()).thenReturn(false);
when(mFragment.getPreferenceScreen()).thenReturn(mScreen);
when(mAudioHelper.createPackageContextAsUser(anyInt())).thenReturn(mContext);
when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
.thenReturn(UserHandle.myUserId());
mockWorkCategory();
// Which is in resumed state:
mController.onResume();
// When a managed profile is removed, the category should be removed.
when(mAudioHelper.getManagedProfileId(any(UserManager.class)))
.thenReturn(UserHandle.USER_NULL);
mController.onManagedProfileRemoved(UserHandle.myUserId());
verify(mScreen).removePreference(mScreen.findPreference(KEY_WORK_CATEGORY));
}
@Test
public void onResume_notAvailable_shouldNotAddPreferenceCategory() {
when(mTelephonyManager.isVoiceCapable()).thenReturn(true);
@@ -154,4 +189,16 @@ public class WorkSoundPreferenceControllerTest {
verify(preference).setSummary(anyString());
}
private void mockWorkCategory() {
when(mScreen.findPreference(KEY_WORK_CATEGORY))
.thenReturn(mock(PreferenceGroup.class));
when(mScreen.findPreference(KEY_WORK_USE_PERSONAL_SOUNDS))
.thenReturn(mock(TwoStatePreference.class));
when(mScreen.findPreference(KEY_WORK_PHONE_RINGTONE))
.thenReturn(mock(DefaultRingtonePreference.class));
when(mScreen.findPreference(KEY_WORK_NOTIFICATION_RINGTONE))
.thenReturn(mock(DefaultRingtonePreference.class));
when(mScreen.findPreference(KEY_WORK_ALARM_RINGTONE))
.thenReturn(mock(DefaultRingtonePreference.class));
}
}