diff --git a/src/com/android/settings/display/WallpaperPreferenceController.java b/src/com/android/settings/display/WallpaperPreferenceController.java index b134ee49f9d..72054e9541c 100644 --- a/src/com/android/settings/display/WallpaperPreferenceController.java +++ b/src/com/android/settings/display/WallpaperPreferenceController.java @@ -62,8 +62,11 @@ public class WallpaperPreferenceController extends BasePreferenceController { } public ComponentName getComponentName() { - return new ComponentName(mWallpaperPackage, - areStylesAvailable() ? mStylesAndWallpaperClass : mWallpaperClass); + return new ComponentName(mWallpaperPackage, getComponentClassString()); + } + + public String getComponentClassString() { + return areStylesAvailable() ? mStylesAndWallpaperClass : mWallpaperClass; } public String getKeywords() { @@ -76,11 +79,12 @@ public class WallpaperPreferenceController extends BasePreferenceController { @Override public int getAvailabilityStatus() { - if (TextUtils.isEmpty(mWallpaperPackage) || TextUtils.isEmpty(mWallpaperClass)) { + if ((TextUtils.isEmpty(mWallpaperClass) && TextUtils.isEmpty(mStylesAndWallpaperClass)) + || TextUtils.isEmpty(mWallpaperPackage)) { Log.e(TAG, "No Wallpaper picker specified!"); return UNSUPPORTED_ON_DEVICE; } - return canResolveWallpaperComponent(mWallpaperClass) + return canResolveWallpaperComponent(getComponentClassString()) ? AVAILABLE_UNSEARCHABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java index d6ad52d21a7..a8893eab731 100644 --- a/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java @@ -73,21 +73,62 @@ public class WallpaperPreferenceControllerTest { } @Test - public void isAvailable_wallpaperPickerEnabled_shouldReturnTrue() { + public void isAvailable_wallpaperPickerEnabledAndStylePickerEnabled_returnsTrue() { mShadowPackageManager.setResolveInfosForIntent( mWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class))); + mShadowPackageManager.setResolveInfosForIntent( + mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class))); assertThat(mController.isAvailable()).isTrue(); } @Test - public void isAvailable_wallpaperPickerDisabled_shouldReturnFalse() { + public void isAvailable_wallpaperPickerEnabledAndStylePickerDisabled_returnsTrue() { + mShadowPackageManager.setResolveInfosForIntent( + mWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class))); + mShadowPackageManager.setResolveInfosForIntent( + mStylesAndWallpaperIntent, Lists.newArrayList()); + + assertThat(mController.isAvailable()).isTrue(); + } + + @Test + public void isAvailable_wallpaperPickerDisabledAndStylePickerEnabled_returnsTrue() { mShadowPackageManager.setResolveInfosForIntent( mWallpaperIntent, Lists.newArrayList()); + mShadowPackageManager.setResolveInfosForIntent( + mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class))); + + assertThat(mController.isAvailable()).isTrue(); + } + + @Test + public void isAvailable_wallpaperPickerDisabledAndStylePickerDisabled_returnsFalse() { + mShadowPackageManager.setResolveInfosForIntent( + mWallpaperIntent, Lists.newArrayList()); + mShadowPackageManager.setResolveInfosForIntent( + mStylesAndWallpaperIntent, Lists.newArrayList()); assertThat(mController.isAvailable()).isFalse(); } + @Test + public void getComponentClassString_stylesAvailable_returnsStylePickerClassString() { + mShadowPackageManager.setResolveInfosForIntent( + mStylesAndWallpaperIntent, + Lists.newArrayList(mock(ResolveInfo.class))); + assertThat(mController.getComponentClassString()) + .isEqualTo(mContext.getString(R.string.config_styles_and_wallpaper_picker_class)); + } + + @Test + public void getComponentClassString_stylesUnavailable_returnsWallpaperPickerClassString() { + mShadowPackageManager.setResolveInfosForIntent( + mStylesAndWallpaperIntent, Lists.newArrayList()); + assertThat(mController.getComponentClassString()) + .isEqualTo(mContext.getString(R.string.config_wallpaper_picker_class)); + } + @Test public void areStylesAvailable_noComponentSpecified() { SettingsShadowResources.overrideResource(