Support Slice type in SliceData

Add a getter for Slice type for BasePreferenceController.
This facilitates the generation of all possible Slices for Settings
search and discovery for AGSA.

Bug: 62807132
Test: robotests
Change-Id: I2cba1fc72c95769ecc26c76d1f2faa49a285d077
This commit is contained in:
Matthew Fritze
2018-02-27 16:35:40 -08:00
parent 3fc11a6db4
commit 1e9d9c7054
11 changed files with 180 additions and 66 deletions

View File

@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when;
import com.android.settings.TestConfig;
import com.android.settings.slices.SliceData;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
@@ -126,4 +127,9 @@ public class BasePreferenceControllerTest {
assertThat(mPreferenceController.isSupported()).isTrue();
}
@Test
public void getSliceType_shouldReturnIntent() {
assertThat(mPreferenceController.getSliceType()).isEqualTo(SliceData.SliceType.INTENT);
}
}

View File

@@ -17,20 +17,16 @@ package com.android.settings.core;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.support.v14.preference.SwitchPreference;
import com.android.settings.TestConfig;
import com.android.settings.slices.SliceData;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
@@ -38,35 +34,34 @@ import org.robolectric.annotation.Config;
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class TogglePreferenceControllerTest {
@Mock
TogglePreferenceController mTogglePreferenceController;
FakeToggle mToggleController;
Context mContext;
SwitchPreference mPreference;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mPreference = new SwitchPreference(mContext);
mToggleController = new FakeToggle(mContext, "key");
}
@Test
public void testSetsPreferenceValue_setsChecked() {
when(mTogglePreferenceController.isChecked()).thenReturn(true);
mToggleController.setChecked(true);
mPreference.setChecked(false);
mTogglePreferenceController.updateState(mPreference);
mToggleController.updateState(mPreference);
assertThat(mPreference.isChecked()).isTrue();
}
@Test
public void testSetsPreferenceValue_setsNotChecked() {
when(mTogglePreferenceController.isChecked()).thenReturn(false);
mToggleController.setChecked(false);
mPreference.setChecked(true);
mTogglePreferenceController.updateState(mPreference);
mToggleController.updateState(mPreference);
assertThat(mPreference.isChecked()).isFalse();
}
@@ -74,18 +69,51 @@ public class TogglePreferenceControllerTest {
@Test
public void testUpdatesPreferenceOnChange_turnsOn() {
boolean newValue = true;
mToggleController.setChecked(!newValue);
mTogglePreferenceController.onPreferenceChange(mPreference, newValue);
mToggleController.onPreferenceChange(mPreference, newValue);
verify(mTogglePreferenceController).setChecked(newValue);
assertThat(mToggleController.isChecked()).isEqualTo(newValue);
}
@Test
public void testUpdatesPreferenceOnChange_turnsOff() {
boolean newValue = false;
mToggleController.setChecked(!newValue);
mTogglePreferenceController.onPreferenceChange(mPreference, newValue);
mToggleController.onPreferenceChange(mPreference, newValue);
verify(mTogglePreferenceController).setChecked(newValue);
assertThat(mToggleController.isChecked()).isEqualTo(newValue);
}
@Test
public void testSliceType_returnsSliceType() {
assertThat(mToggleController.getSliceType()).isEqualTo(
SliceData.SliceType.SWITCH);
}
private static class FakeToggle extends TogglePreferenceController {
private boolean checkedFlag;
public FakeToggle(Context context, String preferenceKey) {
super(context, preferenceKey);
}
@Override
public boolean isChecked() {
return checkedFlag;
}
@Override
public boolean setChecked(boolean isChecked) {
checkedFlag = isChecked;
return true;
}
@Override
public int getAvailabilityStatus() {
return AVAILABLE;
}
}
}

View File

@@ -30,4 +30,9 @@ public class FakePreferenceController extends BasePreferenceController {
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceType() {
return SliceData.SliceType.SLIDER;
}
}

View File

@@ -90,5 +90,6 @@ public class SliceDataConverterTest {
assertThat(fakeSlice.getUri()).isNull();
assertThat(fakeSlice.getFragmentClassName()).isEqualTo(fakeFragmentClassName);
assertThat(fakeSlice.getPreferenceController()).isEqualTo(fakeControllerName);
assertThat(fakeSlice.getSliceType()).isEqualTo(SliceData.SliceType.SLIDER);
}
}

View File

@@ -40,6 +40,7 @@ public class SliceDataTest {
private final int ICON = 1234; // I declare a thumb war
private final Uri URI = Uri.parse("content://com.android.settings.slices/test");
private final String PREF_CONTROLLER = "com.android.settings.slices.tester";
private final int SLICE_TYPE = SliceData.SliceType.SWITCH;
@Test
public void testBuilder_buildsMatchingObject() {
@@ -51,7 +52,8 @@ public class SliceDataTest {
.setIcon(ICON)
.setFragmentName(FRAGMENT_NAME)
.setUri(URI)
.setPreferenceControllerClassName(PREF_CONTROLLER);
.setPreferenceControllerClassName(PREF_CONTROLLER)
.setSliceType(SLICE_TYPE);
SliceData data = builder.build();
@@ -63,6 +65,7 @@ public class SliceDataTest {
assertThat(data.getFragmentClassName()).isEqualTo(FRAGMENT_NAME);
assertThat(data.getUri()).isEqualTo(URI);
assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
assertThat(data.getSliceType()).isEqualTo(SLICE_TYPE);
}
@Test(expected = IllegalStateException.class)