Use label instead of raw value for theme preference summary
Change-Id: I4dd1c156c8e68dd5567093c56d5e6846357fc2d6 Fix: 38470685 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -90,11 +90,20 @@ public class ThemePreferenceController extends PreferenceController implements
|
|||||||
pref.setEntries(labels);
|
pref.setEntries(labels);
|
||||||
pref.setEntryValues(pkgs);
|
pref.setEntryValues(pkgs);
|
||||||
String theme = getCurrentTheme();
|
String theme = getCurrentTheme();
|
||||||
if (TextUtils.isEmpty(theme)) {
|
CharSequence themeLabel = null;
|
||||||
theme = mContext.getString(R.string.default_theme);
|
|
||||||
pref.setSummary(theme);
|
for (int i = 0; i < pkgs.length; i++) {
|
||||||
|
if (TextUtils.equals(pkgs[i], theme)) {
|
||||||
|
themeLabel = labels[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
pref.setSummary(theme);
|
|
||||||
|
if (TextUtils.isEmpty(themeLabel)) {
|
||||||
|
themeLabel = mContext.getString(R.string.default_theme);
|
||||||
|
}
|
||||||
|
|
||||||
|
pref.setSummary(themeLabel);
|
||||||
pref.setValue(theme);
|
pref.setValue(theme);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +136,7 @@ public class ThemePreferenceController extends PreferenceController implements
|
|||||||
UserHandle.myUserId());
|
UserHandle.myUserId());
|
||||||
for (int i = 0, size = infos.size(); i < size; i++) {
|
for (int i = 0, size = infos.size(); i < size; i++) {
|
||||||
if (infos.get(i).isEnabled() &&
|
if (infos.get(i).isEnabled() &&
|
||||||
isChangeableOverlay(infos.get(i).packageName)) {
|
isChangeableOverlay(infos.get(i).packageName)) {
|
||||||
return infos.get(i).packageName;
|
return infos.get(i).packageName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -21,20 +21,25 @@ import android.content.pm.ApplicationInfo;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.support.v7.preference.ListPreference;
|
import android.support.v7.preference.ListPreference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsRobolectricTestRunner;
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.display.ThemePreferenceController.OverlayManager;
|
import com.android.settings.display.ThemePreferenceController.OverlayManager;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Answers;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.anyInt;
|
import static org.mockito.Matchers.anyInt;
|
||||||
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -45,33 +50,65 @@ import static org.mockito.Mockito.when;
|
|||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class ThemePreferenceControllerTest {
|
public class ThemePreferenceControllerTest {
|
||||||
|
|
||||||
@Mock
|
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||||
private ListPreference mPreference;
|
|
||||||
@Mock
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
@Mock
|
@Mock
|
||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
@Mock
|
@Mock
|
||||||
private ApplicationInfo mApplicationInfo;
|
private ApplicationInfo mApplicationInfo;
|
||||||
|
@Mock
|
||||||
|
private ListPreference mPreference;
|
||||||
|
|
||||||
private ThemePreferenceController mController;
|
private ThemePreferenceController mController;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws NameNotFoundException {
|
public void setUp() throws NameNotFoundException {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
FakeFeatureFactory.setupForTest(mContext);
|
||||||
when(mPackageManager.getApplicationInfo(any(), anyInt())).thenReturn(mApplicationInfo);
|
when(mPackageManager.getApplicationInfo(any(), anyInt())).thenReturn(mApplicationInfo);
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
|
when(mContext.getString(R.string.default_theme))
|
||||||
|
.thenReturn(RuntimeEnvironment.application.getString(R.string.default_theme));
|
||||||
|
|
||||||
mController = spy(new ThemePreferenceController(mContext, mock(OverlayManager.class)));
|
mController = spy(new ThemePreferenceController(mContext, mock(OverlayManager.class)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateState_themeSet_shouldSetPreferenceValue() {
|
public void updateState_themeSet_shouldSetPreferenceValue() throws NameNotFoundException {
|
||||||
final String[] themes = {"Theme1", "Theme2"};
|
final String pkg1 = "pkg1.theme1";
|
||||||
doReturn("Theme1").when(mController).getCurrentTheme();
|
final String pkg2 = "pkg2.theme2";
|
||||||
|
final String themeLabel1 = "Theme1";
|
||||||
|
final String themeLabel2 = "Theme2";
|
||||||
|
final String[] themes = {pkg1, pkg2};
|
||||||
|
doReturn("pkg1.theme1").when(mController).getCurrentTheme();
|
||||||
doReturn(themes).when(mController).getAvailableThemes();
|
doReturn(themes).when(mController).getAvailableThemes();
|
||||||
|
when(mPackageManager.getApplicationInfo(anyString(), anyInt()).loadLabel(mPackageManager))
|
||||||
|
.thenReturn(themeLabel1)
|
||||||
|
.thenReturn(themeLabel2);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
verify(mPreference).setValue("Theme1");
|
verify(mPreference).setSummary(themeLabel1);
|
||||||
|
verify(mPreference).setValue(pkg1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateState_themeNull_shouldSetDefaultSummary() throws NameNotFoundException {
|
||||||
|
final String pkg1 = "pkg1.theme1";
|
||||||
|
final String pkg2 = "pkg2.theme2";
|
||||||
|
final String themeLabel1 = "Theme1";
|
||||||
|
final String themeLabel2 = "Theme2";
|
||||||
|
final String[] themes = {pkg1, pkg2};
|
||||||
|
doReturn(null).when(mController).getCurrentTheme();
|
||||||
|
doReturn(themes).when(mController).getAvailableThemes();
|
||||||
|
when(mPackageManager.getApplicationInfo(anyString(), anyInt()).loadLabel(mPackageManager))
|
||||||
|
.thenReturn(themeLabel1)
|
||||||
|
.thenReturn(themeLabel2);
|
||||||
|
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
verify(mPreference)
|
||||||
|
.setSummary(RuntimeEnvironment.application.getString(R.string.default_theme));
|
||||||
|
verify(mPreference).setValue(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user