Loading src/com/android/settings/display/ThemePreferenceController.java +14 −5 Original line number Diff line number Diff line Loading @@ -90,11 +90,20 @@ public class ThemePreferenceController extends PreferenceController implements pref.setEntries(labels); pref.setEntryValues(pkgs); String theme = getCurrentTheme(); if (TextUtils.isEmpty(theme)) { theme = mContext.getString(R.string.default_theme); pref.setSummary(theme); CharSequence themeLabel = null; 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); } Loading tests/robotests/src/com/android/settings/display/ThemePreferenceControllerTest.java +44 −7 Original line number Diff line number Diff line Loading @@ -21,20 +21,25 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.support.v7.preference.ListPreference; import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.display.ThemePreferenceController.OverlayManager; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; Loading @@ -45,33 +50,65 @@ import static org.mockito.Mockito.when; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class ThemePreferenceControllerTest { @Mock private ListPreference mPreference; @Mock @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @Mock private PackageManager mPackageManager; @Mock private ApplicationInfo mApplicationInfo; @Mock private ListPreference mPreference; private ThemePreferenceController mController; @Before public void setUp() throws NameNotFoundException { MockitoAnnotations.initMocks(this); FakeFeatureFactory.setupForTest(mContext); when(mPackageManager.getApplicationInfo(any(), anyInt())).thenReturn(mApplicationInfo); 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))); } @Test public void updateState_themeSet_shouldSetPreferenceValue() { final String[] themes = {"Theme1", "Theme2"}; doReturn("Theme1").when(mController).getCurrentTheme(); public void updateState_themeSet_shouldSetPreferenceValue() 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("pkg1.theme1").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(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).setValue("Theme1"); verify(mPreference) .setSummary(RuntimeEnvironment.application.getString(R.string.default_theme)); verify(mPreference).setValue(null); } } Loading
src/com/android/settings/display/ThemePreferenceController.java +14 −5 Original line number Diff line number Diff line Loading @@ -90,11 +90,20 @@ public class ThemePreferenceController extends PreferenceController implements pref.setEntries(labels); pref.setEntryValues(pkgs); String theme = getCurrentTheme(); if (TextUtils.isEmpty(theme)) { theme = mContext.getString(R.string.default_theme); pref.setSummary(theme); CharSequence themeLabel = null; 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); } Loading
tests/robotests/src/com/android/settings/display/ThemePreferenceControllerTest.java +44 −7 Original line number Diff line number Diff line Loading @@ -21,20 +21,25 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.support.v7.preference.ListPreference; import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.display.ThemePreferenceController.OverlayManager; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; Loading @@ -45,33 +50,65 @@ import static org.mockito.Mockito.when; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class ThemePreferenceControllerTest { @Mock private ListPreference mPreference; @Mock @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @Mock private PackageManager mPackageManager; @Mock private ApplicationInfo mApplicationInfo; @Mock private ListPreference mPreference; private ThemePreferenceController mController; @Before public void setUp() throws NameNotFoundException { MockitoAnnotations.initMocks(this); FakeFeatureFactory.setupForTest(mContext); when(mPackageManager.getApplicationInfo(any(), anyInt())).thenReturn(mApplicationInfo); 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))); } @Test public void updateState_themeSet_shouldSetPreferenceValue() { final String[] themes = {"Theme1", "Theme2"}; doReturn("Theme1").when(mController).getCurrentTheme(); public void updateState_themeSet_shouldSetPreferenceValue() 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("pkg1.theme1").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(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).setValue("Theme1"); verify(mPreference) .setSummary(RuntimeEnvironment.application.getString(R.string.default_theme)); verify(mPreference).setValue(null); } }