Refactor nfc preference controller
- Remove BaseNfcPreferenceController. - NfcPreferenceController inherit from TogglePreferenceController. - AndroidBeamPreferenceController inherit from BasePreferenceController. - Override getIntentFilter in NfcPreferenceController to listen changes. - Add an API (hasAsyncUpdate) into BasePreferenceController to distinguish the setting which is updated asynchronously. Change-Id: I7c9c48ea7f1ad01a02524beabf9d30baa3db891f Fixes: 67997761 Fixes: 74887543 Test: RunSettingsRoboTests
This commit is contained in:
@@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@@ -125,6 +126,60 @@ public class SliceBroadcastReceiverTest {
|
||||
assertThat(valuePair.second).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toggleUpdate_synchronously_notifyChange_should_be_called() {
|
||||
// Monitor the ContentResolver
|
||||
final ContentResolver resolver = spy(mContext.getContentResolver());
|
||||
doReturn(resolver).when(mContext).getContentResolver();
|
||||
|
||||
final String key = "key";
|
||||
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||
insertSpecialCase(key);
|
||||
|
||||
FakeToggleController fakeToggleController = new FakeToggleController(mContext, key);
|
||||
fakeToggleController.setChecked(true);
|
||||
// Set the toggle setting update synchronously.
|
||||
fakeToggleController.setAsyncUpdate(false);
|
||||
Intent intent = new Intent(SettingsSliceProvider.ACTION_TOGGLE_CHANGED);
|
||||
intent.putExtra(SettingsSliceProvider.EXTRA_SLICE_KEY, key);
|
||||
|
||||
assertThat(fakeToggleController.isChecked()).isTrue();
|
||||
|
||||
// Toggle setting
|
||||
mReceiver.onReceive(mContext, intent);
|
||||
|
||||
assertThat(fakeToggleController.isChecked()).isFalse();
|
||||
|
||||
final Uri expectedUri = SliceBuilderUtils.getUri(
|
||||
SettingsSlicesContract.PATH_SETTING_ACTION + "/" + key, false);
|
||||
verify(resolver).notifyChange(eq(expectedUri), eq(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toggleUpdate_asynchronously_notifyChange_should_not_be_called() {
|
||||
// Monitor the ContentResolver
|
||||
final ContentResolver resolver = spy(mContext.getContentResolver());
|
||||
doReturn(resolver).when(mContext).getContentResolver();
|
||||
|
||||
final String key = "key";
|
||||
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||
insertSpecialCase(key);
|
||||
|
||||
FakeToggleController fakeToggleController = new FakeToggleController(mContext, key);
|
||||
fakeToggleController.setChecked(true);
|
||||
// Set the toggle setting update asynchronously.
|
||||
fakeToggleController.setAsyncUpdate(true);
|
||||
Intent intent = new Intent(SettingsSliceProvider.ACTION_TOGGLE_CHANGED);
|
||||
intent.putExtra(SettingsSliceProvider.EXTRA_SLICE_KEY, key);
|
||||
|
||||
assertThat(fakeToggleController.isChecked()).isTrue();
|
||||
|
||||
// Toggle setting
|
||||
mReceiver.onReceive(mContext, intent);
|
||||
|
||||
verify(resolver, never()).notifyChange(null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onReceive_sliderChanged() {
|
||||
final String key = "key";
|
||||
|
Reference in New Issue
Block a user